《intel开发手册卷1》学习笔记3

1、数据传输指令

MOV 指令在内存和处理器寄存器之间执行基本的加载数据和存储数据操作,并在寄存器之间执行数据移动操作。MOV 指令不能将数据从一个内存位置移动到另一个内存位置,也不能将数据从一个段寄存器移动到另一个段寄存器。内存到内存的移动使用 MOVS(字符串移动)指令执行。

2、跳转指令

        JMP指令——JMP(跳转)指令无条件地将程序控制转移到目标指令。转移是单向的;也就是说,不会保存返回地址。目标操作数指定目标指令的地址(指令指针)。地址可以是相对地址也可以是绝对地址。相对地址是相对于EIP寄存器中的地址的位移(偏移量)。目的地址(一个近指针)是通过在EIP寄存器的地址上加上位移而形成的。位移用有符号整数指定,允许在指令流中向前或向后跳转。在保护模式下,JMP指令还允许跳转到调用门、任务门和任务状态段。

        CALL和RET——Call(调用过程)和RET(从过程返回)指令允许从一个过程(或子例程)跳转到另一个过程(或子例程),并随后跳转回(返回)到调用过程。CALL指令将程序控制从当前(或调用)过程转移到另一个过程(被调用过程)。为了允许随后返回到调用过程,CALL指令在跳转到被调用过程之前将EIP寄存器的当前内容保存在堆栈上。EIP寄存器(在转移程序控制之前)包含CALL指令之后的指令的地址。当这个地址被压入堆栈时,它被称为返回指令指针或返回地址。RET指令将程序控制从当前正在执行的过程(被调用过程)转移回调用它的过程(调用过程)。控制的转移是通过将返回指令指针从堆栈复制到EIP寄存器来完成的。然后程序继续执行EIP寄存器所指向的指令。RET指令有一个可选操作数,它的值作为返回操作的一部分被添加到ESP寄存器的内容中。此操作数允许对堆栈指针进行递增,以从调用过程在堆栈上压入的堆栈中删除参数

INT n(软件中断)、INTO(溢出时中断)和 BOUND(检测值超出范围)指令允许程序明确引发指定的中断或异常,进而导致中断或异常的处理程序被调用。INT n 指令通过在指令中编码中断或异常的向量,可以引发处理器的任何中断或异常。该指令可用于支持软件生成的中断,或测试中断和异常处理程序的运行。IRET(从中断返回)指令将程序控制从中断处理程序返回到被中断的程序。

        IRET指令——当处理器处理中断时,它执行对中断处理过程的隐式调用。 IRET(从中断返回)指令将程序控制从中断处理程序返回到被中断的过程(即,中断发生时正在执行的过程)。IRET 指令执行与 RET 指令类似的操作,不同之处在于它还从堆栈中恢复 EFLAGS 寄存器。当处理器处理中断时,EFLAGS 寄存器的内容与返回指令指针一起自动存储在堆栈中

3、字符串操作隐含规则

默认情况下,ESI 寄存器的地址段由 DS 段寄存器确定。段覆盖前缀允许 ESI 寄存器与 CS、SS、ES、FS 或 GS 段寄存器相关联。EDI 寄存器的地址段由 ES 段寄存器确定;EDI 寄存器不允许段覆盖。在字符串指令中使用两个不同的段寄存器,可以对位于不同段的字符串执行操作。或者,通过将 ESI 寄存器与 ES 段寄存器关联,源字符串和目标字符串可以位于同一段中。

        CMPS 指令从源字符串元素中减去目标字符串元素,并根据结果更新 EFLAGS 寄存器中的状态标志(CF、ZF、OF、SF、PF 和 AF)。两个字符串元素都不会写回内存。

        LODS 指令将 ESI 寄存器标识的源字符串元素装入 EAX 寄存器(双字字符串)、AX 寄存器(字字符串)或 AL 寄存器(字节字符串)。

        STOS 指令将 EAX(双字串)、AX(字串)或 AL(字节串)寄存器中的源字符串元素存储到 EDI 寄存器标识的内存位置。

在字符串指令中使用时,ESI 和 EDI 寄存器会在指令每次迭代后自动递增或递减,以指向字符串中的下一个元素(字节、字或双字)。因此,字符串操作可以从较高的地址开始,然后向较低的地址移动,也可以从较低的地址开始,然后向较高的地址移动。EFLAGS 寄存器中的 DF 标志控制寄存器是递增(DF = 0)还是递减(DF = 1)。STD 和 CLD 指令分别设置和清除该标志

