我试图理解以下函数的反汇编代码。
void func(char *string) {
printf("the string is %s\n",string);
}
反汇编代码如下。
1) 0x080483e4 <+0>: push %ebp
2) 0x080483e5 <+1>: mov %esp,%ebp
3) 0x080483e7 <+3>: sub $0x18,%esp
4) 0x080483ea <+6>: mov $0x80484f0,%eax
5) 0x080483ef <+11>: mov 0x8(%ebp),%edx
6) 0x080483f2 <+14>: mov %edx,0x4(%esp)
7) 0x080483f6 <+18>: mov %eax,(%esp)
8) 0x080483f9 <+21>: call 0x8048300 <printf@plt>
谁能告诉我第 4-7 行是什么意思(不是字面解释)。另外为什么在第 3 行的堆栈上分配了 24 个字节?