Intel 64和IA-32架构——操作模式

时间:2022-05-30 03:13:31

Intel的实模式和保护模式,必须要知道的...

一、Intel手册如是说

Intel的IA-32架构支持三种基本操作模式:保护模式、实地址模式和系统管理模式。操作模式决定了哪些指令和架构相关的特性是可用的:

  • 保护模式(protected mode)——是处理器的根本模式,在保护模式下,可以为直接运行的实地址模式程序提供保护的、多任务的环境,这种特性被称作“虚拟8086模式(virtual 8086 mode)”,尽管“虚拟8086”模式并不是一种真正的处理器模式;virtual 8086 mode实际上是保护模式的一种属性,在保护模式下,可以向任何任务提供这种属性。
  • 实地址模式(real-addessmode)——该模式以扩展的方式实现了8086CPU的程序运行环境(就像切换到保护模式和系统管理模式一样)。处理器在刚刚上电或者重启后的时候,处于实地址模式。
  • 系统管理模式(system manangement mode,SMM)——该模式提供操作系统或者执行程序一种透明的机制去实现平台相关的特性,例如电源管理和系统安全。当来自外部的或者APIC控制器的SMM中断pin脚被触发时,处理器在下列情况进入SMM。在SMM下,处理器切换到一个独立的地址空间,同时保存当前运行的程序或任务的上下文。SMM相关的代码可透明的执行。当SMM模式返回时,处理器返回SMI(system manangement interrupt)前的工作模式。SMM模式在Intel 386 SL和Intel 486 SL处理器时被引入,在Pentium家族时成为标准的IA-32架构的特性。

Intel 64 架构增加了IA-32e模式,IA-32e模式又包含两种子模式:

  • 兼容模式(Compatibility mode)——兼容模式允许绝大部分16-bit/32-bit的应用可以无需重新编译就能直接在64bits的操作系统下运行。简单的,在IA-32架构下将“兼容子模式”称为“兼容模式”。兼容模式的可执行环境与Section 3.2定义的一致。兼容模式也支持所有的特权级别,在64-bit和保护模式下。运行在虚拟8086模式下的或用到硬件任务管理的程序,在此模式下无法工作。兼容模式做代码段基础被操作系统所启动,这意味着单独的64-bit操作系统可以通过64-bit模式支持64-bit应用,也可以通过兼容模式支持32-bit程序(无需再编译)。兼容模式类似于32-bit的保护模式,应用程序只能访问前4G的线性地址空间。兼容模式使用16-bit和32-bit的地址以及操作数长度。类似于保护模式,该模式允许应用程序通过PAE(物理地址扩展,Physical Address Extention)访问超过4G的物理内存。
  • 64-bit模式(64-bit mode)——该模式使操作系统在64-bit线性地址空间上运行应用程序,在IA-32架构下,64-bit子模式被简称为64-bit模式。64-bit模式将通用寄存器和SIMD寄存器从8个扩展到16个。通用寄存器被增加到64bits宽。该模式还引入了新的操作数前缀(REX)来访问寄存器扩展。64-bit模式作为代码段基础被操作系统激活,该模式默认地址长度是64bits,但默认操作数长度为32bits,默认的操作数长度可以在指令级别被覆盖,通过使用REX操作数前缀结合操作数大小覆盖前缀。REX前缀被用来在64-bit模式下指定一个64-bit的操作数,通过这种机制,很多已经存在的指令代码可以被直接升级到访问64-bit地址空间和64-bit寄存器。