intel指令手册2.1节中文.pdf

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

保护模式、实地址模式及V8086模式下的指令格式(上) 来源:misterliwei 的博客/misterliwei/article/details/5550452 本文译自《intel指令手册2.1节》,该手册地址为: /products/processor/manuals/index.htm Intel64和IA32架构的指令编码格式是图2-1格式的子集。指令有这几个部分组成:可选的指 令前缀(顺序不限)、主操作码字节(最多3个字节)以及寻址方式说明(addressing-form specifier)字节(如果需要的话)。寻址方式说明由ModR/ 字节、SIB字节、位移量(如 果需要的话)和立即数(如果需要的话)组成。 图2-1Intel64和IA-32架构指令格式 2.1.1 指令前缀 指令前缀分成四块,每块都有一组前缀代码。对于每个指令来说,四块中每块只能使用一个 前缀。这四块的前缀的顺序是不限定的。 •第一块 —锁前缀和重复前缀: •LOCK锁前缀代码为F0H •REPNE/REPNZ前缀代码为F2H。该前缀仅用于字符串和输入/输出指令(F2H在某些指令 中还被用作强制前缀(mandatoryprefix)). •REP或者REPE/REPZ前缀代码为F3H。该前缀仅用于字符串和输入/输出指令(F3H在 某些指令中还被用作强制前缀). •第二块 —段超越前缀 •2EH——CS段超越(在分支指令中使用未定义) •36H——SS段超越(在分支指令中使用未定义) •3EH——DS段超越(在分支指令中使用未定义) •26H——ES段超越(在分支指令中使用未定义) •64H——FS段超越(在分支指令中使用未定义) •65H——GS段超越(在分支指令中使用未定义) —分支预测(branchhints)前缀 •2EH——分支被使用(只用于条件转移JCC指令) •3EH——分支不被使用(只用于条件转移JCC指令) • 第三块 •调整操作数大小(operand-sizeoverride)前缀代码为66H(在一些指令中66H被用作强制前 缀) • 第四块 •67H——调整地址大小(address-sizeoverride)前缀 锁前缀(F0H)在多处理器情况下会迫使一个操作必须互斥地使用共享内存。(详见 《“InstructionSetReference,A-M,”》第三章 “LOCK—Assert LOCK#SignalPrefix”) 重复前缀(F2H,F3H)会使指令对字符串中的每一个元素都重复执行。该前缀只在字符串 和I/O指令(MOVS,CMPS,SCAS,LODS,STOS,INS,OUTS)中使用。在其他未定义的操作码 前使用重复前缀没有定义,这种使用会导致不可预见的后果。 一些指令会将F2H/F3H作为强制前缀来表示不同的功能(expressdistinctfunctionality)。 强制前缀通常应置于其他可选前缀后面(例外情况在2.2.1 “REXPrefixes”中讨论)。 分支预测前缀(2EH,3EH)允许程序预测一个分支最有可能的路径。此前缀只在条件转移 指令 (JCC)中使用。在其他未定义的操作码前使用分支预测前缀没有定义,这种使用会导 致不可预见的后果。 调整操作数大小前缀(66H)允许程序在16位和32位操作数之间切换操作数。这两种大小 都可以作为缺省值,使用本前缀可以切换为非缺省的那个大小值。 一些SSE2/SSE3/SSSE3/SSE4指令和主操作码为3字节的指令可能会将66H作为强制前缀 来表示不同的功能。强制前缀通常应置于其他可选前缀后面(例外情况在2.2.1 “REX Prefixes”中讨论)。 66H前缀的其他使用保留,如果使用可能会导致不可预见的后果。 调整地址大小前缀(67H)允许程序在16位和32位地址之间切换。这两种大小都可以作为 缺省值,使用本前缀可以切换为非缺省的那个大小值。当指令的操作数是内存中不存在时, 使用该前缀和/或者未定义的操作码是未定义的,这种使用会导致不可预见的后果。 . 2.1.2 操作码 主操作码可以是1个,2个或3个字节长。有时会有另外的3位操作码存在于ModR/ 字节中。 主操作码中还可以为定义更小的段(fields),比如操作方向、位移量 (displacements)大小、 寄存器编码、条件码(conditioncodes)或者符号扩展(signextension)。操作码中的段随操作 的类型不同而有很大的不同。 通用指令和SIMD指令的2个字节的操作码格式组成如下: •一个逃逸码

文档评论(0)

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

教师资格证持证人

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

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档