|
|
@ -86,7 +86,39 @@ |
|
|
|
``` |
|
|
|
## 1.2 概览 |
|
|
|
|
|
|
|
## 1.3 |
|
|
|
@翻译人:xushunke |
|
|
|
|
|
|
|
此手册的概述内容如下: |
|
|
|
__第一章 - 关于此手册。__ 给出全五册《Intel® 64 和 IA-32 架构软件开发者手册》的简要描述。同时介绍了在这几卷中会出现的标记习惯,关联的 Intel® 手册以及来自开发者们和硬件设计者们的关联文章。 |
|
|
|
__第二章 - Intel® 64 和 IA-32 架构。__ 介绍 Intel 64 和 IA-32 架构以及基于此架构的 Intel 处理器家族。同时列出这些处理器的公共特性以及给出 Intel 64 和 IA-32 架构的简要历史介绍。 |
|
|
|
__第三章 - 基本执行环境。__ 介绍内存组织模型以及介绍被应用所使用的寄存器集合。 |
|
|
|
__第四章 - 数据类型。__ 描述被处理器所识别的数据模型和关联模型;提供关于实数与浮点格式和浮点异常的概述。 |
|
|
|
__第五章 - 指令集汇总。__ 列出所有 Intel 64 和 IA-32 指令,根据技术类别分组。 |
|
|
|
__第六章 - 过程调用,中断与异常。__ 描述过程调用栈的原理以及进行过程调用,产生中断和抛出异常的机制。 |
|
|
|
__第七章 - 使用通用指令编程。__ 描述基本的加载和写入,程序控制,算数以及作用于基础数据类型的字符串指令和面向通用目的的段寄存器;同时描述了在保护模式可调用的系统指令。 |
|
|
|
__第八章 - 使用 x87 FPU 编程。__ 描述了 x87 浮点单元(FPU),包括其中的浮点寄存器和数据类型;列出所有浮点指令集以及描述处理器产生浮点异常的条件。 |
|
|
|
__第九章 - 使用 Intel® MMX 技术编程。__ 描述 Intel MMX 技术,其中包含 MMX 寄存器和数据类型;同时列出所有的 MMX 指令集。 |
|
|
|
__第十章 - 使用 Intel® 流式 SIMD 扩展(Intel® SSR)编程。__ 描述 SSE 扩展,其中包含 XXM 寄存器,MXCSR 寄存器以及编码的单精度浮点数据类型;列出所有 SSE 指令集以及给出书写访问 SSE 扩展的代码的准则。 |
|
|
|
__第十一章 - 使用 Intel® 流式 SIMD 二代扩展(Intel® SSR2)编程。__ 描述 SSE2 扩展,其中包含 XXM 寄存器和编码的双精度浮点数据类型;列出所有的 SSE2 指令集以及给出书写访问 SSE2 扩展的代码的准则。 本章同时也描述了 SSE 和 SSE2 指令可能产生的 SIMD 浮点异常。也提供了在操作系统中和应用代码中使用 SSE 和 SSE2 扩展的通常准则。 |
|
|
|
__第十二章 - 使用 Intel® 流式 SIMD 三代扩展(Intel® SSR3),补充 Intel® 流式 SIMD 三代扩展(Intel® SSSR3),Intel® 流式 SIMD 四代扩展(Intel® SSR4)和 Intel® AES 新指令集(Intel® AES-NI)编程。__ 列出所有 SSE3,补充 SSE3,SSE4,AESNI 指令集以及书写访问这些扩展的代码的准则。 |
|
|
|
__第十三章 - 使用 XSAVE 特性集来管理状态。__ 描述 XSAVE 特性集指令,介绍了软件是如何开启 XSAVE 特性集以及开启 XSAVE 后的会带来的特性。 |
|
|
|
__第十四章 - 使用 AVX,FMA 和 AVX2 编程。__ 介绍 Intel® AVX 指令集,FMA 和 AVX2 扩展以及给出书写访问这些扩展的的代码的准则。 |
|
|
|
__第十五章 - 使用 Intel® AVX-512 编程。__ 介绍 Intel® AVX-512 指令集扩展和给出书写访问这些扩展的代码的准则。 |
|
|
|
__第十六章 - 使用 Intel 事务同步扩展编程。__ 描述通过销锁技术来提升多线程软件竞争线程锁的性能的指令集扩展。 |
|
|
|
__第十七章 - Intel® 内存保护扩展。__ 描述 Intel® 内存保护扩展和给出书写访问这些扩展的代码的准则。 |
|
|
|
__第十八章 - 控制流执行技术。__ 描述控制流执行技术(CET)以及给出访问这些扩展的的代码的准则。 |
|
|
|
__第十九章 - 输入/输出。__ 描述处理接的 I/O 机制,其中包含 I/O 端口地址,I/O 指令和 I/O 保护机制。 |
|
|
|
__第二十章 - 处理器识别与特性判别。__ 描述如何判别 CPU 类型和识别处理器中可用的特性的方法。 |
|
|
|
__附录A - EFLAGS 交叉引用。__ 汇总描述了 IA-32 指令是如何影响 EFLAGS 里面的标记的。 |
|
|
|
__附录B - EFLAGS 条件码。__ 汇总描述了 _条件跳转(condition jump)_ ,_转移(move)_ 以及 _'byte set on condition code'_ 指令是如何使用 EFLAGS 寄存器中的条件码标记(OF,CF,ZF,SF和PF)的。 |
|
|
|
__附录C - 浮点异常汇总。__ 汇总描述了异常是如何被 x87 浮点单元的浮点指令和 SSE/SSE2/SSE3 浮点指令所抛出的。 |
|
|
|
__附录D - 书写 SIMD 浮点异常句柄的准则。__ 给出了书写由 SSE/SSE2/SSE3 浮点指令所产生的异常处理句柄的代码的准则。 |
|
|
|
|
|
|
|
## 1.3 标记习惯 |
|
|
|
|
|
|
|
@翻译人:xushunke |
|
|
|
|
|
|
|
此手册中为数据结构格式,指令的符号,十六进制与二进制的数字做了特定标记。这些标记将在下方说明。 |
|
|
|
|
|
|
|
### 1.3.1 位和字节序 |
|
|
|
|
|
|
@ -171,6 +203,7 @@ Intel 和 IA-32 处理器都是采用“little endian(小端)”方式存储 |
|
|
|
\#GP(0) |
|
|
|
|
|
|
|
# 第二章 Intel 64 and IA-32 Architectures |
|
|
|
|
|
|
|
## 2.1 INTEL® 64 与 IA-32 架构的简要历史 |
|
|
|
|
|
|
|
以下章节提供了从 IA-32 到 Intel 64 架构的主要技术演进的摘要:从 Intel 8086 处理器开始到最新的 Intel®Core®2Duo,Core 2 Quad 和 Intel Xeon 处理器 5300 和 7300 系列。1978 年以前发布的处理器创建的对象代码仍然在 Inter 64 和 IA-32 架构系列中的最新处理器上运行着。 |
|
|
@ -226,6 +259,8 @@ Intel Pentium processor 的引入增加了第二个执行管道(execution pipe |
|
|
|
|
|
|
|
参见 2.2.7 节, “SIMD 指令”。(Todo link) |
|
|
|
|
|
|
|
### 2.1.6 - 2.1.22 |
|
|
|
[@翻译人:zhangkai803](https://github.com/zhangkai803) |
|
|
|
|
|
|
|
# 第三章 Basic Execution Environment |
|
|
|
## 3.1 操作模式 |
|
|
@ -260,8 +295,8 @@ Intel 64 架构增加了 IA-32E 模式。IA-32E 模式有两个子模式。他 |
|
|
|
|
|
|
|
## 3.4 BASIC PROGRAM EXECUTION REGISTERS |
|
|
|
|
|
|
|
|
|
|
|
### 3.4.2 段寄存器 |
|
|
|
|
|
|
|
@翻译人:墨 |
|
|
|
|
|
|
|
段寄存器控制(代码段寄存器,数据段寄存器,堆栈段寄存器,扩展段寄存器,标志段寄存器,全局段寄存器)16 位的段选择子。段选择子是一种特殊的指针,用来标识内存中的段。为了访问内存中特定的段,该段的段选择子必须存在于适当的段寄存器中。 |
|
|
@ -299,6 +334,25 @@ CS , DS , SS 和 ES 这四个段寄存器与 Intel 8086 and Intel 286 处理器 |
|
|
|
|
|
|
|
# 第四章 Data Types |
|
|
|
|
|
|
|
## 4.1 FUNDAMENTAL DATA TYPES |
|
|
|
|
|
|
|
### 4.1.1 Alignment of Words, Doublewords, Quadwords, and Double Quadwords |
|
|
|
|
|
|
|
@翻译人:符宇舟Alex |
|
|
|
|
|
|
|
## 4.2 NUMERIC DATA TYPES |
|
|
|
|
|
|
|
### 4.2.1 Integers |
|
|
|
|
|
|
|
#### 4.2.1.1 Unsigned Integers |
|
|
|
|
|
|
|
@翻译人:符宇舟Alex |
|
|
|
|
|
|
|
#### 4.2.1.2 Signed Integers |
|
|
|
|
|
|
|
@翻译人:符宇舟Alex |
|
|
|
|
|
|
|
|
|
|
|
# 第五章 Instruction Set Summary |
|
|
|
|
|
|
|
# 第六章 Procedure Calls, Interrupts, and Exceptions |
|
|
|