You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

9.0 KiB

翻译前先阅读整体规则的 README 哟~

目录

这里是目录,要有锚点链接。

第一章 关于本手册

@翻译人:闪客sun

本卷是讲述 Intel 64 和 IA-32 架构处理器体系结构和编程环境的一部分,其他卷分别是:

卷一描述了处理器的基本架构和编程环境;卷二描述了处理器的指令集和操作码(opcode)结构;卷三描述了处理器的操作系统支持环境,主要针对操作系统和 BIOS 的设计;卷四描述了处理器的 MSR 寄存器。

1.1 支持的处理器型号

本手册包含了最新的 Intel 64 和 IA-32 处理器,如下:

- Pentium® processorsP6 family processors
- Pentium® 4 processors
- Pentium® M processors
- Intel® Xeon® processors
- Pentium® D processors
- Pentium® processor Extreme Editions
- 64-bit Intel® Xeon® processors
- Intel® Core™ Duo processor
- Intel® Core™ Solo processor
- Dual-Core Intel® Xeon® processor LV
- Intel® Core™2 Duo processor
- Intel® Core™2 Quad processor Q6000 series
- Intel® Xeon® processor 3000, 3200 series
- Intel® Xeon® processor 5000 series
- Intel® Xeon® processor 5100, 5300 series
- Intel® Core™2 Extreme processor X7000 and X6800 series
- Intel® Core™2 Extreme processor QX6000 series
- Intel® Xeon® processor 7100 series1-2Vol. 1ABOUT THIS MANUAL
- Intel® Pentium® Dual-Core processor
- Intel® Xeon® processor 7200, 7300 series
- Intel® Xeon® processor 5200, 5400, 7400 series
- Intel® Core™2 Extreme processor QX9000 and X9000 series
- Intel® Core™2 Quad processor Q9000 series
- Intel® Core™2 Duo processor E8000, T9000 series
- Intel® Atom™ processor family
- Intel® Atom™ processors 200, 300, D400, D500, D2000, N200, N400, N2000, E2000, Z500, Z600, Z2000, C1000 series are built from 45 nm and 32 nm processes
- Intel® Core™ i7 processor
- Intel® Core™ i5 processor
- Intel® Xeon® processor E7-8800/4800/2800 product families 
- Intel® Core™ i7-3930K processor
- 2nd generation Intel® Core™ i7-2xxx, Intel® Core™ i5-2xxx, Intel® Core™ i3-2xxx processor series
- Intel® Xeon® processor E3-1200 product family
- Intel® Xeon® processor E5-2400/1400 product family
- Intel® Xeon® processor E5-4600/2600/1600 product family
- 3rd generation Intel® Core™ processors
- Intel® Xeon® processor E3-1200 v2 product family
- Intel® Xeon® processor E5-2400/1400 v2 product families
- Intel® Xeon® processor E5-4600/2600/1600 v2 product families
- Intel® Xeon® processor E7-8800/4800/2800 v2 product families
- 4th generation Intel® Core™ processors
- The Intel® Core™ M processor family 
- Intel® Core™ i7-59xx Processor Extreme Edition
- Intel® Core™ i7-49xx Processor Extreme Edition
- Intel® Xeon® processor E3-1200 v3 product family
- Intel® Xeon® processor E5-2600/1600 v3 product families
- 5th generation Intel® Core™ processors
- Intel® Xeon® processor D-1500 product family
- Intel® Xeon® processor E5 v4 family
- Intel® Atom™ processor X7-Z8000 and X5-Z8000 series
- Intel® Atom™ processor Z3400 series
- Intel® Atom™ processor Z3500 series
- 6th generation Intel® Core™ processors
- Intel® Xeon® processor E3-1500m v5 product family
- 7th generation Intel® Core™ processors
- Intel® Xeon Phi™ Processor 3200, 5200, 7200 Series 
- Intel® Xeon® Processor Scalable Family 
- 8th generation Intel® Core™ processors
- Intel® Xeon Phi™ Processor 7215, 7285, 7295 Series
- Intel® Xeon® E processors
- 9th generation Intel® Core™ processors
- 2nd generation Intel® Xeon® Processor Scalable Family Vol. 11-3ABOUT THIS MANUAL
- 10th generation Intel® Core™ processors
- 11th generation Intel® Core™ processors
- 3rd generation Intel® Xeon® Processor Scalable Family

1.2 概览

  • 第一章 关于本手册:xxx

