Push, Pop, call, leave 和 Ret 指令图解
来源:互联网 发布:怎么修改淘宝店铺头像 编辑:程序博客网 时间:2024/06/08 03:05
转自:http://blog.csdn.net/striver1205/article/details/25695437
指令图解:最近在研究如何在程序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
0 0
- Push, Pop, call, leave 和 Ret 指令图解
- Push, Pop, call, leave 和 Ret 指令图解
- 汇编指令push,mov,call,pop,leave,ret建立与释放栈的过程
- CALL和RET指令
- call和ret指令
- call 和 ret 指令
- CALL和RET指令
- call指令和ret指令
- AT&T汇编指令enter、leave、call、ret
- AT&T汇编enter、leave、call、ret指令
- 汇编语言--call和ret指令
- call和ret指令用法
- 汇编--9 call指令和ret指令
- call指令和ret指令(1001)
- call和ret指令(8086)
- 汇编学习笔记--CALL和RET指令
- 8086汇编之 CALL 和 RET指令
- 第10章 CALL和RET 指令
- 170430 汇编-端口的原理
- 安装wampserver遇到问题的解决方案
- 浅析爬虫nutch2.0(二)
- Adroid自定义柱形图,条形图和饼状图
- struts2 <result type="redirect">/user_success.jsp?$t={type}</result> 报错
- Push, Pop, call, leave 和 Ret 指令图解
- Java 8 语言能力-1
- 高次方取模(template)
- 写个vue-loading-template组件
- javaScript语言----对象2
- 数据结构与算法(15)——队列习题二
- GPRS模块的使用与相应SOCKET服务器的搭建
- 2017年4月份工作总结:要在贫瘠的土壤里,种出一朵花来
- 聊一聊过滤器