diff --git a/Intel 手册中文版/卷一:基本架构.md b/Intel 手册中文版/卷一:基本架构.md index c263cc5..edbb0d1 100644 --- a/Intel 手册中文版/卷一:基本架构.md +++ b/Intel 手册中文版/卷一:基本架构.md @@ -104,6 +104,7 @@ Intel 和 IA-32 处理器都是采用“little endian(小端)”方式存储 ### 3.4.2 段寄存器 +@翻译人:墨 段寄存器控制(代码段寄存器,数据段寄存器,堆栈段寄存器,扩展段寄存器,标志段寄存器,全局段寄存器)16 位的段选择子。段选择子是一种特殊的指针,用来标识内存中的段。为了访问内存中特定的段,该段的段选择子必须存在于适当的段寄存器中。 在编写应用代码的时候,程序员通常用汇编指令和标识符创建段选择子。汇编器和其他工具通过这些汇编指令和标识符创建实际的段选择子的值。如果编写系统代码,程序员需要直接创建段选择子。可以参考 Intel® 64 and IA-32 软件架构开发手册卷三的第三章:保护模式下的内存管理。 如何使用段寄存器取决于操作系统或执行器使用的内存管理模型。在平坦模型(未进行分段)下,段寄存器加载指向重叠段的段选择子,每个段都从线性地址空间的0地址处开始(见图 3-6 )。这些重叠 @@ -118,11 +119,11 @@ Intel 和 IA-32 处理器都是采用“little endian(小端)”方式存储 参考 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