我正在尝试学习一些汇编代码,所以我在一些教程中阅读了汇编代码
int proc(void)
{
int x,y;
scanf("%x %x", &y, &x);
return x-y;
}
是
1 proc:
2 pushl %ebp
3 movl %esp, %ebp
4 subl $40, %esp
5 leal -4(%ebp), %eax
6 movl %eax, 8(%esp)
7 leal -8(%ebp), %eax
8 movl %eax, 4(%esp)
9 movl $.LC0, (%esp)
10 call scanf
Diagram stack frame at this point
11 movl -4(%ebp), %eax
12 subl -8(%ebp), %eax
13 leave
14 ret
如果我很好理解的话,第 5 到第 8 行的指令存储了一些地址,这些地址将用于存储scanf
' 输入的值。那么是否可以说scanf
系统地使用地址%esp
加上一定数量的字节(取决于sizeof
输入)来获取将存储数据的地址?