4、段寄存器操作指令

MOV 指令以及 PUSH 和 POP 指令可以将 16 位段选择器传输到段寄存器(DS、ES、FS、GS 和 SS)或从中传输。传输始终在段寄存器和通用寄存器或内存之间进行,但不支持段寄存器之间的传输。 POP 和 MOV 指令无法将值放入 CS 寄存器中。只有 JMP、CALL 和 RET 指令的远控制传输版本会直接影响 CS 寄存器。

        JMP 和 CALL 指令均接受远指针作为目标,以将程序控制转移到 CS 寄存器当前指向的段以外的段。当使用CALL指令进行远调用时,EIP和CS寄存器的当前值都被压入堆栈

        RET 指令可用于执行远距离返回。在这里,程序控制从包含被调用存储过程的代码段转移回包含调用存储过程的代码段。RET 指令从堆栈中恢复调用存储过程的 CS 和 EIP 寄存器的值。

        加载远指针指令 LDS(使用 DS 加载远指针)、LES(使用 ES 加载远指针)、LFS(使用 FS 加载远指针)、LGS(使用 GS 加载远指针)和 LSS(使用 SS 加载远指针)将远指针从内存加载到段寄存器和通用通用寄存器中。远指针的段选择器部分被加载到所选的段寄存器中,并且偏移量被加载到所选的通用寄存器中。

        LEA(加载有效地址)指令计算源操作数在内存中的有效地址(段内的偏移量)并将其放入通用寄存器中。该指令可以解释处理器的任何寻址模式,并且可以执行可能需要的任何索引或缩放。它对于在执行字符串指令之前初始化 ESI 或 EDI 寄存器或在 XLAT 指令之前初始化 EBX 寄存器特别有用。

        NOP(无操作)指令递增 EIP 寄存器以指向下一条指令,但不影响其他任何操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/610160.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ros 学习记录(二)URDF小车运动控制

URDF小车运动控制 准备工作创建 robot_xacro.launch 接上文,想用键盘控制小车在Gazebo中移动。 准备工作 名称版本ROSNoeticGazebo11.11.0 创建 robot_xacro.launch 通过运行这个launch文件,可以启动Gazebo仿真环境,并在仿真环境中加载和…

Redis实现延迟队列(为订单超时关闭提供更多的解决方案)

电商场景中的问题向来很受面试官的青睐,因为业务场景大家都相对更熟悉,相关的问题也很有深度,也有代表性,能更方便地考察候选人的技术水平。 比如商品购买下单支付的流程,在买家购买商品后会先生成订单,之后…

Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案

文章目录 一、vue中使用el-table的typeindex有时不显示序号Table 表格显示索引自定义索引报错信息解决方案 二、vue中Missing required prop: “value” 报错报错原因解决方案 三、el-table的索引值index在翻页的时候可以连续显示方法一方法二 四、vue3中Element Plus全局组件配…

微信小程序流量主如何自定义广告组件后台控制广告显示方式附源码[收藏]

最近开发了一个微信小程序,开通了流量主,引用广告显示。本教程干货满满,附上代码,建议**【收藏点赞】** 微信小程序广告有以下几种:Banner广告、激励广告、插屏广告、视频广告、视频贴片广告、封面广告。 为了增加广告…

数字工厂管理系统如何助力企业数据采集与分析

随着科技的不断进步,数字化已成为企业发展的重要趋势。在制造业领域,数字工厂管理系统的应用日益广泛,它不仅提升了生产效率,更在数据采集与分析方面发挥着举足轻重的作用。本文旨在探讨数字工厂管理系统如何助力企业数据采集与分…

Java数组(如果想知道Java中有关数组的知识点,那么只看这一篇就足够了!)

前言:数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同,Java 语言中提供的数组是用来存储固定大小的同类型元素。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSD…

Kafka从0到消费者开发

安装ZK Index of /zookeeper/zookeeper-3.9.2 下载安装包 一定要下载-bin的,不带bin的是源码,没有编译的,无法执行。-bin的才可以执行。 解压 tar -zxvf apache-zookeeper-3.9.2-bin.tar.gz 备份配置 cp zoo_sample.cfg zoo_sample.cfg-b…

Chronos:学习时间序列的大语言模型(论文解读)

前言 《Chronos: Learning the Language of Time Series》原文地址GitHub项目地址Some-Paper-CN。本项目是译者在学习长时间序列预测、CV、NLP和机器学习过程中精读的一些论文,并对其进行了中文翻译。还有部分最佳示例教程。如果有帮助到大家,请帮忙点亮…

