64-Bit Execution Environment

64位模式的执行环境与32位执行环境类似。不同点如下所述:

  • 地址空间 – 程序/任务运行在64位模式下,可以访问最高2^64字节(受制于规范寻址要求)的线性地址空间和最高2^46字节的物理地址空间。
  • 基本的程序执行寄存器 – 通用寄存器数量增加到16个,64位宽,支持字节/单字/双字/四字整型值。字节访问同一是寄存器的最低8比特位。指令指针扩展位64位宽。标志寄存器也扩充到64位,称为RFLAGS寄存器,但是并未新增标志位,即高32位属于保留位,低32位与EFLAGS寄存器一致。。
  • XMM寄存器 – SIMD指令集使用的XMM数据寄存器增加到了16个。
  • YMM寄存器 – SIMD指令集使用的YMM数据寄存器增加到了16个。
  • BND寄存器与BNDCFGU/BNDSTATUS寄存器 – 参考后文
  • 栈stack – 栈指针宽度增加到64位,被称为RSP。栈容量不是栈段描述符(SS descriptor)中的位定义(非64位模式的栈容量由栈段描述符定义),栈指针的宽度也不能用指令前缀的覆盖(即改变)。
  • 控制寄存器 – 控制寄存器扩展到了64位,还新增了一个控制寄存器CR8,被称为任务优先级寄存器(TPR – task priority register)
  • 调试寄存器 – 调试寄存器扩展到了64位。
  • 描述符表寄存器- 全局描述符表寄存器GDTR与中断描述表寄存器IDTR扩展到了10个字节,用于容纳完整的64位基地址。局部描述符表寄存器LDTR与任务寄存器TR也被扩充用于容纳完整的64基地址。

Intel 64/x86_64/IA-32/x86处理器基本执行环境 (2) - 64位执行环境-LMLPHP

01-18 17:31