Intel 64/x86_64/IA-32/x86处理器 - 指令格式(7) - 80386/32位指令格式概述
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个字节,最多4字节,即最多可以按任意顺序指定4种不同的指令前缀。所有的指令前缀总共可以分成4组,每条指令前的前缀只能从这4组中各选择1个。换句话说,不能从某一组中选择两个放在一条指令前,对于这样的(奇怪)指令,执行的效果是无定义的,各代处理器的处理方式可能各不相同。
- 指令操作码 – 必需的,1个或2个字节。有一些指令可以有多个不同的操作码,每个操作码指示指令的一种格式。
- 寻址格式字节 – 按需设置,包括1个ModR/M字节和1个SIB字节,根据指令的格式要求或有或无。
- 位移量字节 – 按需设置,可以没有,或者1个,2个或4个字节,存储在指令中。
- 立即数字节 – 按需设置,可以没有,或者1个,2个或4个字节,存储在指令中
Intel 64/x86_64/IA-32/x86处理器 - 指令格式(7) - 80386/32位指令格式概述相关推荐
- Intel 64/x86_64/IA-32/x86处理器基本执行环境 (1) - 32位执行环境概述
Basic Execution Environment Overview IA-32处理器提供了一套完整的资源,在处理器上运行的程序/任务可以执行指令,存储代码,数据以及状态信息.这些资源(如下简要的 ...
- Intel 64/x86_64/x86/IA-32处理器标志寄存器详解(3) - 32位EFLAGS - 概述
32位标志寄存器中的标志位/域可以分成3组:状态标志位,控制标志位,以及系统标志位.下图定义了这些标志位以及对应的比特位编号.在处理器刚刚初始化之后(通过激活RESET引脚或者INIT引脚),EFLA ...
- Intel 64/x86_64/IA-32/x86处理器 - 指令格式(9) - 64位指令格式(通用格式)
64-bit Instruction Format 基本上与32位指令格式相同,只是各字节宽度有所变化.
- Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(1) - 概述/历史/新数据类型/XMM寄存器组
SSE Instructions SSE Overview & History Intel SSE技术的全称是Streaming SIMD Extension,中文译作流式单指令多数据指令扩展 ...
- Intel 64/x86_64/IA-32/x86处理器 - 锁原子操作(2) - 总线封锁/缓存封锁
Bus Locking Intel 64和IA-32处理器提供了LOCK#信号,在某些关键的访存操作时会自动地激活assert这个信号,用于封锁系统总线或类似的链接.当这个输出信号被激活时,就会阻塞来 ...
- Intel 64/x86_64/IA-32/x86处理器 - 锁原子操作(1) - 处理器保证的原子操作
Locked Atomic Operations 32位的IA-32处理器支持对系统内存中的位置执行"加锁的原子操作".这些操作通常用于管理共享的数据结构(例如信号量,段描述符,系 ...
- Intel 64/x86_64/x86/IA-32处理器操作模式/运行模式
Processor Operation Mode IA-32架构支持3种操作模式,和一种类操作模式(quasi-operating mode): 实地址模式/实模式(real-address mode ...
- Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - MMX技术(1) - 概述 传输指令
MMX™ Instructions IA-32架构引入了4个指令集扩展,使得IA-32处理器可以执行单指令多数据SIMD操作.这些扩展包括MMX技术,SSE扩展,SSE2扩展,SSE3扩展. MMX指 ...
- Intel 64/x86_64/IA-32/x86处理器 - 通用指令(1) - 数据传输指令
General-Purpose Instructions 通用指令执行基本的数据搬移,算术/逻辑计算,程序流控制,字符串操作等.这些指令被频繁地用于运行在IA-32与Intel 64架构的系统软件与应 ...
- Intel 64/x86_64/IA-32/x86处理器指令集 - CPUID (1) - 概述
CPUID指令 Introduction of CPUID instruction 根据Wikipedia,CPUID指令是x86处理器体系结构的补充指令,使得软件可以枚举当前运行的处理器的详细特性, ...
最新文章
- Android 自定义View (入门 篇) 的使用
- R语言主成分分析PCA和因子分析EFA、主成分(因子)个数、主成分(因子)得分、主成分(因子)旋转(正交旋转、斜交旋转)、主成分(因子)解释
- 洛谷P4501/loj#2529 [ZJOI2018]胖(ST表+二分)
- Akka(9): 分布式运算:Remoting-远程构建式
- win10 iot core java_Windows 10 IoT Core 正式版初体验
- 作者:姚阳(1979-),女,广州市社会科学院经济学副研究员。
- PHP 国家电话区号 PHP Countries and their call codes with two letter abbreviations
- java 快速框架下载_Aria:简单易用、高效的下载框架(Java)
- 计算机安装微信打不开,微信电脑版打不开怎么办?解决办法如下
- JSP旅游景点网站系统myeclipse开发计算机程序web结构java编程网页源码
- 计算机上机考试的系统,计算机上机考试系统
- Notepad++的列编辑模式_小技巧
- 如何利用福禄克OFP2-100-Q CH测试光纤的熔接损耗
- Pytho中list去除重复项
- Python小记(一):import和from。。。import区别?
- C#中汉字排序简单示例(拼音/笔划)
- 1v1对战答题小程序
- 世界上没有哪一份工作是不受气的,哪怕是老板,也会有受气的时候
- Python学习 Day31 JS类数组对象
- 盒图(N-S图)级相关例子
热门文章
- Ubuntu18.04系统快速下载Github代码
- 基于汇编语言及Proteus仿真的CPU8086水库水位监视系统
- 【java基础知识】编写数据库连接池
- 使用HTTPS方式向git托管网站推送项目时输错用户名密码
- mysql返回值_mysql_query的返回值
- 计算机语言学家,著名计算语言学家冯志伟为人文学院师生作专题讲座
- 用linux命令清空文件夹,技能包!Linux 下清空或删除大文件内容的 5 种方法
- JAVA服务器没回应_Java Socket为什么服务器无法回复客户端
- HTML搜索框中加入提示文字,HTML 5 input placeholder 属性 实现搜索框提示文字点击输入后消失 - 尚码园...
- kafka启动命令_Kafka入门