iret指令详解

汇编语言——第13章 int指令 阅读详情

在“实地址模式”中,IRET 指令执行到中断程序或过程的远返回。在执行此操作的过程中,处理器从堆栈将返回指令指针、返回代码段选择器以及 EFLAGS 映像分别弹入 EIP、CS 以及 EFLAGS 寄存器,然后恢复执行中断的程序或过程。

在“保护模式”中,IRET 指令的操作取决于以下因素:EFLAGS 寄存器中 NT(嵌套任务)与 VM 标志的设置,以及当前堆栈中存储的 EFLAGS 映像中的 VM 标志的设置。根据这些标志的设置,处理器执行以下类型的中断返回:

  • 从虚 8086 模式返回。

  • 返回到虚 8086 模式。

  • 特权级别内返回。特权级别间返回。

  • 从嵌套任务返回(任务切换)。

如果清除 NT 标志(EFLAGS 寄存器),则 IRET 指令执行从中断过程的远返回,而不执行任务切换。返回到的代码段的特权级别必须小于或等于中断处理例程的特权级别(如堆栈弹出的代码段选择器的 PRL 字段所示)。对于实地址模式中断返回,IRET 指令从堆栈将返回指令指针、返回代码段选择器以及 EFLAGS 映像分别弹入 EIP、CS 以及 EFLAGS 寄存器,然后恢复执行中断的程序或过程。如果返回到另一个特权级别,则在恢复程序执行之前,IRET 指令还从堆栈弹出堆栈指针与 SS。如果返回到虚 8086 模式,处理器还从堆栈弹出数据段寄存器。

如果设置 NT 标志,则 IRET 指令从嵌套任务(使用 CALL 指令、中断或异常调用的任务)执行任务切换(返回)到调用或中断的任务。执行 IRET 指令的任务的更新状态保存在它的 TSS 中。如果稍后重新进入该任务,则执行 IRET 指令后面的代码。

参考文章:

http://scc.qibebt.cas.cn/docs/optimization/VTune(TM)%20User's%20Guide/mergedProjects/analyzer_ec/mergedProjects/reference_olh/instruct32_hh/vc143.htm

汇编内中断 自我学习得出的汇编内中断知识点 阅读详情

相关推荐

汇编语言 第十二章 内中断 int指令 端口 外中断

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

qq_69688340的博客 2146

汇编语言--iret指令

CPU随时都可能执行中断处理程序,中断处理程序必须一直存储在内存某段空间之中 而中断处理程序的入口地址,即中断向量,必须存储在对应的中断向量表表项中。 中断处理程序的常规编写步骤: 保存用到的寄存器; 处理中断; 恢复用到的寄存器; 用iret指令返回。 iret 指令描述为:pop IP pop CS popf iret指令执行后,CPU回到执行中断处理程序前的执行点继续执行程序 ...

2万+

深入理解int指令:硬件中断机制与实模式系统协作

int指令是x86实模式下实现软中断调用的核心机制,其本质是CPU依据中断号查表跳转的硬件自动流程。它依赖中断向量表(0:0~0:3FFh)完成CS:IP定位,通过iret指令严格恢复FLAGS、CS、IP以保障执行上下文完整性。该机制构成了DOS、BIOS与应用程序之间跨软件/固件边界的协作契约,支撑字符输出(int 21h)、键盘输入(int 9h)、显存操作(int 10h)等关键功能。理解int指令,即掌握实模式下系统级服务注册、现场保护、嵌套控制与环境兼容性调试等工程实践能力。

weixin_29313423的博客 203

IRET指令详解

copy from http://lion3875.blog.51cto.com/2911026/532347 当使用IRET指令返回到相同保护级别的任务时,IRET会从堆栈弹出代码段选择子及指令指针分别到CS与IP寄存器,并弹出标志寄存器内容到EFLAGS寄存器。 当使用IRET指令返回到一个不同的保护级别时,IRET不仅会从堆栈弹出以上内容,还会弹出堆栈段选择子及堆栈指针分别到SS

菜鸟的逆袭 1万+

iret指令

好像中断返回都用到iret,因为要返回标志位,call返回用的是ret

fulinux的博客 3488

iret:中断后的完美复原术 —— x86 是怎么做到“走哪儿回来哪儿”的

iret是x86架构中的中断返回指令,用于在中断或异常处理结束后恢复CPU状态并返回到主程序。其核心作用是通过“三步还原法”恢复中断前的指令指针(IP/EIP/RIP)、代码段(CS)和标志寄存器(Flags),确保程序从中断点继续执行。与普通函数返回指令ret不同,iret能恢复更多现场细节,适用于中断/异常场景。在不同模式下(如实模式、保护模式、64位模式),iret的行为有所差异,尤其在跨特权级时需额外保存/恢复堆栈段(SS)和堆栈指针(ESP/SP)。iret在多任务切换中也起关键作用,确保任务上下

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 308

汇编ret ,retf ,iret ,int指令详解

