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

2023-10-31

**
ret指令
**
执行过程
ret指令用栈中的数据,修改IP的值,从而实现近转移。
CPU执行ret指令时,进行下面两步操作:
(IP)=((SS)*16+(SP))
(SP)=(SP)+2;
另一种用法 ret n (n为整数)
等效于
(IP)=((SS)*16+(SP))
(SP)=(SP)+2;
(SP)=(SP)+n;
例如ret 4
pop ip
add sp,4
**
retf指令
**
retf用栈中数据同时改CS,IP,远转移
远返回指令。当它执行时,处理器先从栈中弹出一个字到IP,再弹出一个字到CS。

最后,call、ret、retf 这三条指令执行后不会对标志位产生影响。

retf -> pop ip
pop cs

iret (interrupt return )  中断返回指令

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),即恢复中断前的 标志寄存器的状态。
(FR)←((SP)+1:(SP)),(SP)←(SP)+2
4.恢复ESP(返回权限发生变化)
5.恢复SS(返回权限发生变化)
 IRET指令影响所有标志位。

**
int 指令**

  1. 中断类型号
  2. 标志寄存器入栈,IF=0.TF=1
  3. CS,IP入栈
  4. IP=(n*4),CS=(n*4+2)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

汇编ret ,retf ,iret ,int指令详解 的相关文章

  • Windows系统调用架构分析—也谈KiFastCallEntry函数地址的获取

    Windows系统调用架构分析 也谈KiFastCallEntry函数地址的获取 windows api 汇编 hook 存储 system 目录 为什么要写这篇文章 1 因为最近在学习 软件调试 这本书 看到书中的某个调试历程中讲了Win
  • 使用Clang作为编译器 —— Assembling a Complete Toolchain

    装配一个完整的工具链 1 介绍 2 工具 2 1 Clang 前端 2 2 其他语言的语言前端 2 3 汇编器 2 4 链接器 3 运行时库 3 1 编译器运行时 Compiler runtime 3 2 原子库 Atomics libra
  • C关键字volatile

    其实我想看的 想做笔记的就是就是那个汇编例子 看来汇编例子有助于了解啊 以前听人说过 高手都能将每一句C语言对应一句汇编语言 C语言关键字volatile 1 C语言关键字volatile C语言关键字volatile 注意它是用来修饰变量
  • 计算机组成原理课程设计:运算器、微程序控制器、两个数大小比较

    实验一 运算器 实验二 微程序控制器 实验三 两个数比较大小 机器程序如下 P 00 20 IN R0 P 01 00 P 02 21 IN R1 P 03 00 P 04 84 SUB R0 R1 P 05 F0 BZC P 06 0C
  • 汇编基础(2) -- ARM64

    简介 ARM架构中 ARM64 也称为AArch64 是一种64位处理器架构 它是ARMv8指令集的一部分 与之前的32位ARM架构相比 ARM64提供了更大的寄存器容量 更广阔的地址空间和更高的计算能力 64位版本的指令集和32位版本的指
  • win32汇编基础概念

    一 关于寄存器 寄存器有EAX EBX ECX EDX EDI ESI ESP EBP等 似乎IP也是寄存器 但只有在CALL RET在中会默认使用它 其它情况很少使用到 暂时可以不用理会 EAX是WIN32 API 默认的返回值存放处 E
  • esp和ebp详解

    我的理解 国外一个比较好的汇编网站 http www tenouk com Bufferoverflowc Bufferoverflow1b html http blog sina com cn s blog c3bab4650101ogf
  • arm汇编lr pc b bl ret指令函数调用和返回gif动图演示

    文章目录 pc 寄存器 lr寄存器 x30 ret返回指令 bl 跳转指令 带返回 b 跳转 不带返回 pc 寄存器 pc保存着当前指令执行的地址 相当于win32汇编里的eip寄存器 lr寄存器 x30 lr存储函数的返回地址 每次遇到r
  • 汇编中16进制装换成为其他进制(2,8,10)

    16进制装换成为其他进制关键在于得到键盘输入 并将它保存在BINARY的这个变量里面 宏定义直接调用 例子中有 DISP etc 子程序的话要注意对主程序的信息的保护和恢复 我在这里使用的是在子程序里面去保护主程序的方式 你也可以在主程序调
  • xorl %eax, %eax

    这是GNU的汇编 xorl eax eax 这句起什么作用 按位异或 相同的位置为0 不同的位置为1 eax和eax的每一位都相同 所以相当于清零 movl 8 ebp ecx testl ecx ecx 这句起什么作用 jle L3 8
  • 汇编语法

    1 通用寄存器 EAX EBX ECX EDX ESI EDI ESP EBP 它 们 的低 16 位就是 8086 的 AX BX CX DX SI DI SP BP 它们的含义如下 EAX 累加器 EBX 基址寄存器 Base ECX
  • 汇编——寄存器的分类和功能

    在汇编中 个人感觉最重要的部分其实就是寄存器了 这次我们了解一下寄存器的分类和功能 先说一下寄存器是什么吧 其实就是一部分的空间 我们可以使用这些空间来存储内容 寄存器的空间都是16位的 80x86中 后来有增长 也就是1个字的空间 堆栈则
  • libtool的作用及应用

    gcc library makefile archive command object 注意 本文为转载 原文也是转载 但是为了尊重他人得劳动成果 我将将转载网址贴出来 libtool常见于autoconf automake 单独用的例子很
  • IDM 6.4.1逆向分析笔记

    环境准备 安装过程不做说明 1 x64dbg 官网地址 https x64dbg com 2 火绒剑 官网地址 https www huorong cn SPY 下载地址 https github com westoncampbell Sp
  • Base64编码(汇编版,未做过多优化,性能自认为还可以)

    感谢 DelphiGuy 于 2010 10 08 17 27 37 给出的提醒 function GetSizeCoder3To4 InputCount Integer Integer inline begin Result InputC
  • 汇编语言(王爽第三版) 实验5编写、调试具体多个段的程序

    参考 http blog sina com cn s blog 171daf8e00102xclx html 汇编语言实验答案 王爽 https wenku baidu com view a1cd7c6c1fb91a37f111f18583
  • ARM汇编快速入门

    本文主要分享如何快速上手ARM汇编开发的经验 汇编开发中常见的Bug以及Debug方法 用的Convolution Dephtwise算子的汇编实现相对于C 版本的加速效果三方面内容 前言 神经网络模型能够在移动端实现快速推理离不开高性能算
  • MCS-51 汇编指令集(J开头的指令)

    MCS 51系列单片机指令以J开头的指令有8条 分别为 JB bit rel JBC bit rel JC rel JMP A DPTR JNB bit rel JNC rel JNZ rel JZ rel 1 JB bit rel 指令名
  • 《深入理解计算机系统》实验四Architecture Lab

    前言 深入理解计算机系统 实验四Architecture Lab下载和官方文档机翻请看 深入理解计算机系统 实验四Architecture Lab下载和官方文档机翻 我觉得这个文档对整个实验很有帮助 如果你的Y86 64环境还没安装好可以看
  • C语言深入学习--checklist4:宏、枚举、switch

    宏 1 宏的本质是什么 函数 语句 类型定义 或者其它 预编译器的文本替换 1 你知道语言设计者为什么设计宏吗 这些原因目前是否成立 在 C程序中 可以用宏代码提高执行效率 宏代码本身不是函数 但使用起来象函数 预处理器用复制宏代码的方式代

