dfsbfs-tree
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with
39 additions and
0 deletions
-
Intel 手册中文版/卷一:基本架构.md
|
|
@ -143,22 +143,61 @@ CS , DS , SS 和 ES 这四个段寄存器与 Intel 8086 and Intel 286 处理器 |
|
|
|
|
|
|
|
## 4.1 FUNDAMENTAL DATA TYPES |
|
|
|
|
|
|
|
@翻译人:符宇舟Alex |
|
|
|
|
|
|
|
4.1 数据类型基础 |
|
|
|
|
|
|
|
基础的数据类型是字节,单字,双字,四字和双四字(见图 4-1 )。一个字节是8个比特,一个字是2个字节(16比特),一个双字是4个字节(32比特),一个四字是8个字节(64比特),以及一个双四字是16字节(128比特)。IA-32架构指令的一个子集在这些基本数据类型上进行操作,此外无需额外的操作数类型。 |
|
|
|
|
|
|
|
四字数据类型是在 Intel486 处理器的 IA-32 架构中引入的,双四字数据类型是在带有 SSE 扩展的 Pentium III 处理器中引入的。 |
|
|
|
|
|
|
|
图 4-2 显示了每个基本数据类型在作为内存中的操作数引用时的字节顺序。每种数据类型的低字节(第 0 位到第 7 位)占据内存中的最低地址,该地址也是操作数的地址。 |
|
|
|
|
|
|
|
|
|
|
|
### 4.1.1 Alignment of Words, Doublewords, Quadwords, and Double Quadwords |
|
|
|
|
|
|
|
@翻译人:符宇舟Alex |
|
|
|
|
|
|
|
4.1.1 字、双字、四字和双四字的对齐 |
|
|
|
|
|
|
|
字、双字和四字不需要在内存中自然边界对齐。字、双字和四字的自然边界分别是偶数地址、可被四整除的地址和可被八整除的地址。然而,为了提高程序的性能,数据结构(尤其是堆栈)应该尽可能在自然边界上对齐。这样做的原因是处理器需要两次内存访问才能进行未对齐的内存访问;对齐访问只需要一次内存访问。跨越 4 字节边界的字或双字操作数或跨越 8 字节边界的四字操作数被认为是未对齐的,需要两个单独的内存总线周期进行访问。 |
|
|
|
|
|
|
|
一些对双四字进行操作的指令要求内存操作数在自然边界上对齐。如果指定了未对齐的操作数,这些指令会生成通用保护异常 (#GP)。双四字的自然边界是任何可被 16 整除的地址。对双四字进行操作的其他指令允许未对齐访问(不会产生一般保护异常)。然而,需要额外的内存总线周期来访问内存中未对齐的数据。 |
|
|
|
|
|
|
|
## 4.2 NUMERIC DATA TYPES |
|
|
|
|
|
|
|
@翻译人:符宇舟Alex |
|
|
|
|
|
|
|
4.2 数字数据类型 |
|
|
|
|
|
|
|
字节、字和双字是基础的数据类型,但一些指令支持对这些数据类型的附加解释,以允许对数字数据类型(有符和无符整数以及浮点数)执行操作。所有代的 SSE 扩展和英特尔 AVX 扩展都支持单精度(32 位)浮点和双精度(64 位)浮点数据类型。只有 F16C 扩展(VCVTPH2PS、VCVTPS2PH)支持半精度(16 位)浮点数据类型。参见图 4-3。 |
|
|
|
|
|
|
|
### 4.2.1 Integers |
|
|
|
|
|
|
|
4.2.1 整型 |
|
|
|
|
|
|
|
Intel 64 和 IA-32 架构定义了两种类型的整数:无符和有符。无符整数是范围从 0 到可以以所选操作数大小编码的最大正数的普通二进制值。有符整型是二进制补码,可用于表示正整数和负整数值。 |
|
|
|
|
|
|
|
一些整数指令(例如 ADD、SUB、PADDB 和 PSUBB 指令)对无符或有符整型操作数进行操作。其他整数指令(例如 IMUL、MUL、IDIV、DIV、FIADD 和 FISUB)仅对一种整数类型进行操作。 |
|
|
|
|
|
|
|
以下小节会描述两种类型整数的编码和范围。 |
|
|
|
|
|
|
|
#### 4.2.1.1 Unsigned Integers |
|
|
|
|
|
|
|
@翻译人:符宇舟Alex |
|
|
|
|
|
|
|
4.2.1.1 无符整型 |
|
|
|
|
|
|
|
无符整型是包含在字节、字、双字和四字中的无符二进制数。 |
|
|
|
|
|
|
|
#### 4.2.1.2 Signed Integers |
|
|
|
|
|
|
|
@翻译人:符宇舟Alex |
|
|
|
|
|
|
|
4.2.1.2 有符整型 |
|
|
|
|
|
|
|
有符整型是保存在字节、字、双字或四字中的有符二进制数。对有符整型的所有运算都采用二进制补码表示。符号位位于字节整数的第 7 位、字整数的第 15 位、双字整数的第 31 位和四字整数的第 63 位(参见表 4-1 中的有符整型编码)。 |
|
|
|
|
|
|
|
|
|
|
|
# 第五章 Instruction Set Summary |
|
|
|
|
|
|
|