を呼び出す前に、この関数が必要以上のスタック領域を割り当てるのはなぜgets()
ですか?
echo:
pushl %ebp
movl %esp, %ebp
pushl %ebx
leal -8(%ebp), %ebx
subl $20, %esp <-- Why so much space?
movl %ebx, (%esp)
call gets
...
対応する C コード:
void echo()
{
char buf[4];
gets(buf);
puts(buf);
}
バッファと get の引数の間に 3 語の余分なスペースがあるのはなぜですか?