目前的CPU大多是支持X86-64技术的兼容CPU,这包括AMD64以及Intel的IA32E(后被正式命名为EM64T,Extended Memory 64 Technology),因为AMD64先出,而EM64T与AMD64完全兼容,所以也统一称为AMD64技术。由于AMD64技术向下兼容,所以很好的承接了以前的16位、32位资源,与此相应,X86-64兼容CPU可以运行在多种模式之下,除了熟悉的实模式,保护模式,还有长模式等,下面统一简单介绍现代CPU可运行的各种模式。
8086/8088时代:
实模式,Real-address Mode,实地址模式,CPU寻址采用和8086相同的16位段和偏移量,最大寻址空间1MB,最大分段64KB。在实模式下,CPU只能做单任务运行。
在实模式下,寻址公式为:物理地址 = 左移4位的段地址 + 偏移地址,即:物理地址是由16位的段地址和16位的段内偏移地址组成的。比如在ES寄存器中存入0x1000,DI寄存器中存入0xFFFF,那么ES:DI=0x1000*0x10 + 0xFFFF = 0x1FFFF。
80286到80386开始:
保护模式,Protected Mode,内存保护模式,寻址采用32位段和偏移量,最大寻址空间为4GB,最大分段4GB (Pentium Pre及以后为64GB)。保护模式拥有内存保护,分页系统,以及硬件支援的虚拟内存等功能。
在保护模式下,进行寻址时,段寄存器值不再被简单的解析为段起始地址,而是全局/局部描述符表(GDT/LDT)的索引,也即是所谓的选择子。
系统管理模式,System Management Mode,系统管理模式(SMM)通常被用来执行特定的强力管理例程,关于这方面,我完全没有接触到,所以连直接拷贝都不敢了,以免出错误导他人,只知道貌似和BIOS程序有些关系。
虚拟8086模式,Virtual-8086 Mode,V86模式,在保护模式下CPU可以进入到这种模式,即虚拟8086模式是保护模式下的一种工作方式。CPU把V86任务作为与其它任务具有同等地位的一个任务,可以支持多个V86任务,每个V86任务是相对独立的。在虚拟8086模式下,处理器工作方式类似于8086。
长模式,Long mode,在长模式下,处理器完全执行64位指令,使用64位地址空间(物理内存的寻址能力却没有被完全扩展到64位,因为目前的众多CPU在其寿命期限之内都没有机会见识到如此巨大的内存)和64操作数。