• 沒有找到結果。

Pentium 微处理器新增指令和寻址方式

Pentium 微处理器以最先进的技术将 PC 机推向了一个崭新的发展阶段,Pentium 拥有全新 的结构与功能,它采用了超标量体系结构,具有动态转移预测、流水线浮点部件、片内超高速 缓冲存储器、较强的错误检测和报告功能、测试挂钩等新技术。

下面简要分析 Pentium 微处理器与 8086、80X86 系列芯片在指令及寻址方式等方面中的 不同和特点。

3.4.1 Pentium 微处理器寻址方式

1.Pentium 微处理器内部寄存器和指令格式

由于 Pentium 微处理器采用 32 位指令,它的内部寄存器和指令格式与 16 位微处理器存在 不同,主要有以下几方面:

(1)指令的操作数可以是 8 位、16 位或 32 位。

(2)根据指令的不同操作数字段可以是 0~3 个,三操作数时,最左边的操作数为目的 操作数,右边两个操作数均为源操作数。

(3)在部分不存放结果的单操作数指令中,可以采用立即数作为操作数。

(4)部分指令对操作数的数据类型不是简单地要求一致,而是要有不同的匹配关系。

(5)立即数寻址方式中,操作数可以是 32 位的立即数;寄存器寻址方式中,操作数可 以是 32 位通用寄存器。

(6)存储器操作数寻址方式中,操作数可达 32 位,寻址方式既可采用 16 位的地址寻址 方式也可采用 32 位的扩展地址寻址方式。

(7)16 位微处理器原有的 4 个通用数据寄存器扩展为 32 位,更名为 EAX、EBX、ECX 和 EDX。

(8)原有的 4 个用于内存寻址的通用地址寄存器同样扩展为 32 位,更名为 ESI、EDI、

EBP、ESP。

(9)指令指针寄存器扩展为 32 位,更名为 EIP,实地址方式下仍然可以使用它的低 16 位 IP。

(10)在原有的 4 个段寄存器基础上,增加了 2 个新的段寄存器 FS 和 GS,段寄存器长 度仍然为 16 位,但是它存放的不再是“段基址”,而是代表这个段编号的 13 位二进制数,称 为“段选择字”。

(11)32 位微处理器增加了 4 个系统地址寄存器,它们分别是存放“全局段描述符表”

首地址的 GDTR,存放“局部段描述符表”选择字的 LDTR,存放“中断描述符表”首地址的 IDTR,存放“任务段”选择字的“任务寄存器”TR。

(12)标志寄存器也扩展为 32 位,更名为 EFLAGS,除了原有的状态、控制标志外,还

增加了 2 位,表示 IO 操作特权级别的 IOPL,表示进入虚拟 8086 方式的 VM 标志等。

(13)新增加了 5 个 32 位的控制寄存器,命名为 CR0~CR4,CR0 寄存器的 PE=1 表示 目前系统运行在“保护模式”,PG=1 表示允许进行分页操作。CR3 寄存器存放“页目录表”

的基地址。

(14)新增了 8 个用于调试的寄存器 DR0~DR7,2 个用于测试的寄存器 TR6 和 TR7。

2.Pentium 微处理器新增寻址方式

如前所述,8086 微处理器有固定寻址、立即数寻址、寄存器寻址、直接寻址、寄存器间 接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址等 8 种寻址方式,而 Pentium 微 处理器有 11 种寻址方式。与 8086 相比新增加的 3 种寻址方式分别是比例变址寻址方式、基址 加比例变址寻址方式和带位移量的比例变址寻址方式。

(1)比例变址寻址方式。

其有效地址为:EA=[变址寄存器]×比例因子+位移量

该方式下操作数有效地址是变址寄存器的内容乘以指令中指定的比例因子再加上位移量 之和,所以有效地址由三种成分组成。乘比例因子的操作是在 CPU 内部由硬件完成的。

这种寻址方式与寄存器相对寻址相比,增加了比例因子,其优点在于:对于元素大小为 2、

4、8 字节的数组,可以在变址寄存器中给出数组元素下标,而由寻址方式控制直接用比例因 子把下标转换为变址值。

例如:

MOV EAX,COUNT[ESI×4]

(2)基址加比例变址寻址方式。

其有效地址为:EA=[基址寄存器]+[变址寄存器]×比例因子

该方式下 EA 是变址寄存器的内容乘以比例因子再加上基址寄存器的内容之和,这种寻址 方式与基址变址寻址方式相比,增加了比例因子。

例如:

MOV ECX,[EAX][EDX×8]

(3)带位移量的基址加比例变址寻址方式。

其有效地址为:EA=[基址寄存器]+[变址寄存器]×比例因子+位移量

