gcc生成的程序集注释中的batmp和%fsp是什么?
我有一些由gcc生成的代码,在Core i7 930上有选项gcc生成的程序集注释中的batmp和%fsp是什么?,gcc,assembly,Gcc,Assembly,我有一些由gcc生成的代码,在Core i7 930上有选项-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 #, m
-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
?这些名称是如何定义的?这些术语是什么意思?如果您提供了C源代码以供参考,则更容易判断。
显然,batmp
是用于数组访问的“临时基址”<代码>%sfp用作溢出到堆栈的寄存器的基址。不幸的是,根据我的测试,编译器没有告诉我们它溢出了什么,即使它是一个命名的局部变量D.x
只是一种通用的表示法,意思是“使用uid x进行声明”。如果它没有名称,那么它可能是编译器生成的辅助变量