Я не совсем понимаю строку с комментарием в ней ниже. Я прочитал несколько сообщений в SO и в руководстве gcc
и узнал, что он предназначен для выравнивания адресов стека, но не понимает, как он это делает. Код показан ниже:
(gdb) disas main
Dump of assembler code for function main:
0x08048414 <+0>: push ebp
0x08048415 <+1>: mov ebp,esp
0x08048417 <+3>: and esp,0xfffffff0 ; why??
0x0804841a <+6>: sub esp,0x10
0x0804841d <+9>: mov DWORD PTR [esp],0x8048510
0x08048424 <+16>: call 0x8048320 <[email protected]>
0x08048429 <+21>: mov DWORD PTR [esp],0x8048520
0x08048430 <+28>: call 0x8048330 <[email protected]>
0x08048435 <+33>: leave
0x08048436 <+34>: ret
End of assembler dump.
Код был сгенерирован с использованием gcc
(версия 4.6.3) в linux. Спасибо.