32-bit Instruction Format

从80386的指令格式可以看出,32位指令的操作码可以是1个字节或者2个字节,还新引入了SIB(即BYTE4)字节。地址位移量和操作数宽度也都升级为32比特位长。

下图来自于Pentium Pro的PRM,严格意义来讲,指令前缀并不是指令的一部分,真正的指令总是从操作码字节开始。在Pentium Pro处理器上,操作码依然是1个或2个字节。

下图来自Intel SDM Vol2(Order#: 253666-020),虽然也是IA32指令格式,最主要的一个变化就是操作码变成了1个,2个或者3个字节。

注:3字节操作码的介绍是从Order: 253667-019附录引入的。这之前的文档都只介绍1字节和2字节操作码。

一条IA指令都是有上图指令格式中的一个子集组合而成的,包括指令前缀,指令操作码,寻址格式指示字节(包括ModR/M字节和SIB字节),位移量字节和立即数字节。只要操作码字节是必需的,其他的字节都是根据指令或程序的需要可选或者要求的。具体如下:

  1. 指令前缀 – 可选的,每个指令前缀占1个字节,最多4字节,即最多可以按任意顺序指定4种不同的指令前缀。所有的指令前缀总共可以分成4组,每条指令前的前缀只能从这4组中各选择1个。换句话说,不能从某一组中选择两个放在一条指令前,对于这样的(奇怪)指令,执行的效果是无定义的,各代处理器的处理方式可能各不相同。
  2. 指令操作码 – 必需的,1个或2个字节。有一些指令可以有多个不同的操作码,每个操作码指示指令的一种格式。
  3. 寻址格式字节 – 按需设置,包括1个ModR/M字节和1个SIB字节,根据指令的格式要求或有或无。
  4. 位移量字节 – 按需设置,可以没有,或者1个,2个或4个字节,存储在指令中。
  5. 立即数字节 – 按需设置,可以没有,或者1个,2个或4个字节,存储在指令中

Intel 64/x86_64/IA-32/x86处理器 - 指令格式(7) - 80386/32位指令格式概述相关推荐

  1. Intel 64/x86_64/IA-32/x86处理器基本执行环境 (1) - 32位执行环境概述

    Basic Execution Environment Overview IA-32处理器提供了一套完整的资源,在处理器上运行的程序/任务可以执行指令,存储代码,数据以及状态信息.这些资源(如下简要的 ...

  2. Intel 64/x86_64/x86/IA-32处理器标志寄存器详解(3) - 32位EFLAGS - 概述

    32位标志寄存器中的标志位/域可以分成3组:状态标志位,控制标志位,以及系统标志位.下图定义了这些标志位以及对应的比特位编号.在处理器刚刚初始化之后(通过激活RESET引脚或者INIT引脚),EFLA ...

  3. Intel 64/x86_64/IA-32/x86处理器 - 指令格式(9) - 64位指令格式(通用格式)

    64-bit Instruction Format 基本上与32位指令格式相同,只是各字节宽度有所变化.

  4. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(1) - 概述/历史/新数据类型/XMM寄存器组

    SSE Instructions SSE Overview & History Intel SSE技术的全称是Streaming SIMD Extension,中文译作流式单指令多数据指令扩展 ...

  5. Intel 64/x86_64/IA-32/x86处理器 - 锁原子操作(2) - 总线封锁/缓存封锁

    Bus Locking Intel 64和IA-32处理器提供了LOCK#信号,在某些关键的访存操作时会自动地激活assert这个信号,用于封锁系统总线或类似的链接.当这个输出信号被激活时,就会阻塞来 ...

  6. Intel 64/x86_64/IA-32/x86处理器 - 锁原子操作(1) - 处理器保证的原子操作

    Locked Atomic Operations 32位的IA-32处理器支持对系统内存中的位置执行"加锁的原子操作".这些操作通常用于管理共享的数据结构(例如信号量,段描述符,系 ...

  7. Intel 64/x86_64/x86/IA-32处理器操作模式/运行模式

    Processor Operation Mode IA-32架构支持3种操作模式,和一种类操作模式(quasi-operating mode): 实地址模式/实模式(real-address mode ...

  8. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - MMX技术(1) - 概述 传输指令

    MMX™ Instructions IA-32架构引入了4个指令集扩展,使得IA-32处理器可以执行单指令多数据SIMD操作.这些扩展包括MMX技术,SSE扩展,SSE2扩展,SSE3扩展. MMX指 ...

  9. Intel 64/x86_64/IA-32/x86处理器 - 通用指令(1) - 数据传输指令

    General-Purpose Instructions 通用指令执行基本的数据搬移,算术/逻辑计算,程序流控制,字符串操作等.这些指令被频繁地用于运行在IA-32与Intel 64架构的系统软件与应 ...

  10. Intel 64/x86_64/IA-32/x86处理器指令集 - CPUID (1) - 概述

    CPUID指令 Introduction of CPUID instruction 根据Wikipedia,CPUID指令是x86处理器体系结构的补充指令,使得软件可以枚举当前运行的处理器的详细特性, ...

最新文章

  1. Android 自定义View (入门 篇) 的使用
  2. R语言主成分分析PCA和因子分析EFA、主成分(因子)个数、主成分(因子)得分、主成分(因子)旋转(正交旋转、斜交旋转)、主成分(因子)解释
  3. 洛谷P4501/loj#2529 [ZJOI2018]胖(ST表+二分)
  4. Akka(9): 分布式运算:Remoting-远程构建式
  5. win10 iot core java_Windows 10 IoT Core 正式版初体验
  6. 作者:姚阳(1979-),女,广州市社会科学院经济学副研究员。
  7. PHP 国家电话区号 PHP Countries and their call codes with two letter abbreviations
  8. java 快速框架下载_Aria:简单易用、高效的下载框架(Java)
  9. 计算机安装微信打不开,微信电脑版打不开怎么办?解决办法如下
  10. JSP旅游景点网站系统myeclipse开发计算机程序web结构java编程网页源码
  11. 计算机上机考试的系统,计算机上机考试系统
  12. Notepad++的列编辑模式_小技巧
  13. 如何利用福禄克OFP2-100-Q CH测试光纤的熔接损耗
  14. Pytho中list去除重复项
  15. Python小记(一):import和from。。。import区别?
  16. C#中汉字排序简单示例(拼音/笔划)
  17. 1v1对战答题小程序
  18. 世界上没有哪一份工作是不受气的,哪怕是老板,也会有受气的时候
  19. Python学习 Day31 JS类数组对象
  20. 盒图(N-S图)级相关例子

热门文章

  1. Ubuntu18.04系统快速下载Github代码
  2. 基于汇编语言及Proteus仿真的CPU8086水库水位监视系统
  3. 【java基础知识】编写数据库连接池
  4. 使用HTTPS方式向git托管网站推送项目时输错用户名密码
  5. mysql返回值_mysql_query的返回值
  6. 计算机语言学家,著名计算语言学家冯志伟为人文学院师生作专题讲座
  7. 用linux命令清空文件夹,技能包!Linux 下清空或删除大文件内容的 5 种方法
  8. JAVA服务器没回应_Java Socket为什么服务器无法回复客户端
  9. HTML搜索框中加入提示文字,HTML 5 input placeholder 属性 实现搜索框提示文字点击输入后消失 - 尚码园...
  10. kafka启动命令_Kafka入门