基本介绍
- 栈帧就是利用ESP寄存器访问栈内局部变量、参数、函数返回地址等的手段。
- IA-32寄存器中,ESP寄存器为栈顶指针,EBP寄存器为栈帧指针。
- 程序运行时,ESP寄存器由于要访问局部变量、参数等随时会发生变化,若以其为基准编写程序十分困难,并且也很难使CPU引用到准确的地址,所以调用函数时,先把ESP的值保存在EBP中,这样以EBP的值为基准可以安全访问。
PUSH EBP ;将EBP的值保存在栈中
MOV EBP,ESP ;保存当前ESP到EBP
.......... ;函数体,EBP的值始终不变
MOV ESP,EBP ;将函数起始地址返回到ESP
POP EBP ;从栈中弹出EBP
RETN ;函数终止