1.下面一段代码:
#include<stdio.h>
int add(int a,int b)
{
int c=a+b;
return c;
}
void main()
{
int x=10;//x编译之后,就看不到了。它的访问都是通过ebp来实现的。编译之后就不存在x、y的操作,只有对地址、指针、寄存器的操作。
int y=20;
int z=add(x,y);
printf("%d\n",z);
}
2.数据区(全局变量区)。
3.对于一个栈帧,寄存器ebp指向栈帧的底部,esp指向栈帧的上部。栈帧的底部是高地址,上部是低地址。
4.mov dword ptr[ebp-4] 0ah
dword:以四字节形式。
prt:表示指针。
[ebp-4]:方括号为地址所指之物。
mov ebp,0012ff7ch //直接寻址,直接访问
mov [ebp],0ah //间接寻址,间接访问。