我试图理解以下函数的反汇编代码.
void func(char *string) {
printf("the string is %s\n",string);
}
Run Code Online (Sandbox Code Playgroud)
下面给出了反汇编代码.
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>
Run Code Online (Sandbox Code Playgroud)
谁能告诉我4-7行是什么意思(不是文字解释).为什么在第3行的堆栈上分配24个字节?