我需要在 g++ 内联程序集中使用模板类成员的地址(作为编译时常量值)。可以表达这个吗?(我认为我需要 的损坏名称T<U>::x
)。
template < typename U >
struct T {
static int x;
};
template < typename U >
void f () {
asm ("somecommand T<U>::x");
}
我需要在 g++ 内联程序集中使用模板类成员的地址(作为编译时常量值)。可以表达这个吗?(我认为我需要 的损坏名称T<U>::x
)。
template < typename U >
struct T {
static int x;
};
template < typename U >
void f () {
asm ("somecommand T<U>::x");
}
假设您使用的是 linux,则可以使用 nm。
nm --demangle foo.o 为您的符号提供经过修饰的名称 nm --no-demangle foo.o 为您提供符号的修饰名称。
然后,您可以比较这 2 个文件的输出,以将损坏的名称与损坏的名称相匹配。
我会用来objdump
从引用它的对象中提取损坏的名称(您可以使用c++filt
另一个方向,但我知道没有独立程序给出损坏的名称;您可以使用规范http://www.codesourcery. com/public/cxx-abi/abi.html并创建一个 mangler 或手动进行 mangling,但这可能是矫枉过正)。