
X86汇编指令/机器码对照表
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
The X86 Assembly Instruction to Machine Code Correspondence Table
X86架构被广泛地应用于包括个人电脑在内的多种计算设备的微处理器设计中。基于自1974年发布以来的发展历程,X86架构在性能和功能上不断优化。这一核心设计理念始终未变。作为运行于Intel处理器的程序开发参考资料,本文档详细列出了X86汇编语句与其对应的具体二进制代码表示。本文重点分析了包括兼容机系列如45系列(如4014/4024)及Intel 386/Slewing等处理器型号。汇编语言属于一类基础的计算机编程工具,它是用助记符来表示机器指令的运行过程。这些助记符是人机交流的重要媒介,它们能够有效地将复杂的二进制代码转换为易于理解的操作步骤。在X86架构中,汇编指令与机器码之间存在一一对应的关系,在这种关系下,每个汇编指令至少对应一条特定的机器码指令序列。文档中说明的某些特定指令仅用于执行系统层面的任务。如处理页面表和段描述符这类任务,这些指令一般不被普通应用程序调用,而是由系统核心组件进行管理。文内提供的循环时间(cycletimes)属于估算值,仅用于比较不同指令之间的执行速度差异。实际运行时长可能因硬件配置和工作环境的具体条件而有所波动,因此建议开发者通过实验手段进行精确测量以获取准确数据。
在编码过程中,重要位置是关键。
- **x**代表一个无关紧要的位,其值可取0或1。
- **s**用于扩展操作数的符号位。当s为0时,操作数根据目标数值大小设置为16位或32位;若s设为1,则操作数定义为8位,并由CPU依据目标数值自动扩展至16位或32位。
- **rrr**等价于mod-reg-rm字节中的reg字段。
其他注意事项:相关内容需知部分
- **[disp]**:此字段可能包含0、1、2或4个字节长度,具体取决于指令的需求。
- **[imm]**:若操作码是8位或s域值为1,则该字段的长度将是1个字节。若s域值为0且目标操作码是16位或32位,那么该字段将包含2个或4个字节长度。
- **[mod-reg-rm]**:拥有[mod-reg-rm]个字节的指令可能会包含一个比例索引字节,如SIB,伴随有0、1、2或4个字节的位移。有关这部分指令编码的详细信息,请参考附录E。
该指令包含指定的操作数类型(寄存器或内存位置)时会使用相应的方向位进行操作。通过单一的方向位设置,该指令可对寄存器和内存位置的操作数进行区分处理。例如在MOV指令中,当源操作数来自寄存器时会执行不同操作。这些指令通常支持使用两个寄存器指定源操作数,并采用两种不同的编码模式以确定目标操作数的位置,具体选择则由x位的值决定。假设有一个基本的MOV指令,比如`mov ax, bx$`。该指令基于x位状态的变化,可采用两种不同的编码方案:第一种方式无需附加条件即可获取操作数,第二种则需先进行条件判断后再执行。值得注意的是,在所采用的指令集中,存在这种差异化编码的可能性。当低字节的第x位为0时,mod-rm字段中的数值会被识别为目标操作数。因此,在执行`mov ax, bx`指令时,ax会保留在mod-rm字段中而bx则会位于reg字段中。与此相对应地,当低字节的第x位为1时,来自reg字段的数据会被识别为目标操作数。因此,在同样的指令结构下,bx将被分配至mod-rm字段,并且ax则会保留在reg字段中。本文档详细列出了X86架构中汇编指令与其对应机器码的基本对比数据,能够帮助开发者深入理解并高效撰写汇编代码。通过了解并熟练运用这些指令的基本编码规范及功能特点,开发人员将更充分地发挥X86架构的优势,从而提升程序运行效率。
全部评论 (0)


