我正在尝试标记我的ASM(由编译器生成)以在我的分析相应的.s文件之间进行推迟分析。以下MACRO与GCC一起使用
#define ASM_LABEL(label) asm ("#" label "\n\t")
尽管如此,CLANG标签已被删除。
void kernel(double const * x, double * y){
ASM_LABEL (START)
y[0]+=x[1]+x[3]/x[4];
y[1] = std::exp(x[0]);
ASM_LABEL (STOP)
}
生成的ASM(clang -O3 -S)给出:
movq %rdi, -8(%rbp)
movq %rsi, -16(%rbp)
## InlineAsm Start
## InlineAsm End <---- no START mark
movq -8(%rbp), %rsi
movsd 8(%rsi), %xmm0
movq -8(%rbp), %rsi
..............
标签已被删除。你有什么建议吗?是否存在通用提示?
谢谢
答案 0 :(得分:1)
clang将使用其集成的llvm汇编程序,但可以使用命令行选项int main( int argc, char * argv[] )
{
check(argc,argv);
lista *head=stworz_liste(argv[5]);
printf("\n%s",head->line);
free (head);
return 0;
}
禁用它。
将此项与-fno-integrated-as
一起指定应保留内联asm的注释。在代码示例上运行-S
clang -S -O3 -fno-integrated-as
给出程序集(省略指令和标签):
#include <cmath>
#define ASM_LABEL(label) asm ("#" label "\n\t" ::: "memory");
void kernel(double const * x, double * y){
ASM_LABEL("START")
y[0]+=x[1]+x[3]/x[4];
y[1] = std::exp(x[0]);
ASM_LABEL("STOP")
}