概述
指令图解:最近在研究如何在程序crash定位出错函数,补充的计算机系统基础知识。此篇主要是介绍IA32中重要的几个汇编指令(以AT&T为例),详情请参考《深入计算机系统2》第三章第三节。
PUSH 和 POP
指令的汇编格式:PUSH SRC ;POP DST
指令的基本功能:PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。
PUSH 等价于:
subl $4, %esp
movl %ebp (%esp)
POP 等价于:
movl (%esp), %ead
addl $4, %esp
CALL,RET和LEAVE
CALL指令的步骤:首先是将返回地址(也就是call指令要执行时EIP的值)压入栈顶,然后是将程序跳转到当前调用的方法的起始地址。执行push和jump指令。
RET指令则是将栈顶的返回地址弹出到EIP,然后按照EIP此时指示的指令地址继续执行程序。
LEAVE指令是将栈指针指向帧指针,然后POP备份的原帧指针到%EBP。
Leave等价于:
movl %ebp %esp
popl %ebp
最后
以上就是鲜艳冰棍为你收集整理的Push, Pop, call, leave 和 Ret 指令图解的全部内容,希望文章能够帮你解决Push, Pop, call, leave 和 Ret 指令图解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复