注:更多详细信息查看 白皮书 3A 2.5节 控制寄存器
CR0
PE (Protection Enable) : PE == 1,保护模式开启; PE == 0,实地址模式 (仅开启段保护)
PG (Paging) : PE == 1,开启分页模式,PE == 0,关闭分页模式 (当且仅当PE == 1时,PG才会生效)
WP (Write Protect) : 写保护,开启(WP==1)后不允许超级用户对普通用户的只读页面进行写操作,反之则允许。
小拓展:
CD (Cache Disable) 和 BW(Not Write-through) : 缓存相关(没看懂,不敢乱说)
AM (Alignment Mask) : 自动对齐,当AM == 1 && EFLAGS.AC == 1 才会进行检查
NE (Numeric Error) : 浮点错误相关
ET (Extension Type) : 拓展类型,和机器相关,在Intel386 和 Intel486,ET == 1表示支持Intel 387 DX数字协处理器指令,在其他的一些机器上是保留位
TS (Task Switch) : 允许浮点计算在任务切换时保存上下文,与EM和MP位联用(不再展开)
CR1
保留
CR2
存放导致页错误的线性地址
例如:当发生缺页中断时,存放引发缺页的线性地址
CR3
Page-Directory-Base : 可以放PDPT (Page-Directory-Pointer table),或者是PML4 table、PML5 table
PCD
PWT (Page-level Write-Through) : 1,写入cache的同时也向内存中写;否则只写入cache,何时写入内存CPU自行决定
PCD (Page-level Cache Disable) : 1,不允许写入cache,直接读写内存,用作页表的页可能已经在某些缓存中了,所以不再写入缓存;
CR4
PAE (Physical Address Extension) : 1,允许物理地址超过32位;0,物理地址被限制为32位
简单来说PAE == 1,分页模式为2-9-9-12分页(36位);PAE == 0,分页模式为10-10-12分页(32位)
PSE (Page Size Extensions) : 1,允许使用大页(4MB页);0,不允许使用大页 (是否使用大页,还得PageDirectoryEntry.PS位决定)
有时间再来拓展其他位