操作数的有效地址是变址寄存器的内容乘以比例因子,加上基址寄存器的内容,再加上 位移量之和,所以有效地址由四种成分组成。在寻址过程中,变址寄存器内容乘以比例因子的 操作也是在 CPU 内部由硬件来完成。

这种寻址方式比相对基址变址寻址方式增加了比例因子,便于对元素为 2、4、8 字节的 二维数组的处理。

例如:

MOV EAX,TABLE[EBP][EDI×4]

需要注意的是:

Pentium 微处理器在实地址方式下,一个段的最大长度仍然为 64KB,段基址是 16 的 倍数,用段寄存器存放段基址。

Pentium 有 6 个段寄存器,在寻址内存操作数时,指令给出的内存操作数的地址均为 有效地址。

内存操作数有效地址可由一个 32 位基址寄存器、一个可乘上比例因子 1、2、4、8 的 32 位变址寄存器和一个不超过 32 位的常数偏移量组成。

32 位寻址情况下,8 个 32 位通用寄存器均可作基址寄存器,其中 ESP、EBP 以 SS 为默认段寄存器,其余 6 个通用寄存器均以 DS 为默认段寄存器。

基址字段、变址字段、偏移量字段可任意省略其一或其二。

比例因子与变址字段联合使用,如省略了变址字段,则比例因子不能独立存在。

3.4.2 Pentium 系列微处理器专用指令

Pentium 系列处理器的指令集是向上兼容的,它保留了 8086 和 80X86 微处理器系列的所 有指令,因此,所有早期的软件可直接在奔腾机上运行。

从微处理器的指令系统中可看出,自 1985 年 Intel 公司推出 32 位微处理器 80386 以来,

始终使用着几乎一样的指令系统,只是每提高一代便追加很少几条指令。Pentium 微处理器的 指令集与 80486 相比变化不大,Pentium 的主要特色是拥有能使系统程序员实现多路处理 Cache 一致性协议的新指令,以及一条 8 字节比较交换指令和一条微处理器识别指令。

Pentium 处理器指令集中新增加了以下 3 条专用指令。

1.比较和交换 8 字节数据指令 CMPXCHG8B 指令格式:CMPXCHG8B opr1,opr2

该指令执行 64 位数据的比较和交换操作。执行时将存放在 opr1(64 位存储器)中的目的 操作数与累加器 EDX:EAX 的内容进行比较,如果相等,则 ZF=1,并将源操作数 opr2(规 定为 EDX:EAX)的内容送入 opr1;否则 ZF=0,并将 opr1 送到相应的累加器。

例如:

CMPXCHG8B mem,ECX:EBX

指令执行后,如果 EDX:EAX=[mem],则 ECX:EBX→[mem],ZF=1 否则[mem]→EDX:EAX 且 ZF=0

2.CPU 标识指令 CPUID 指令格式:CPUID

该指令执行后可以将有关 Pentium 处理器的型号和特点等系列信息返回到 EAX 中。在执 行 CPUID 指令前,EAX 寄存器必须设置为 0 或 1,根据 EAX 中设置值的不同,软件会得到 不同的标志信息。

3.读时间标记计数器指令 RDTSC 指令格式:RDTSC

在 Pentium 处理器中有一个片内 64 位计数器,称为时间标记计数器 TSC。计数器的值在 每个时钟周期都自动加 1,执行 RDTSC 指令可以读出计数器 TSC 中的值,并送入寄存器 EDX:EAX 中,EDX 保存 64 位计数器中的高 32 位,EAX 保存低 32 位。

一些应用软件需要确定某个事件已执行了多少个时钟周期,在执行该事件之前和之后分 别读出时钟标志计数器的值,计算两次值的差就可得出时钟周期数。

3.4.3 Pentium 系列微处理器控制指令

Pentium 处理器指令集中新增加了以下 3 条系统控制指令。

1.读专用模式寄存器指令 RDMSR

RDMSR 指令使软件可访问专用模式寄存器的内容,执行指令时在访问的模式专用寄存器 与寄存器组 EDX:EAX 之间进行 64 位的读操作。

2.写专用模式寄存器指令 WRMSR

WRMSR 指令执行时在访问的模式专用寄存器与寄存器组 EDX:EAX 之间进行 64 位的写 操作。

Pentium 处理器有两个专用模式寄存器,即机器地址检查寄存器(MCA)和机器类型检查 寄存器(MCT)。

如果要访问机器地址检查寄存器 MCA,指令执行前需将 ECX 置为 0;而为了访问机器类 型检查寄存器 MCT,需要将 ECX 置为 1。

3.恢复系统管理模式指令 RSM

Pentium 处理器有一种称为系统管理模式(SMM)的操作模式,这种模式主要用于执行系 统电源管理功能。外部硬件的中断请求使系统进入 SMM 模式,执行 RSM 指令后返回原来的 实模式或保护模式。

相關文件