【2021.04.04】控制寄存器

控制寄存器

控制寄存器用于控制和确定CPU的操作模式。

CR0、CR1、CR2、CR3、CR4

CR1:保留

CR3:页目录表基址,其在10-10-12和2-9-9-12分页形式中是不一样的。

CR0寄存器

  • PE:CR0的位0是启用保护(Protection Enable)标志。

PE=1:保护模式、PE=0:实模式。

这个标志仅开启段级保护,而并没有启用分页机制。若要启用分页机制,那么PE和PG标志都要置位。

  • PG:当设置该位时,即开启了分页机制。在开启这个标志之前必须已经或者同时开启PE标志。

PG=0 且 PE=0:处理器工作在实模式下。

PG=0 且 PE=1:处理器工作在没有开启分页机制的保护模式下。

PG=1 且 PE=0:在PE没有开启的情况下无法开启PG。这种情况是不存在的,因为在开启这个标志之前必须已经或者同时开启PE标志。

PG=1 且 PE=1:处理器工作在开启了分页机制的保护模式下。

  • WP:对于Intel 80486或者以上的CPU,CR0的位16是写保护(Write Proctect)标志。
  • 当设置该标志时,处理器会禁止超级用户程序(例如特权级0的程序)向用户级只读页面执行写操作。

当CPL<3的时候:

WP=0:可以读写任意用户级物理页,只要线性地址有效。

WP=1:可以读取任意用户级物理页,但是对于只读的物理页,则不能写入。

CR1寄存器

该寄存器是保留的。

CR2寄存器

当CPU访问某个无效页面时,会产生缺页异常。此时,CPU会将引起异常的线性地址存放在CR2中。

CR3寄存器

CR3寄存器是唯一一个存储物理地址的寄存器,该寄存器里面存储的地址,指向的是PDT(页目录表)

CR4寄存器

PAE

PAE=1:2-9-9-12分页。

PAE=0:10-10-12分页。

PSE

  • 在前文提到PDE/PTE属性的时候,有一个PS位,通过这个PS位可以判断当前页面是大页还是小页。
  • 在早期的IntelCPU中,PS位是保留位。但是为了避免别人使用这个位,他加入了一个总开关。
  • 这个总开关就是PSE位,只有当PSE位置1的时候,PS位才有作用。

特别说明

关于控制寄存器的更多细节,请参阅Intel白皮书第三卷。

Intel白皮书有很多个版本,不同的版本章节设置是不一样的,顺序也是不一样的。如果与上图不同,可以参考标题来寻找。

猜你喜欢

转载自blog.csdn.net/qq_18120361/article/details/115432169