翻译前先阅读整体规则的 [README](https://github.com/sunym1993/flash-linux0.11-talk/blob/main/Intel%20%E6%89%8B%E5%86%8C%E4%B8%AD%E6%96%87%E7%89%88/README.md) 哟~ # 目录 这里是目录,要有锚点链接。 [@翻译人:闪客sun](https://github.com/sunym1993/flash-linux0.11-talk) 本卷是讲述 Intel 64 和 IA-32 架构处理器体系结构和编程环境的一部分,其他卷分别是: - [卷二:指令集参考](https://github.com/sunym1993/flash-linux0.11-talk/blob/main/Intel%20手册中文版/卷二:指令集参考.md) - [卷三:系统编程指南](https://github.com/sunym1993/flash-linux0.11-talk/blob/main/Intel%20手册中文版/卷三:系统编程指南.md) - [卷四:特殊模块寄存器(MSR)](https://github.com/sunym1993/flash-linux0.11-talk/blob/main/Intel%20手册中文版/卷四:特殊模块寄存器(MSR).md) 卷一描述了处理器的基本架构和编程环境;卷二描述了处理器的指令集和操作码(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 概览 ## 1.3 ### 1.3.1 位和字节序 @翻译人:hdszylcd19 在内存中的数据结构图示中,较小的内存地址显示在图的底部;从下往上增加到顶部。Bit positions 从右到左编号。该 Bit 位的值等于 2 的 positions 次方(译者注:原文的表述有点儿晦涩,不好理解。其中,position 从 0 开始,说人话就是,二进制位上 1 所表示的数值,从右往左依次为:2 的 0 次方、2 的 1 次方...)。 Intel 和 IA-32 处理器都是采用“little endian(小端)”方式存储数据;这意味着 word 的字节序是从最低有效字节开始编号(译者注:关于“大端”和“小端”问题,请查看 [大端(Big-Endian)和小端(Little-Endian)](https://juejin.cn/post/6930889701507203085/#comment))。请看图1-1。 ### 1.3.2 保留位与软件兼容性 @翻译人:三分月色 在许多寄存器和内存布局描述中会有一些保留位。这些被标记为保留位的比特,是为了与未来的处理器兼容,尽管未来是未知的,软件仍将这些位视为对未来有重要影响。保留位的行为应该被认为是未定义(undefined)且不可预测的。 在处理保留位时,软件应遵循以下准则: * 当测试含保留位的寄存器的值时,不依赖保留位的状态。应在测试之前屏蔽掉保留位。 * 存储到内存或寄存器时,不依赖于保留位的状态。 * 不依赖保留位保持信息(retain information)的能力。 * 加载寄存器时,始终使用文档中指示的值加载保留位(如果有的话),或者使用先前从同一寄存器读取的值重新加载保留位。