2.2 IA-32处理器体系结构
如前所述,IA-32是指始于Intel386直到当前最新的奔腾4的系列的处理器(额...这本书是什么时候写的啊,表示现在应该是I7啊),在IA-32的发展过程中,Intel处理器的内部体系结构已经做出了无数的改进,如流水线、超标量、分支预测以及超线程等。不过就编程而言。可见的变化只有用于多媒体处理以及用于图形计算的指令集扩展。
2.2.1 操作模式
IA-32处理器有三种基本的操作模式:保护模式、实地址模式和系统管理模式。另外一种模式称为虚拟8086模式,是保护模式的一个特例。
保护模式(Protected Mode):保护模式是处理器的基本模式,在保护模式下,所有指令和特性都是可用的,程序被赋予了独立的内存区域(称为段),处理器阻止程序访问已分配段之外的其他内存。
虚拟8086模式(Virtual-8086 Mode):在保护模式下,处理器可以在安全的多任务环境中执行地址模式的软件,如MS-DOS程序。换句话说,即使一个MS-DOS
程序崩溃了或试图想系统内存区写入数据,也不会影响同时运行的其他程序。Windows XP 可以同时执行多个虚拟8086任务。
实地址模式(Real-address Mode):实地址模式实现了Intel8086处理器的程序设计环境以及其他一些新增的特性,如却换到其他两种模式的能力等。该模式在WIndows98下是被支持的,可用于运行那些需要直接访问系统内存和硬件设备的MS-DOS程序。实地址模式下运行的程序有可能导致操作系统挂起(停止响应命令)。
系统管理模式(SSM ,System Management Mode):系统管理模式为操作系统提供了用以实现电源管理和系统安全等功能的机制。这些功能通常是由那些想自定义特定系统启动过程的计算机制造商实现的。
2.2.2 基本执行环境
地址空间
在保护模式下。IA-32处理器可访问高达4GB的内存,这是32位无符号二进制整数地址的能够寻址的上限。实地址模式程序只能访问1MB的内存。如果处理器处于保护模式并在虚拟8086模式下运行多个程序,每个程序都能访问独立的1MB内存区域。
基本寄存器
寄存器是CPU内部的高速存储单元,访问速度比常规内存快很多。例如
当循环进行速度优化时,就可以把循环计数存放在寄存器而不是(内存)变量中。
下图列出了所有的用于程序执行的基本寄存器,其中有8个通用寄存器,6个段寄存器,一个处理器状态标志寄存器(EFLAGS)和一个指令指针(EIP)寄存器。
通用寄存器:通用寄存器主要用于算术运算和数据的传输。如下图所示,每个寄存器都可以作为一个32位值或两个16位值来寻址使用。
某些