根據這篇文章:linkC到大會轉換數據類型尺寸
在該C簡單的程序:
void function(int a, int b, int c) {
char x[10];
}
void main() {
function(1, 2, 3);
}
我使用該命令獲取組件文件:
gcc -m32 -S -o example1.s example1.c
,這是功能(功能)的結果:
function:
.LFB0:
.cfi_startproc
pushl %ebp
.cfi_def_cfa_offset 8
.cfi_offset 5, -8
movl %esp, %ebp
.cfi_def_cfa_register 5
subl $16, %esp
nop
leave
.cfi_restore 5
.cfi_def_cfa 4, 4
ret
.cfi_endproc
我的問題是,爲什麼這一行變成了:
subl $16, %esp
在那裏我希望它是:
subl $10, %esp
我使用卡里的linux 64
VENDOR_ID:GenuineIntel
型號名稱:Intel(R)Core(TM)i3 CPU M 350 @ 2.27GHz
架構:x86_64的
CPU運算模式(一個或多個):32位,64位
字節順序:小端
這可能是優化了 – VermillionAzure