1.恢复 IP(instruction pointer):(IP)←((SP)+1:(SP)),(SP)←(SP)+2。2.恢复 CS(code segment):(CS)←((SP)+1:(SP)),(SP)←(SP)+2。3.恢复中断前的 PSW(program status word),即恢复中断前的 标志寄存器的状态。最后,call、ret、retf 这三条指令执行后不会对标志位产生影响。ret指令用栈中的数据,修改IP的值,从而实现近转移。IRET指令影响所有标志位。

我写写哈的博客 3977

TCS34725颜色识别模块实战调校:从“一坨”例程到精准RGB

本文针对TCS34725颜色识别模块初始数据不准的问题,提供了从基础例程到精准调校的实战指南。核心在于通过白光校正与黑白光校正两种方法,补偿传感器偏差与环境光影响,将原始数据准确映射为标准RGB值。文章详细阐述了校准原理、操作步骤与代码实现,并分享了进阶调试技巧与避坑指南,帮助开发者显著提升颜色识别的准确性与项目可靠性。

weixin_29188043的博客 287

汇编_指令_IRET

IRET(interrupt return)中断返回,中断服务程序的最后一条指令。 汇编指令IRET 【指令格式】IRET 【指令功能】IRET(interrupt return)中断返回,中断服务程序的最后一条指令。IRET指令将推入堆栈的段地址和偏移地址弹出,使程序返回到原来发生中断的地方。其作用是从中断中恢复中断前的状态,具体作用有如下三点: 1.恢复IP(...

weixin_30647065的博客 1167

ESD放电模式以及电源箝位 (power clamp )电路

由于ESD电压具有很快的上升速度(其ESD脉冲上升时间约在10ns左右),Vrc端的电压因为RC延迟效应无法跟得上VDD端的ESD电压上升速度,Vrc端的为低电位导致反相器工由于ESD电压具有很快的上升速度(其ESD脉冲上升时间约在10ns左右),Vrc端的电压因为RC延迟效应无法跟得上VDD端的ESD电压上升速度,Vrc端的为低电位导致反相器工作将输出端Vout电压上拉到高电位。从而Vg端的高电位触发导通了NMOS元件(Mesd)的晶体管,因而ESD电流便经由Mesd而泄放掉。由于晶体管Mesd的栅极导通

DOG_BITE_DOG的博客 2万+

SQL2000在Win10上安装完整指南:兼容模式、SP4补丁与远程连接配置

数据库兼容性是老系统迁移与运维中绕不开的难题。当历史遗留的SQL Server 2000遭遇全新的Windows 10环境,安装程序常因系统版本检测失败而拒绝运行,这背后是旧版安装程序与NT内核版本间的识别错位。通过兼容模式模拟旧系统环境、以管理员身份运行安装程序,并处理注册表挂起与杀毒软件干扰,即可突破基础安装障碍。安装后的SP4补丁与TCP/IP端口配置,则是保障服务稳定与远程连接的关键。这一技术路径广泛适用于制造企业MES、进销存系统及医院HIS等仍依赖老旧数据库的场景,为IT运维与数据迁移测试提供了

weixin_29266679的博客 437

IRET/IRETD - 中断返回

转自:http://scc.qibebt.cas.cn/docs/optimization/VTune(TM)%20User's%20Guide/mergedProjects/analyzer_ec/mergedProjects/reference_olh/instruct32_hh/vc143.htm http://szkn28szkn.iteye.com/blog/1362460 说明

li4850729的专栏 1万+

2024年11月架构设计师案例分析真题回顾,附参考答案、解析及所涉知识点(一)

软考高级系统架构设计师考试包含三个科目:信息系统综合知识、案例分析和系统架构设计论文。考试形式为机考。本文主要回顾2024年下半年(2024-11-10)系统架构设计师考试上午第二科案例分析的题目,同时附带参考解答、解析和所涉知识点。

一几文的编程学习笔记。 2418

关于IRET指令

当使用IRET指令返回到相同保护级别的任务时,IRET会从堆栈弹出代码段选择子及指令指针分别到CS与IP寄存器,并弹出标志寄存器内容到EFLAGS寄存器。 当使用IRET指令返回到一个不同的保护级别时,IRET不仅会从堆栈弹出以上内容,还会弹出堆栈段选择子及堆栈指针分别到SS与SP寄存器。 IA-32指令手册关于这一点描述的很清楚,原文如下: the IRET instructi

linuxheik的专栏 2780

什么是DHCP Snooping?如何配置DHCP Snooping?

功能描述防护类型防御伪造 DHCP 服务器、避免地址冲突、增强网络安全性使用场景企业园区网、校园网、大型局域网配合机制IP Source Guard、DAI、防止 ARP 欺骗部署难度⭐⭐(简单)“DHCP Snooping,是内网 DHCP 安全防护的第一道门神。” 🛡️。

网络技术联盟站 1265

STM32CubeMX | 38-使用硬件SPI驱动以太网模块(W5500)

本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外设与以W5500通信,驱动以太网模块。 1. 准备工作 硬件准备 开发板 首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi): W5500以太网模块 这里我使用常见的以太网模块W5500: W5500官网 http://www.w5500.cn/ W5500中文手册 iEthernet W5500 Datasheet 软件准备 需要安装好Keil - MDK及芯片对应的包,以

