Почему эта функция выделяет больше стекового пространства, чем нужно, перед вызовом 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 есть дополнительный лишний пробел из трех слов?