x86汇编指令集为什么设计一个ret命令,为什么不用pop eip代替?
x86汇编指令集为什么设计一个ret
命令,为什么不用pop eip
代替?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
x86汇编指令集为什么设计一个ret
命令,为什么不用pop eip
代替?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
ret
含有平栈的操作。pop eip
只是恢复了调用时的下一条指令的地址。没处理 栈指针。文字格式太难编辑了,还是贴图吧~
其实是语义含义的问题:ret表示返回进入函数之前的指令,那么这个语义屏蔽了硬件实现的细节。尽管硬件在实现上是
pop %eip
,但是并没有规定eip一定使用栈在保存。当然,完整的返回函数还包含leave指令:
这两条指令相当于
http://newsmth.net/nForum/#!article/CSArch/48232