- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
手册,安全手册,使用手册,必备手册,实用手册,技术手册,培训手册,实习手册,速查手册,施工手册,教育手册,考核手册,操作手册,服务手册,工作手册,管理手册,学习手册,推行手册,应知应会手册,营运手册,用户手册,员工手册,知识手册,指导手册,质量手册,综合手册,各种手册,应有尽有。本文档支持完整下载,支持任意编辑!选择我,选择成功!
附录 A
操作码表1
使用该章节的操作码表来翻译基于IA-32和intel 64架构目标代码.指令被分为如下的编码组别:
用于编码整数,系统,MMX,SSE/SSE2/SSE3/SSSE3,以及VMX的单,双,三字节操作码指令.这些指令通过A-2至A-6表给出.
用于浮点操作的转义操作码指令(格式为:转义码(ESC character)+操作码(opcode)+ModR/M字节).这些指令通过A-7至A-22给出.
注:
表中的所有空白都属于保留的范围不能被使用.毋要依赖未定义的或者空白的
操作码.
A.1 使用操作码表
该附录中的表列出了指令对应的操作码(包括需要的指令前缀,以及ModR/M中的操作码扩展).表中空白的单元格即保留或未定义.
操作码表由十六进制数组织,高低4位表示一个操作码字节.单字节操作码(表A-2)通过高4位索引行,低4位索引列.以0F开始的双字节指令(表A-3)忽略掉所有的指令前缀,通过0Fh字节(可能有前导的66h,F2h,或者F3h)和下一字节的高4位索引行,低4位索引列.类似的,以0F38h或0F3Ah开始的3-字节指令(表A-4)忽略掉所有的指令前缀,通过0F38h或0F3Ah和第3字节的高4位索引行,低4位索引列.请查看第A.2.4节,“单,双,三字节操作码查找示例”.
当ModR/M字节含有操作码扩展时,该操作码扩展决定指令的具体操作.通过查看第A.4节了解表A-2, 表A-3中含有操作码扩展的部分.
含有转义码的浮点操作指令表通过每页的高8位定位.请查看第A.5节.若相应的ModR/M字节属于00h-BFh的范围,第3-5位(the top row of the third table on each page)以及ModR/M中的REG位确定操作码.而00h-BFh范围之外的操作码通过每页下部的两张表给出.
A.2 重要的缩写
操作数由两个字母即Zz的形式指定.第一个字母大写,指定寻址方式;第二个字母小写指定操作数的种类.
A.2.1 寻址方式编码
以下缩写用于记录寻址方式:
A (direct Address)直接寻址:指令没有ModR/M字节;操作数的地址直接编码于指令中;没有SIB字节.(如far JMP(EA))
EA1 jmp far 001BC (Control regs) ModR/M的reg域指定为控制寄存器(如MOV(0F20,0F22))
0F20C0 mov eax, cr0
D (Debug regs) ModR/M的reg域指定为调试寄存器(如MOV(0F21,0F23))
0F21C0 mov eax, dr0
E 操作码后跟随有一个ModR/M字节,操作数为通用寄存器(GPR—General-Purpose Register)或者一个内存地址.若为内存地址,该地址通过段寄存器和基寄存器﹑索引寄存器﹑比例因子,以及偏移量中的任意部分计算得出.
F (Flag regs) EFLAGS/RFLAGES寄存器
G (General-purpose regs) ModR/M为通用寄存器(如,AX(000))
I (Immediate data) 立即数:操作数的值被接下来的字节编码
J 指令中包含一个相对偏移量被加至指令指针寄存器(如JMP(0E9),LOOP)
M (Memory) ModR/M字节可能仅编码内存操作数(如BOUND,LES,LDS,LSS,LFS,LGS,CMPXCHG8B)
N ModR/M字节的reg域指定为紧缩四字的MMX寄存器(所谓“紧缩整形数据”是指多个8/16/32位的整形数据组合成为一个64位的数据紧缩字节(Packed Byte): 8个字节组合成一个64位的数据;紧缩字 (Packed Word): 4个字组合成一个64位的数据;紧缩双字(Packed Doubleword): 2个双字组合成一个64位的数据;紧缩4字 (Packed Quadword):一个64位数据
以下缩写用于记录操作数类型:
a 两个单字内存操作数或两个双字内存操作数,依据操作数尺寸属性决定(仅在BOUND指令中使用)
b 字节,不论操作数尺寸属性
c 字节或字,依据操作数尺寸属性决定
d 双字,不论操作数尺寸属性
dq 八字(Double-quadword),不论操作数尺寸属性
p 32位,48位或者80位指针,依据操作数尺寸属性决定
pd 128位紧缩双精度浮点数
pi 四字MMX寄存器(如mm0)
ps 128位紧缩单精度浮点数
q 四字操作数,不论操作数尺寸属性
s 6字节或10字节伪描述符(pseudo-descriptor)
ss
文档评论(0)