IA-32 保护模式 实模式

IA-32 CPU有三种模式:

其切换路径如下:

---引用自intel官方手册

1.实地址模式

处理器可以支持1MB的物理寻址空间。地址空间被划分为段,每个段(16 bits)最大长度为64KB;段的基址由16-bit段寄存器指定,16bit基址向左偏移,偏移位由0填充形成

20bit的段基址;

        base        1111 1111 1010 0000 0000

       offset      +       0000 0000 1010 1010

         ------------------------------------------

          =    1111 1111 1010 1010 1010

(1)可用的通用寄存器:

16 bits:AX, BX, CX, DX, SP, BP, SI, and DI

32 bits:(EAX, EBX, ECX, EDX, ESP, EBP, ESI, and EDI)

(2)段寄存器

CS、 DS、 SS、 ES (FS GS也可以指定使用):16bits

(3)16-bit IP寄存器:指令指针寄存器,是EIP的低16位

(4)16-bit FLAG寄存器:包含状态和控制标记;EFLAG低16位

(5)一个栈被用来处理call函数调用、中断、异常处理。

栈是由SS寄存器指定其地址,栈指针(SP)包含了一个相对于栈段的偏移值;

当call指令执行时,CPU讲CS、IP(EIP的低16位)压入栈,当ret指令执行时,弹出CS、IP;

当中断或者异常产生时,CPU push the EIP, CS, and EFLAGS (low-order 16-bits only)
registers进栈. 返回时,CPU从栈中弹出指令指针、CS和EFLAG 的保存值到 the EIP, CS, and
EFLAGS registers.

(6)单独的中断向量表(IVT)。中断向量表(每一个表项4字节)在实地址模式中用来处理中断、异常,而中断描述符表(IDT-每一个表项8bytes)被用在保护模式下;

2 保护模式

实模式和保护模式最大的区别在于,处理虚拟8086模式下的8086仿真器使用一些保护模式下的服务,比如保护模式下的中断、异常处理和页机制。

2.1 使能8086虚模式

只有当EFLAG中的VM标记被置位的时候处理器才能运行在虚模式下。只有一下两个条件才能触发:

a.处理器被切换到一个新的处于保护模式下的任务时

b.通过iret指令返回(一个虚模式的任务:可以理解为从实模式下返回成虚模式)

2.2 分页机制

见下篇

 

posted @ 2016-07-23 19:23  Xiaodigua  阅读(554)  评论(0编辑  收藏  举报