从上表可见80386有 4个32位控制寄存器分别命名位CR0、CR1、CR2和CR3但CR1被保留供今后开发处理器使用在80386中不能使用CR1否则会引起无效指令操作异常CR0包括指示处理器工作方式控制位包含启用和禁止分页管理机制控制位包含控制浮点协处理器操作控制位CR2及CR3由分页管理机制使用CR0中位5—位30及CR3中位0至位11是保留位这些位不能是随意值必须为0
控制寄存器CR0低16位等同于80286机器状态字MSW
1.保护控制位
控制寄存器CR0中位0用PE标记位31用PG标记这两个位控制分段和分页管理机制操作所以把它们称为保护控制位PE控制分段管理机制PE=0处理器运行于实模式;PE=1处理器运行于保护方式PG控制分页管理机制PG=0禁用分页管理机制此时分段管理机制产生线性地址直接作为物理地址使用;PG=1启用分页管理机制此时线性地址经分页管理机制转换位物理地址有关分页管理机制具体介绍在后面文章中进行
下表列出了通过使用PE和PG位选择处理器工作方式由于只有在保护方式下才可启用分页机制所以尽管两个位分别为0和1共可以有 4种组合但只有 3种组合方式有效PE=0且PG=1是无效组合因此用PG为1且PE为0值装入CR0寄存器将引起通用保护异常
需要注意是PG位改变将使系统启用或禁用分页机制因而只有当所执行代码和至少有部分数据在线性地址空间和物理地址空间具有相同地址情况下才能改变PG位
2.协处理器控制位
控制寄存器CR0中位1—位4分别标记为MP(算术存在位)、EM(模拟位)、TS(任务切换位) 和ET(扩展类型位)它们控制浮点协处理器操作
当处理器复位时ET位被化以指示系统中数字协处理器类型如果系统中存在 80387协处理器那么ET位置1;如果系统中存在80287协处理器或者不存在协处理器那么ET位清0
EM位控制浮点指令执行是用软件Software模拟还是由硬件执行EM=0时硬件控制浮点指令传送到协处理器;EM=1时浮点指令由软件Software模拟
TS位用于加快任务切换通过在必要时才进行协处理器切换思路方法实现这目每当进行任务切换时处理器把TS置1TS=1时浮点指令将产生设备不可用(DNA)异常 MP位控制WAIT指令在TS=1时是否产生DNA异常MP=1和TS=1时WAIT产生异常;MP=0时WAIT指令忽略TS条件不产生异常
3.CR2和CR3
控制寄存器CR2和CR3由分页管理机制使用
CR2用于发生页异常时报告出错信息当发生页异常时处理器把引起页异常线性地址保存在CR2中操作系统中页异常处理可以检查CR2内容从而查出线性地址空间中哪页引起本次异常
CR3用于保存页目录表其始物理地址由于目录是页对齐所以仅高20位有效低12 位保留未用向CR3中装入个新值时低12位必须为0;但从CR3中取值时低12位被忽略每当用MOV指令重置CR3值时会导致分页机制高速缓冲区内容无效用此思路方法可以在启用分页机制的前即把PG位置1的前预先刷新分页机制高速缓存CacheCR3寄存器即使在CR0寄存器PG位或PE位为0时也可装入如在实模式下也可设置CR3以便进行分页机制化在任务切换时CR3要被改变但是如果新任务中CR3值和原任务中CR3值相同那么处理器不刷新分页高速缓存Cache以便当任务共享也表时有较快执行速度
最新评论