IA32体系结构3(x86机器码概述)

2024-02-21 23:32

本文主要是介绍IA32体系结构3(x86机器码概述),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

归根结底,处理器只认识机器语言,处理器会按照机器码的指示进行动作。

x86体系结构使用指令长度可变的机器语言,一条机器码指令可以从1字节到13字节不等。这个跟ARM还是有很大区别,ARM32位处理器的话,是定长指令,是32位长度。

8086~80286使用16位指令模式,80386以上处理器也可以工作在16位指令模式,两者是兼容的。16位模式和32位模式,其指令机器码格式有一些差别,具体格式如下:

32位指令格式的头两个字节,因为不常出现,所以称为超越前缀(override prefix)。第一个字节用来修改指令操作数地址的长度,第二个字节修改寄存器长度。如果80386以上按16位指令模式的机制操作(实模式或保护模式),而使用32位寄存器,则指令的前面出现寄存器长度前缀66H。如果按32位指令模式操作(只在保护模式),而且使用32位寄存器,则不存在寄存器长度前缀。如果在32位指令模式中出现16位寄存器,则要使用寄存器长度前缀选择16位寄存器。在带有前缀的指令中,前缀把寄存器及操作数地址的长度从16位转换到32位,或是从32位转换到16位。注意,16位指令模式用8位及16位寄存器和寻址方式,而32位指令模式使用8位及32位寄存器和寻址方式,这是默认的用法。前缀可超越这些默认值,因此32位寄存器可以用于16位模式,而16位寄存器可以用于32位模式。

操作码

操作码一般为1~2字节。

1.第一个字节

第一个字节格式为(大部分情况,不是所有指令都是这个格式):

(1).前6位表示不同的操作码。

(2).D-数据流方向

D=1,数据从位于指令第二个字节的R/M字段流向寄存器(REG)字段。

D=0,数据从REG字段流向R/M字段。

(3).W-字节或字或双字

w=0,数据长度是字节

w=1,数据长度是字或者双字(80386以上为双字)

2.第2个字节

第二个字节格式为:

(1)MOD字段

MOD字段规定指令的寻址方式,MOD字段选择寻址类型及所选的类型是否有位移量。下表列出了在没有操作数地址长度超越前缀(67H)时,16位指令模式下MOD字段各种可能的取值。如果MOD字段的内容是11,它选择寄存器寻址模式。寄存器寻址用R/M字段指定一个寄存器而不是存储单元。如果MOD字段的内容是00,01,10,R/M字段选择数据存储器寻址方式之一。当MOD字段选择了数据存储器寻址方式时,00表示寻址方式没有位移量,01表示包含8位符号扩展的位移量,10表示包含16位的位移量。比如MOV AL,[DI]指令没有使用位移量,MOV AL,[DI+2]指令用8位的位移量(+2),MOV AL,[DI+1000H]指令用16位的位移量(+1000H)。

如果是80386及以上处理器,MOD=01,表示8位的位移量,MOD=10,表示32位的位移量。

下表表示REG字段和R/M字段(MOD=11)寄存器的分配情况:

如果MOD字段是00,01或者10,则R/M按新的意义理解,编程寻址方式的定义。以下是16位寻址方式对应的R/M代码:

以下是32位寻址方式对应的R/M代码:

以上为常见机器码的相关格式,因x86属于复杂指令集,指令种类非常多,不是所有指令都符合这些规则,但是那些指令比较少用到,至少linux0.11内核里面基本没有用到。

以上信息来源于《intel微处理器结构、编程与接口》第六版。

这篇关于IA32体系结构3(x86机器码概述)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/733443

相关文章

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

Java 多线程概述

多线程技术概述   1.线程与进程 进程:内存中运行的应用程序,每个进程都拥有一个独立的内存空间。线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换、并发执行,一个进程最少有一个线程,线程实际数是在进程基础之上的进一步划分,一个进程启动之后,进程之中的若干执行路径又可以划分成若干个线程 2.线程的调度 分时调度:所有线程轮流使用CPU的使用权,平均分配时间抢占式调度

NGINX轻松管理10万长连接 --- 基于2GB内存的CentOS 6.5 x86-64

转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=190176&id=4234854 一 前言 当管理大量连接时,特别是只有少量活跃连接,NGINX有比较好的CPU和RAM利用率,如今是多终端保持在线的时代,更能让NGINX发挥这个优点。本文做一个简单测试,NGINX在一个普通PC虚拟机上维护100k的HTTP

java集合的概述

集合就是一个容器,我们可以把多个对象放入的容器中。就像水杯(假设容量可以不断扩大)一样,你可以往水杯中不断地添加水,既然是水杯,你就不能往里添加沙子,也就是说集合中添加的对象必须是同一个类型的(引用类型,而不能是基本类型)。 看到集合的介绍会让我们的想起数组,那么集合和数组有什么区别呢? 首先,数组的大小是固定的,而集合理论上大小是不限的。 其次,数组既可以存储基本数据类型的数据,也可以存储

【CSS in Depth 2 精译_023】第四章概述 + 4.1 Flexbox 布局的基本原理

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对单位的威力2.2 em 与 rem2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高2.6 自定义属性2.7 本章小结 第三章 文档流与盒模型(已

《计算机视觉工程师养成计划》 ·数字图像处理·数字图像处理特征·概述~

1 定义         从哲学角度看:特征是从事物当中抽象出来用于区别其他类别事物的属性集合,图像特征则是从图像中抽取出来用于区别其他类别图像的属性集合。         从获取方式看:图像特征是通过对图像进行测量或借助算法计算得到的一组表达特性集合的向量。 2 认识         有些特征是视觉直观感受到的自然特征,例如亮度、边缘轮廓、纹理、色彩等。         有些特征需要通

Unity Adressables 使用说明(一)概述

使用 Adressables 组织管理 Asset Addressables 包基于 Unity 的 AssetBundles 系统,并提供了一个用户界面来管理您的 AssetBundles。当您使一个资源可寻址(Addressable)时,您可以使用该资源的地址从任何地方加载它。无论资源是在本地应用程序中可用还是存储在远程内容分发网络上,Addressable 系统都会定位并返回该资源。 您