两个版本的简单 C 代码:
int main(){
int array[4];
int i=0;
array[4]=0;
}
和
int main(){
int i=0;
int array[4];
array[4]=0;
}
我像这样用 g++ 编译:g++ -xc -S -masm=intel -fverbose-asm -l -c test.c
在两个版本中,我得到了相同的汇编代码:
_main:
LFB0:
.cfi_startproc
push ebp #
.cfi_def_cfa_offset 8
.cfi_offset 5, -8
mov ebp, esp #,
.cfi_def_cfa_register 5
and esp, -16 #,
sub esp, 32 #,
call ___main #
mov DWORD PTR [esp+28], 0 # i,
mov DWORD PTR [esp+28], 0 # array,
leave
.cfi_restore 5
.cfi_def_cfa 4, 4
ret
.cfi_endproc
LFE0:
有人可以解释为什么吗?我的意思是 i 和 array 的顺序不应该不同吗?非常感谢您的帮助。