网站大量收购独家精品文档,联系QQ:2885784924

IA32开发手册第二卷的附录B.doc

  1. 1、本文档共114页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
IA32开发手册第二卷的附录B

附录 B 指令格式及编码 该附录介绍IA-32机器指令格式与编码.第一节描述基于IA-32架构机器指令格式.其余的小节介绍通用,MMX,P6系列,SSE/SSE2/SSE3,x87 FPU以及VMX指令.这些指令格式同样适用于Intel 64架构,64位环境下使用的指令格式是以上指令格式的一个超集. B.1 机器指令格式 所有基于Intel架构的指令使用如图B-1所示通用机器指令格式的一个子集.每条指令由以下部分组成: ? 操作码 ? 由ModR/M有时候也有SIB(Scale-index-base)字节指定的寄存器和/或地址, 如果需要的话 ? 偏移量和立即数域,如果需要的话 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 传统前缀 REX 前缀 T T T T T T T T T T T T T T T T T T T T T T T T 组 1, 2, 3, 4 (可选)  1, 2, 或 3 字节操作码 7-6 5-3 2-0 7-6 5-3 2-0 Mod Reg* R/M Scale Index Base d32 | 16 | 8 | 没有 d32 | 16 | 8 |没有 ModR/M 字节 SIB 字节 地址偏移 (4,2,1 或没有) 立即数 (4,2,1 或没有) 指定寄存器和/或地址 注: * Reg域可能被用作操作码扩展 图 B-1. 通用机器指令格式 以下的小节详细讨论该格式. B.1.1 传统前缀 图B-1所指的前缀包括66H,67H,F2H,F3H.它们都是可选的,除非F2H,F3H,66H等被用作新增的指令扩展.传统前缀必须位于REX前缀之前. 请查看《Intel? 64 和IA-32架构软件开发者手册 第2卷 A》第2章”指令格式”获取更多有关传统前缀的信息. B.1.2 REX 前缀 REX前缀由40H到4FH共16个操作码组成,正好占用操作码表的一行.这些操作码在32位及兼容模式下是合法的指令(INC或DEC);在64位模式中同样的操作码表现为REX前缀而不是单个的指令. 请查看《Intel? 64 和IA-32架构软件开发者手册 第2卷 A》第2章“指令格式”获取更多有关REX前缀的信息. B.1.3 操作码域 一条指令的主操作码被编码为一到三字节,这些字节一般会被分为更小的域,这些域依据指令执行的操作区分. 大多数使用一个寄存器和/或一个内存操作数的指令都有ModR/M字节.ModR/M字节由mod域(高2位),reg域(中间3位,该域有时表现为操作码扩展),和R/M域(低3位).特定的ModR/M字节指示接下来有一个SIB字节. 如果寻址方式需要一个偏移量,该偏移量紧接ModR/M或SIB字节出现,偏移量的大小可能为8位,16位,32位.若指令需要一个立即数, 该立即数紧挨着偏移量出现,立即数如果出现,它总是指令的的最后一个域. 请查看《Intel? 64 和IA-32架构软件开发者手册 第2卷 A》第2章“指令格式”获取更多关于操作码的信息. B.1.4 特殊的域 表B-1列出了在特定指令中可能出现的位域,有些位域可能位于操作码字节内部.这些域除了d位在表B-13列出的通用指令中都出现过.(在表B-13中,d被编码为实际的0或1值) 表 B-1. 指令编码中特殊的域 域名 描述 比特数 reg 指定通用寄存器 (请查看表 B-4 或表 B-5) 3 w 指定数据是字节尺寸或全尺寸(full-sized),全尺寸为16 或 32 位(请查看表 B-6) 1 s 指定立即数的符号扩展 (请查看表 B-7) 1 sreg2 指定段寄存器为 CS, SS, DS, ES (请查看表 B-8) 2 sreg3 指定段寄存器为 CS, SS, DS, ES, FS, GS (请查看表 B-8) 3 eee 指定控制和调试等专用寄存器 (请查看表 B-9) 3 tttn 用于条件指令 , 指定条件断言和否定 (请查看表 B-12) 4 d 指定数据操作的方向 (请查看表 Table B-11) 1 B.1.4.1 非64位模式的reg域 (reg) ModR/M字节的reg域用于指定一个通用寄存器操作数.寄存器的类型受w位的出现和状态影响(请查看第B.1.4.3节).表B-2列出了w位未出现时的编码情况;表B-3列出了w位出现时的情况. 表 B-2. w位未出现时reg域的编码 reg 域 16位数据操作时选择的寄存器 32位数据操作时选择的寄存器 000 001 010 011 100 101 110 111 AX CX DX

文档评论(0)

ayangjiayu3 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档