函数堆栈

来源:互联网 发布:ubuntu tcpdump 编辑:程序博客网 时间:2024/05/21 11:11

EBP:栈底指针寄存器
ESP:栈顶指针寄存器

EBP大,ESP小,压栈时ESP变小,EBP不变。

对于_cdecl,调用一个函数的时候,先从右向左压栈,在把call指令的下一个指令的地址压栈,进入被调用函数,被调用函数结束时,依次出栈。返回到函数调用前的指令继续执行。

开始调用,先将ebp1压栈,然后将现在的栈顶esp1作为函数调用时的栈底
00413700 push ebp
00413701 mov ebp,esp

结束调用
00413728 mov esp,ebp
还原栈顶指针
0041372A pop ebp
还原栈底指针
0041372B ret
返回到函数调用前的指令继续执行。

0 0
原创粉丝点击