码迷,mamicode.com
首页 > 其他好文 > 详细

汇编中Enter与Leave指令

时间:2014-08-23 22:56:41      阅读:333      评论:0      收藏:0      [点我收藏+]

标签:style   os   使用   ar   art   div   size   sp   on   

Enter的作用相当==push ebp和mov ebp,esp

这后面两句大家很熟悉吧?函数开始一般都是这两句

Leave的作用相当==mov esp,ebp和pop ebp

而这后面这两句也很常见,函数调用完后一般的用到

以上的Enter和leave的作用分别函数开始和结束

Win32汇编中局部变量的使用方法可以解释一个很有趣的现象:在DOS汇编的时候,如果在子程序中的push指令和pop指令不配对,那么返回的时候ret指令从堆栈里得到的肯定是错误的返回地址,程序也就死掉了。但在Win32汇编中,push指令和pop指令不配对可能在逻辑上产生错误,却不会影响子程序正常返回,原因就是在返回的时候esp不是靠相同数量的push和pop指令来保持一致的,而是靠leave指令从保存在ebp中的原始值中取回来的,也就是说,即使把esp改得一塌糊涂也不会影响到子程序的返回,当然,“窍门”就在ebp,把ebp改掉,程序就玩完了

汇编中Enter与Leave指令

标签:style   os   使用   ar   art   div   size   sp   on   

原文地址:http://www.cnblogs.com/milantgh/p/3931871.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!