标签:bsp pop 分享 add 修改 ret 地址 nbsp 堆栈
call之前会将实参压入堆栈,
call的时候会将当前IP,也就是返回地址压入堆栈,然后跳转
跳转到子程序后会,
先把ebp压栈,
然后mov ebp, esp
这样就可以通过ebp来取局部变量
执行完后会有一条leave指令,其实就是
mov esp, ebp
pop ebp
leave执行完后,就ret
ret指令是用栈中的数据,修改IP的内容,从而实现跳转.
C类型呢是在call语句后面加一条 add esp, 00000008
而另外两种则是在子程序中利用 ret 0008, 来弹出堆栈里面的实参.
标签:bsp pop 分享 add 修改 ret 地址 nbsp 堆栈
原文地址:http://www.cnblogs.com/bxdm/p/6725873.html