Mculover666的博客(嵌入式) 7387

8086 汇编中断知识点总结

CPU 在执行主程序时,被外部 / 内部事件打断,转去执行专门的中断服务子程序,执行完毕返回原程序继续运行。IRET:中断专用返回,依次弹出 IP、CS、FLAGS(RET 只弹 IP)单步中断(TF=1):每执行一条指令触发,调试用,类型号01H。清除标志:IF=0(屏蔽后续可屏蔽中断)、TF=0(关闭单步)。INT n:主动调用中断,n 为 0~255 中断类型号。IRET:弹出 IP、CS、FLAGS,仅用于中断返回。INTO:溢出中断,OF=1时触发,类型号04H。

2401_86646397的博客 249

基于形状的模板匹配之候选点选择

基于形状的匹配匹配,顶层金字塔提取候选点

manuoo的专栏 2767

中断与中断返回指令

目录1. INT n软件中断指令2. INTO 溢出中断指令3. IRET 中断返回指令 1. INT n软件中断指令 产生类型号为n的中断。(0~255) 2. INTO 溢出中断指令 当OF = 1时,执行INTO可产生类型为4的中断。 当OF=0时,执行INTO不产生中断。 3. IRET 中断返回指令 从堆栈中依次弹出IP,CS,标志寄存器的内容至原来位置。 ...

qq_35912930的博客 3578

基于卷积神经网络的球罐结构损伤识别

球罐结构损伤识别方法研究 摘要:本研究针对球形储罐(球罐)结构健康监测需求,提出基于卷积神经网络(CNN)的损伤识别方法。通过ANSYS有限元仿真构建包含5种裂纹深度的500组振动信号数据集,设计包含卷积层、池化层和全连接层的CNN网络架构。实验结果表明,该方法在训练集和测试集上分别达到98.4%和96.0%的准确率,验证了其在球罐焊缝损伤识别中的有效性。研究提供了完整的MATLAB实现代码,为球罐结构智能化监测提供了技术参考。 关键词:球罐结构;卷积神经网络;损伤识别;振动信号;深度学习

AI的内部世界的博客 120

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

int指令深度解析:从CPU中断机制到DOS系统调用

中断(Interrupt)是CPU响应异步事件的核心机制,其本质是硬件强制暂停当前执行流、保存上下文并跳转至预设服务程序的过程。该机制由CPU硬件流程(压栈/查表/跳转)、中断向量表(IVT)内存布局和中断返回指令(iret)三者协同实现,构成操作系统系统调用、设备驱动与异常处理的底层基础。在x86实模式下,int指令作为软中断触发原语,典型应用于DOS功能调用(如int 21h),其AH寄存器选型、DS段初始化、字符串终止符'$'约定等细节直接决定程序健壮性。理解int指令,即是建立对上下文切换、特权级控

weixin_42524708的博客 94

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

汇编语言int n 和iret配合使用

(二)标志寄存器入栈,同时置tf=0,if=0;(三)cs和ip入栈,(四)(ip)=(n*4),(cs)=(n*4+2);相当于pushf,push cs,push ip, mov ip,0:[n*4];mov cs,0:[n*4+2]iret功能相当于pop ip;int n引发中断类型码为n的中断过程。

weixin_41967870的博客 261

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

操作系统学习19:缺页异常 #PF 与按需分页

本文介绍了操作系统缺页异常(#PF)与按需分页机制。当CPU访问未映射或权限不符的线性地址时,会触发缺页异常(向量14),这是虚拟内存系统的核心机制,使按需分页、写时复制等成为可能。文章分析了#PF的触发条件、错误码解析及恢复流程,并给出实现方案:通过注册IDT中断处理程序,在缺页时分配物理页并建立映射,使指令能重试执行。最终演示了对0x40000000未映射地址的按需分页处理流程,补齐了虚拟内存的关键环节。

猿来这样-谢厂节的博客 445

RET RETF IRET IRETD 指令的不同

简单介绍RET, RETF, IRET, IRETD指令的不同

qq_50332504的博客 6126

指令详解 三菱plc_电气工程师专业讲解三菱PLC中断指令的使用方法,有料

我们以三菱PLC为例,了解一下,什么是中断。一套程序可以分为主程序区,还有子程序区,中断程序区等等,主程序区的程序是无时无刻都会扫描执行的,而子程序还有中断程序就必须触发某些条件,然后程序会停止运行主程序,跳到指定运行的中断程序里面区运行。在一段程序里面,主程序是必须有的,其他程序可以选择是否需要。如下图,是一段程序,有一段主程序,还有2段中断程序I001和I200。假如只有主程序,那么程序结尾就...

weixin_39575737的博客 2405
上一篇: CPU特权级保护
下一篇: 实现多任务的内核Linux0.00分析
OS技术解密
博客等级 码龄16年 3760粉丝 189原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值