【汇编】jmp、call、ret、retf比较
来源:互联网 发布:手机淘宝怎么退款退货 编辑:程序博客网 时间:2024/05/19 21:04
转载自:http://chuanwang66.iteye.com/blog/1075859
JMP、CALL和RET指令的近转移形式只是在当前代码段中执行程序控制转移,因此不会执行特权级检查。JMP、CALL或RET指令的远转移形式会把控制转移到另外一个代码段中,因此处理器一定会执行特权级检查。
1、jmp指令紧紧进行执行流程的跳转,不会保存返回地址
2、call指令在进行流程跳转前会保存返回地址,以便在跳转目标代码中可以使用ret指令返回到call指令的下一条指令处继续执行。执行段内跳转时,只保存EIP;如果是段间跳转,还保存CS。
3、ret和retf:这两个指令的功能都是调用返回。
(1)ret在返回时只从堆栈中取得EIP;retf中的字母f表示far,即段间转移返回,要从堆栈中取出EIP和CS。
(2)两个指令都可以带参数,表示发生过程调用时参数的个数,返回时要从堆栈中退出相应个数的参数。
(3)恢复CS时,如果发现将发生特权级变化(当前CS的低2位不等于从堆栈中取得的新的CS值的低2位。由跳转的相关理论可知,只有跳转到非一致代码段时才会发生特权级变化,那么,也只有从非一致代码段返回时才会发生特权级变化的返回),则还要从调用者堆栈中取得ESP和SS恢复到相应寄存器中,也即恢复调用者堆栈。
补充:
iretf:iref 弹出 3个参数,一个给 ip,一个 给 cs ,一个 个 flag标志位
- 【汇编】jmp、call、ret、retf比较
- jmp、call、ret、retf解析
- 跳转指令 jmp、call、ret、retf
- 汇编语言 JMP CALL RET RETF的使用与区别
- 汇编指令jmp call ret 变形
- call、ret、retf 指令详解
- 汇编,ret retf iret指令
- 汇编call ret
- 汇编---call & ret
- ret和retf指令
- ret and retf
- ret/retf/iret
- jmp,call,ret,特权级转移,进程调度
- 一步步学汇编(九)call & ret
- 汇编学习笔记--CALL和RET指令
- 8086汇编之 CALL 和 RET指令
- 汇编--9 call指令和ret指令
- 汇编第十节-CALL和RET指令
- 如何在一台pc上做nginx负载均衡(轮询)实验
- linux--LED设备驱动1
- 一段下载的代码
- Hibernate+中遇到的一些错误
- CentOS自动登录X11桌面 和 修改CentOS 默认启动
- 【汇编】jmp、call、ret、retf比较
- 虚基类 虚函数 纯虚函数讲解
- 有符号数和无符号数间的比较
- 列出内存使用情况
- 创业团队 留人 用人 斩人
- 友元函数和友元类
- 男人穿衣不可不知的20条规律
- Ibatis(myBatis)日志配置
- 数据库的范式概念