RAG技术简介

相关文档: 论文链接: https://arxiv.org/abs/2005.11401 课程链接: Tutorial/huixiangdou at camp2 InternLM/Tutorial GitHub 视频链接: 茴香豆:搭建你的 RAG 智能助理_哔哩哔哩_bilibili RAG是一种在LLM中广泛使…

echarts指标盘属性概括

echarts指标盘属性概括 代码 有模拟数据可以直接使用const options {animation: true,title: {top: "35%",left: "center",// text: "单元测试覆盖度", // 主标题itemGap: 15,textStyle: {// 主标题样式color: "#666666",fontSize:…

Spring MVC分页示例

Spring MVC分页示例 分页用于在不同部分显示大量记录。在这种情况下,我们将在一页中显示10、20或50条记录。对于其余记录,我们提供链接。 我们可以在Spring MVC中简单地创建分页示例。在此分页示例中,我们使用MySQL数据库来获取记录。 创建…

MySQL索引优化(超详细)篇章2--索引调优

目录 1.索引失效状况2.性能分析3.表的索引信息--调整索引顺序4.删除冗余索引5.最佳左前缀法则5.1下面是一个实际的例子来说明这个概念: 6.数据长度和索引长度占用空间比较 1.索引失效状况 MySQL索引失效通常指的是查询语句无法有效地利用索引,而导致全表…

为什么说HTTPS比HTTP安全? HTTPS是如何保证安全的?

一、安全特性 在上篇文章中,我们了解到HTTP在通信过程中,存在以下问题: 通信使用明文(不加密),内容可能被窃听不验证通信方的身份,因此有可能遭遇伪装而HTTPS的出现正是解决这些问题&#xff0c…

基于springboot + vue 实现的简易博客系统

项目效果图 登陆页面 文章列表 发表文章 用户管理 栏目管理 数据统计 后端技术栈后端主要采用了: 1.SpringBoot 2.SpringSecurity 3.MyBatis 4.部分接口遵循Restful风格 5.MySQL 前端技术栈前端主要采用了: 1.Vue 2.axios 3.Elemen…

ETL如何执行Java脚本

ETLCloud提供了执行 Java 脚本的方式,让用户能够灵活地处理数据并实现各种复杂的数据处理任务。 ETLCloud在数据处理领域的应用优势主要体现在以下几个方面: 灵活性:通过执行Java脚本,用户能够灵活定制数据处理逻辑,满…

C语言---使用共用体将double型经纬度存储到无符号数组中

1.在上报经纬度时由于数据协议限制需要将double型数据存储到无符号数组中&#xff0c;下边是写了一个简单C程序进行验证&#xff1b; 2.代码示例如下 #include <stdio.h> typedef union {float data;unsigned char arr[4]; } my_data;int main() {my_data test_data {…

IDEA HTTP Client 插件配置空密码的 Request

最近在测试一些 rest api 的时候&#xff0c;发现 IDEA 的 HTTP Client 很好用。对比 postman 更加的轻量&#xff0c;可以满足一些简单的 HTTP 请求测试。这里主要记录下&#xff0c;当用户名没有设置密码时&#xff0c;我们该如何配置这个 HTTP Client 的 Request 文件&#…

综合内容运营实习生实习体验报告怎么写?

分享一个笔灵ai生成的综合内容运营的实习体验报告&#xff0c;有别的岗位需要的可以自己去网站使用 实习体验报告AI写作助手 | AI文章智能生成器 - 笔灵AI写作 实习体验报告 尊敬的领导&#xff1a; 您好&#xff01;我很荣幸有机会向您提交我的实习体验报告。在过去的几个月…

wpf中的图标字体和android的矢量图vector

1.背景 在安卓程序中如下截图所示中&#xff0c;在drawable文件夹下有如下图片文件。 这是一个xml文件&#xff0c;打开后看到Vector节点下paht中有一个pathData属性有一串带字母数字和"."点的数据。这些是什么呢&#xff1f; <vector xmlns:android"http:…

14个项目带你熟练学握AI2G免费分享|一门让你掌握人工智能能力的实操课(送工具)利用Midjourney

目录 1-一门让你掌握人工智能能力的实操课&#xff08;送工具&#xff09;.mp4 10-成为UI设计师&#xff1a;利用Midjourney进行页面UI设计.mp4 11-做室内设计师&#xff1a;利用Midjourney产出家居、室内设计方案.mp4 12-故事绘本&#xff1a;利用Midjouney准备课件、故事…
最新文章