我在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
,%sfp
和D.XXXXX
是什么?这些名称如何取消缩写以及这些术语的含义是什么?
答案 0 :(得分:0)
更容易判断您是否提供了C源以供参考。
显然batmp
是用于数组访问的“基本地址临时”。 %sfp
用作溢出到堆栈的寄存器的基址。不幸的是,根据我的测试,编译器并没有告诉我们它溢出了什么,即使它是一个命名的局部变量。 D.x
只是一个通用符号,意思是“声明与uid x ”。如果它没有名称,那么它可能是编译器生成的辅助变量。