IA-32和Intel 64架构目标代码操作码详解与翻译
需积分: 10 48 浏览量
更新于2024-07-28
收藏 1.35MB DOC 举报
本资源主要关注的是基于IA-32和Intel 64架构的目标代码翻译指南。IA-32和Intel 64是英特尔公司开发的两种不同的处理器架构,IA-32代表32位的Intel Architecture,Intel 64则是64位的扩展。在编写针对这两种架构的程序时,理解其特定的操作码体系至关重要。
附录A提供了详细的操作码表,用于指导程序员如何将源代码转换为目标代码。操作码被分类为两类:
1. 整数、系统、MMX、SSE/SSE2/SSE3/SSSE3以及VMX指令:这些是一字节、二字节和三字节的指令,用于执行各种算术和逻辑运算。它们分别在表A-2到A-6中列出,包括单字节、双字节和可能带有前缀的指令。
2. 浮点操作的转义操作码指令:这些指令采用转义字符加上操作码和ModR/M字节的格式,存在于表A-7至A-22。浮点操作码通常通过每页的高位来定位,具体取决于页面的布局。
在使用这些表时,需要注意以下几点:
- 表格中的空白区域表示保留位,不得使用。开发者不应依赖未定义的操作码。
- 操作码以十六进制形式表示,高位4位代表一个操作码字节。单字节指令(A-2)通过行和列的低4位索引来查找。双字节指令(A-3)则忽略前缀,通过0Fh字节和下一个字节的高位来定位。同样,三字节指令(A-4)通过0F38h或0F3Ah加上第三字节的高位来查找。
- ModR/M字节中的操作码扩展对指令的具体功能有影响,需参考A.4节来理解。
- 缩写如Zz用于表示操作数,其中第一个字母表示寻址方式,第二个字母表示操作数类型。例如,A表示直接寻址,C用于ModR/M寄存器位。
此外,对于某些ModR/M字节的编码,如果在00h-BFh范围内,操作码由页的第三表格顶部的三位和ModR/M中的REG位决定。而对于00h-BFh范围之外的操作码,需要参考页的底部表格。
为了正确处理操作码,A.2.4节提供了单字节、双字节和三字节操作码查找的示例。理解和遵循这些规则将有助于程序员在不同架构上编写高效且兼容的代码。
本资源提供了实现跨IA-32和Intel 64架构代码互译的关键信息,是硬件开发者和优化工程师必备的技术参考资料。
2023-12-28 上传
2017-11-13 上传
2023-07-11 上传
2023-07-09 上传
2023-10-28 上传
2023-06-11 上传
2023-05-12 上传
2023-09-11 上传
2023-05-14 上传
crazyvoice
- 粉丝: 147
- 资源: 26
最新资源
- 明日知道社区问答系统设计与实现-SSM框架java源码分享
- Unity3D粒子特效包:闪电效果体验报告
- Windows64位Python3.7安装Twisted库指南
- HTMLJS应用程序:多词典阿拉伯语词根检索
- 光纤通信课后习题答案解析及文件资源
- swdogen: 自动扫描源码生成 Swagger 文档的工具
- GD32F10系列芯片Keil IDE下载算法配置指南
- C++实现Emscripten版本的3D俄罗斯方块游戏
- 期末复习必备:全面数据结构课件资料
- WordPress媒体占位符插件:优化开发中的图像占位体验
- 完整扑克牌资源集-55张图片压缩包下载
- 开发轻量级时事通讯活动管理RESTful应用程序
- 长城特固618对讲机写频软件使用指南
- Memry粤语学习工具:开源应用助力记忆提升
- JMC 8.0.0版本发布,支持JDK 1.8及64位系统
- Python看图猜成语游戏源码发布