随机推荐

  • 【Graph Neural Network】 GraphSAGE 基本原理与tensorflow2.0实现

    文章目录 GraphSAGE 前向传播算法 采样算法 聚合 aggragator 操作 参数学习 基于tensorflow2 0实现Graph SAGE GCN是一种利用图结构和邻居顶点属性信息学习顶点Embedding表示的方法 GCN是
  • 如何有效预防脱库

    本篇不从DBA 网络架构层面来讲述数据安全 这部分有很专业的架构和云上产品来解决 本篇重点从开发人员角度讲述如何避免数据安全的漏洞 相信大部分人都看到过这样的新闻 某某论坛泄漏了用户密码 某某物流公司泄漏了用户的手机号等等 我一直坚信大部分
  • 用Unity3D和VuforiaSDK简单做AR应用(入门)

    最近刚开始接触AR技术 结合u3d 算是对增强现实应用入个门 网上的例子不胜枚举 但有些浅尝辄止 根据自己几天来的摸索 毕竟新的技术源自国外 翻起晦涩的外文 一步一个脚印终于爬了出来 先上个史记效果图先 我取名之 鹿君下山 接下来说说步骤
  • Linux分区记录

    命令 cat proc mtd dev size erasesize name mtd0 00007000 00010000 vendor mtd1 00030000 00010000 IDBlock mtd2 00600000 00010
  • 3.5设计模式——————接口隔离原则——面向对象设计原则

    接口隔离原则的定义 接口隔离原则 Interface Segregation Principle ISP 要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口 让接口中只包含客户感兴趣的方法 2002 年罗伯特 C 马丁给 接口隔离原则
  • php新闻管理系统(简单)学习教程

    最近因为工作原因需要使用php开发网页 所以开始学习php 在学习的过程中也遇到了很多困难 经过不断的查询百度各种学习资料 逐步的客服了这些困难和疑惑 现在我将学习过程中编写的代码分享给有需要的朋友 仅供参考 此系统比较简单 共有20个ph
  • 某宝登录滑块拖动没反应解决,亲测有效

    这两天在抓取某宝数据的时候发现使用selenium登录时会有滑块 然后尝试使用xpath定位到滑块位置然后使用Actionchains拖动 但是发现滑块拖动没有反应 但是在抓取过程中的滑块拖动时没有问题的 如图所示 随后对代码进行调试 终于
  • 微信小程序开店怎么做?

    在日活量如此之高的微信里 很多商家都希望能再微信开一个小程序商店 来提高自己的一个卖货收益 那么微信小程序开店怎么做呢 下面跟大家分享一下微信小程序怎么开店 一 开通小程序账号 首先我们需要开通一个小程序账号 小程序账号的主体类型要企业或者
  • 学习一年Java的程序员的C++学习记录(指针引用绕晕记)

    文章目录 一 C 入门 二 变量和数据类型 三 运算符 四 流程控制 五 复合数据类型 六 函数 七 函数高阶 八 面向对象 一 C 入门 标准输出流中 cout 是一个ostream对象 lt lt 和 gt gt 是C 中经过重载的运算
  • 从谷歌宕机事件认识互联网工作原理

    摘要 谷歌服务器经历了短暂的宕机事件 持续大概27分钟 对部分地区的互联网用户造成了影响 此次事件的原因深究起来需要进入互联网络那深邃的 黑暗的角落 译者注 本文中提到CloudFlare是一家总部位于美国旧金山的内容分发网络 CDN 服务
  • 必备歌曲--超经典

    一些超经典的歌曲 看看你听过多少 1 陈慧琳 记事本 爱得痛了 痛的哭了 记载着我们过去的点点滴滴 让我们一起回忆 2 王力宏 唯一 悠扬 流畅 很有韵味的感觉 大声对你深爱的人说你是我的唯一王力宏新专辑首支主打歌 唯一 打动不少歌迷 觉得
  • 华为OD机试 - 跳房子I(Java)

    题目描述 跳房子 也叫跳飞机 是一种世界性的儿童游戏 游戏参与者需要分多个回合按顺序跳到第1格直到房子的最后一格 跳房子的过程中 可以向前跳 也可以向后跳 假设房子的总格数是count 小红每回合可能连续跳的步教都放在数组steps中 请问
  • shell 脚本中wait命令以及多进程库wait()原语的使用

    一 脚本源码 compute it 1 gt compute it 1 out compute it 2 gt compute it 2 out wait cat compute it 1 out cat compute it 2 out
  • 解决Spyder无法自动补全某些代码的问题

    今天在Spyder发现按tab代码无法自动补全 网上的方法全部试过了 如在ipython里面勾选greedy completion 和autocall选full 删除enum34 我根本就没有这个包 安装rope 安装正确版本的jedi和p
  • JAVA this关键字的使用(JacKing)

    1 对当前对象的引用 public class Leaf int i 0 Leaf increment i return this void print System out println i i public static void m
  • Unity3d trial version 水印

    使用个人免费版发布安卓手机版包 屏幕右下角显示 trial version 水印 解决办法 1 免费版Unity Hub 使用国外网络刷新证书 2 使用付费版Unity Hub
  • 美团笔试-回转寿司

    小美请小团吃回转寿司 转盘上有N盘寿司围成一圈 第1盘与第2盘相邻 第2盘与第3盘相邻 第N 1盘与第N盘相邻 第N盘与第1盘相邻 小团认为第i盘寿司的美味值为A i 可能是负值 如果小团讨厌这盘寿司 现在 小团要在转盘上选出连续的若干盘寿
  • Qt网络编程之实例一GET方式

    看了两天的Qt网络编程 其实主要就是看了看QNetworkAccessManager QNetworkRequest和QNetworkReply这三个类的主要内容 在之前 Qt网络编程主要是使用QHttp等类 但是现在在帮助手册中这些类已经
  • 2022年2月6日--2月12日(ue智慧城市3,4周,本周10小时,合计1929小时,剩余8071小时)

    目前 ue视频教程进行到了智 慧 城 市 3 11 mysql 7 1 tf1 4 11 蓝图反射 1 9 moba 1 5 webapp 2 4 mmoarpg 00A 04 socket 2 57 Opengl 5 9 GLSL 2 1
  • 汇编ret ,retf ,iret ,int指令详解

    ret指令 执行过程 ret指令用栈中的数据 修改IP的值 从而实现近转移 CPU执行ret指令时 进行下面两步操作 IP SS 16 SP SP SP 2 另一种用法 ret n n为整数 等效于 IP SS 16 SP SP SP 2