第二章 Intel 64 and IA-32 Architectures

第三章 Basic Execution Environment

3.4 BASIC PROGRAM EXECUTION REGISTERS

3.4.2 段寄存器

段寄存器控制(代码段寄存器,数据段寄存器,堆栈段寄存器,扩展段寄存器,标志段寄存器,全局段寄存器)16 位的段选择器。段选择器是一种特殊的指针,用来标识内存中的段。为了访问内存中特定的段,该段的段选择器必须存在于适当的段寄存器中。
在编写应用代码的时候,程序员通常用汇编指令和标识符创建段选择器。汇编器和其他工具通过这些汇编指令和标识符创建实际的段选择器的值。如果编写系统代码,程序员需要直接创建段选择器。可以参考 Intel® 64 and IA-32 软件架构开发手册卷三的第三章:保护模式下的内存管理。
如何使用段寄存器取决于操作系统或执行器使用的内存管理模型。在平坦模型(未进行分段)下,段寄存器加载指向重叠段的段选择器,每个段都从线性地址空间的0地址处开始(见图 3-6 )。这些重叠

的段构成了程序的线性地址空间。通常定义两个重叠段:一个用于代码,另一个用于数据和堆栈。 CS 段寄存器指向代码段,其他所有段寄存器指向数据和堆栈段。 图3-6 使用分段内存模型时,每个段寄存器通常加载不同的段选择器,以便每个段选择器指向线性地址空间内的不同段(见图 3-7 )。因此在任何时候,程序最多可以访问线性地址空间中的六个段。要访问一个没有被任何段寄存器指向的段,程序必须先加载一个段选择器用来访问段寄存器。 图3-7 每个段寄存器都与以下三种存储类型相关联:代码,数据或堆栈。比如,CS寄存器包含代码段的段选择器,存储正在执行的指令。处理器从代码段中获取指令,使用的逻辑地址由CS寄存器中的段选择器和 EIP 寄存器的内容组成。 EIP 寄存器包含了代码段中下一条被执行的指令的偏移量。 CS 寄存器不能由应用程序显式加载。而是通过改变程序控制的指令或内部处理器操作隐式加载(比如过程调用,中断处理或任务切换)。 DS , ES , FS 和 GS 寄存器指向四个数据段。四个数据段可以安全有效的的访问不同类型的数据结构。比如创建四个独立的数据段:第一个用于当前模块的数据结构,第二个用于从高级模块导出的数据,第三个用于动态创建的结构体,第四个用于和其他程序的共享数据。为了访问额外的数据段,应用程序必须根据需要将这些段的段选择器加载到 DS , ES , FS 和 GS 寄存器中。 SS 寄存器包含了堆栈段的段选择器,当前正在执行的程序,任务或处理程序的过程堆栈都存储在这里。所有的堆栈操作都使用 SS 寄存器来查找堆栈。不像 CS 寄存器, SS 寄存器可以被显式加载,这允许应用程序建立多个堆栈并在它们之间切换。 参考 3.3 ,"内存组织",了解段寄存器如何在实模式下使用。 CS , DS , SS 和 ES 这四个段寄存器与 Intel 8086 and Intel 286 处理器中的段寄存器相同,而 FS 和 GS 寄存器通过 Intel386™ 系列处理器引入到 IA-32 结构中的。

3.4.2.1 64位模式下的段寄存器

在 64 位模式下:CS , DA , ES , SS 每个段基址被视为 0 ,而不管相关段描述符基址的值。这为代码,数据和堆栈创建了一个平坦地址空间。FS 和 GS 是例外。这两个段寄存器在计算线性地址时都可以作为附加基址寄存器(在本地数据和某些操作系统的数据结构中寻址)。
即使分段通常被禁用,段寄存器加载也可能会导致处理器执行段访问辅助。这些活动进行期间,处理器仍然可以对加载值进行大多数传统检查(即使这些检查不适用于64位模式)。需要这些检查是因为

在 64 位模式下加载的段寄存器可能会被兼容模式下运行的应用程序所使用。 在 64 位模式下禁用 CS , DA , ES , SS , FS 和 GS 的限制检查。 @翻译人:墨

第四章 Data Types

第五章 Instruction Set Summary

第六章 Procedure Calls, Interrupts, and Exceptions

第七章 Programming With General-Purpose Instructions

第八章 ~ 第十八章

二期再译

第十九章 Input/Output

第二十章 Processor Identification and Feature Determination

附录 A ~ 附录 D

二期再译