我看过的汇编代码的一些转储和有这部分(发现here和here)的主要功能:为什么这个函数序言使用几条指令来计算esp的减少?
<main+0>: push %ebp
<main+1>: mov %esp, %ebp
<main+3>: sub $0x8, %esp
<main+6>: and $0xfffffff0, %esp
<main+9>: mov $0x0, %eax
<main+14>: add $0xf, %eax
<main+17>: add $0xf, %eax
<main+20>: shr $0x4, %eax
<main+23>: shl $0x4, %eax
<main+26>: sub %eax, %esp
你能解释我什么(主+ 9)(主+ 26 ) 是用来? 为什么这样做'低效'?
是由gcc在2004年生成的代码?快乐的日子过去了!即使是最笨重的优化器也应该能够编写更好的main + 9到main + 26的代码。 – ShinTakezou
生成此程序集的输入(C代码?)是什么?什么是编译器版本和标志? –
[gcc在windows上产生垃圾的可能重复? windows vs linux](http://stackoverflow.com/questions/19552816/gcc-on-windows-generating-garbage-windows-vs-linux)同样的序幕。他们说这只发生在Windows和GCC 3.X上,在那里和'alloca'生成。 –