为什么这个函数在调用之前分配了比它需要的更多的堆栈空间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);
}
为什么在缓冲区和获取的参数之间有额外的三个单词的空间?