保护模式下的寄存器

80386新增了一系列寄存器用于支持CPU工作于保护模式下,除了控制寄存器组有一些新增加的特性和变化外,其他更高级的处理器与80386微处理器本质上相同。

控制寄存器

80386中四个系统控制寄存器:CR0~CR3(Control Register),CR0的低5位是系统控制标志,被称为机器状态字(Machine Status Word,MSW),分页机制中用到CR3、CR2和CR0。
保护模式下的寄存器_第1张图片

  1. PG(Paging Enable):分页标志。PG=1时,存储器管理单元允许分页,线性地址通过页表转换获得物理地址。PG=0时,分页功能被关闭,线性地址等于物理地址。当PG=0时,CR2和CR3寄存器无效;PG=1时,二者用于分页管理机制。
  2. PE(Protection Mode Enable):保护模式允许标志。PE=0为实模式,CPU复位时自动进入实模式;PE=1为保护模式,可以通过软件设置PE进入或退出保护模式。
  3. TS(Task Switched):任务切换标志。TS=1时,表明任务已经切换,在保护模式下,TR的内容改变将自动设置此位为1。

全局描述符表寄存器

全局存储器是一种共享系统资源,该存储器可以被所有任务访问。全局描述符表(Global Descriptor Table, GDT)是用来定义全局存储器空间的一种机制,它用段描述符来描述一个全局存储器中的段,每个GDT最多包含有8192个描述符。全局描述符表可以存储在内存的任何位置,通过全局描述符表寄存器(GDTR)给出它的位置和大小。LGDT指令可以将描述符表的起始位置装入GDTR。GDTR中的32位基址是线性地址,经过分页不见转换为物理地址。

局部描述符表寄存器

保护模式提供了多任务的环境,系统中除了一个公用的全局描述符表GDT外,还为每个任务建一个局部描述符表(LocalDescriptor Table, LDT)。LDT只含有与系统中某一个任务相关的各个段的描述符,及LDT定义的是某项任务用到的局部存储器地址空间。这样就可以使每一个任务的代码段、数据段、堆栈段与系统其他部分分隔开。多任务环境下,由于每项任务都有自己的LDT,因此,保护模式下可以有多个LDT,而和所有任务有关的公用段的描述符放在全局描述符表GDT中。

与GDTR不同,由于LDT是面向某个任务的,局部描述符表寄存器LDTR并不直接指出LDT的位置和大小。LDTR的内容是一个16位的选择符,指向一个LDT描述符。LDT描述符指出LDT的的位置和大小。在任务切换时,CPU从新任务的任务状态段中装入LDTR,从而使用新任务的局部存储器空间。

保护模式下的寄存器_第2张图片

段选择符

段寄存器在是模式、V86模式下和保护模式下有不同的内容。实模式和V86模式下,它们用法兼容16位CPU,即段寄存器保存20位段基址的高16位,段基址的低4位为0。在保护模式下,段寄存器的意义与实模式下的段寄存器则完全不同。它不直接存放段基址,而是存放一个索引,称为段选择符(Segment Selector)。由段选择符从全局描述符表或局部描述符表中找到8个字节长的段描述符,从而确定关于这个段的全部描述信息。
在这里插入图片描述

  1. RPL(Requestor Privilege Level):请求特权级,表示将要访问的特权级。取值范围0~3。分别表示特权级0、1、2和3。
  2. TI(Table Indicator):表指示符。为0时,从全局描述符表(GDT)中选择描述符;为1时,从局部描述符表(LDT)中选择描述符。
  3. Index:索引。指出要访问描述符在段描述表中的顺序号,Index占13位。因此顺序号的范围是0~8191.每个段描述符表(GDT或LDT)中最多有8192个描述符。

你可能感兴趣的:(汇编语言)