逆アセンブルで遊んでみる(5)自動変数の領域を16バイトを超えて確保
「自動変数の領域を16バイトを超えて確保」です。
void func(void) { int i = 0x7F; int j = 0x8F; int k = 0x9F; int l = 0xAF; int m = 0xBF; }
0: 55 push %ebp 1: 89 e5 mov %esp,%ebp 3: 83 ec 20 sub $0x20,%esp 6: c7 45 ec 7f 00 00 00 movl $0x7f,-0x14(%ebp) d: c7 45 f0 8f 00 00 00 movl $0x8f,-0x10(%ebp) 14: c7 45 f4 9f 00 00 00 movl $0x9f,-0xc(%ebp) 1b: c7 45 f8 af 00 00 00 movl $0xaf,-0x8(%ebp) 22: c7 45 fc bf 00 00 00 movl $0xbf,-0x4(%ebp) 29: c9 leave 2a: c3 ret
前回、自動変数はint型の1変数だけで、スタックポインタは16byte分伸張していましたが、今回はint型5変数=20byte分の領域が必要なので、32byte分スタックを伸張しています。やはり、16byte単位で伸張するんでしょうか。