gcc生成的汇编注释中的batmp和%fsp是什么?

时间:2014-02-21 06:38:27

标签: gcc assembly

我在Core i7 930上有一些由gcc和选项-march=native -mtune=native -mfpmath=sse -O3 -ffast-math -masm=intel -S -fverbose-asm生成的代码。以下是代码的摘录:

mov esi, DWORD PTR [ebp-52] # batmp.271, %sfp
mov eax, DWORD PTR [ebp-28] #, %sfp
add esi, edi    # batmp.271,
add eax, edi    #,
mov ecx, DWORD PTR [ebp-108]    #, %sfp
...
cmp DWORD PTR [ebp-100], eax    # %sfp, D.48541

此处batmp.XXX%sfpD.XXXXX是什么?这些名称如何取消缩写以及这些术语的含义是什么?

1 个答案:

答案 0 :(得分:0)

更容易判断您是否提供了C源以供参考。 显然batmp是用于数组访问的“基本地址临时”。 %sfp用作溢出到堆栈的寄存器的基址。不幸的是,根据我的测试,编译器并没有告诉我们它溢出了什么,即使它是一个命名的局部变量。 D.x只是一个通用符号,意思是“声明与uid x ”。如果它没有名称,那么它可能是编译器生成的辅助变量。