NT 位元14是巢状任务标志(Nested Task) 。它控制著被中断任务和呼叫任务之间的链结关系。在使用CALl+指令、中断或異常执行任务呼叫时,处理器会设置该标志。在透过使用IRET指令从一个任务返回时,处理器会检查並修改这个NT标志,使用POPF/POPFD指令也可以修改这个标志,但是在应用程式中改变这个标志的状态会產生不可意料的異常。
控制寄存器(CR0、CR 1、CR2和CR3)用於控制和确定处理器的操作模式以及当前执行任务的特性,见图4-3所示。CR0中含有控制处理器操作模式和状态的系统控制标志;CR1保留不用;CR2含有导致页错误的線性位址。CR3中含有页目錄表实体记忆体基底位址,因此该寄存器也被称为页目录基底位址寄存器PDBR(Page-Directory Base address Register) 。
1. CR0中辅助运算器控制位
CR0的4个Bit位:扩允类型位ET、任务切換位TS、模拟位EM和数学存在位MP用於控制80X86浮点(数学)辅助运算器的操作。有关辅助运算器的详细說明,请参看往后介绍的11章內容。CR0的ET位元(标志)用於选择与辅助运算器进行通信所使用的协定,即指明系统中使用的是80387还是80287辅助运算器。TS、MP和EM位元用於确定浮点指令或WAlT指今是否应该產生一个设备不存在DNA(Device Not Available)異常。这个異常可用来仅为使用浮点运算的任务保存和恢复浮点寄存器。对於沒有使用浮点迎算的任务,这樣做可以加快它们之间的切換操作。
ET CR0的位4是扩允类型标志(Extension Type)。当该标志为l时,表示指明系统有80387辅助运算器存在,并使用32位元辅助运算器协定。ET=0指明使用80287辅助运算器。加果模拟位EM=1,则该位将被忽略。在处理器复位操作时,ET位元俞被初始化指明系统中使用的辅助器类型。如果系统中有80387,则ET被设置成1,否则若有一个80287或者没有辅助运算器,则ET被设置成0。
如果设置了TS标志並且CR0的EM标志为0,那麼在执行任何辅助运算器指令之前会產生一个设备不存在DNA(Device Not Available)異常。如果设置了TS标志但沒有设置CR0的MP和EM标志,那么在执行辅助运算器指令WAIT/FWAIT之前不会產生设备不存在異常。如果设置了EM标志,那麼TS标志对辅助运算器指令的执行无影响。见表4-1所示。
WP 对於Intel 80486或以上的CPU、CR0的位元16是防写(Write Protect)标志。当设置该标志时,处理器会禁止超级用戶程式(例如特权级0的程式)向用戶级唯读页面执行写操作;当该位复位时则反之。该标志有利於UNIX类作业系统在建立进程时实现写时复制(Copy on Write)技术。
NE 对於Intel 80486或以上的CPU,CR0的位元5是辅助运算器错误(Numeric Error)标志。当设置该标志时,就啟用了X87辅助运算器错误的內部报告机制;若重定该标志,那麼就使用PC机形式的X87辅助运算器错误报告机制。当NE为重定模式並且CPU的IGNNE输入接腳有信号时,那麼数学辅助运算器X87错误将被忽略。当NE为重定模式並且CPU的IGNNE输入接腳无信号时,那麼非遮罩的数学辅助运算器X87错误将导致处理器透过FERR接腳在外部產生一个中断,並且在执行下一个等待形式浮点指令或WAIT/FWAIT指令之前立刻停止指令执行。CPU的FERR接腳用於模拟外部辅助运算器80387的ERROR接腳,因此通常连接到中断控制器输入请求接腳上。NE标志、IGNNE接腳和FERR接腳用於利用外部逻辑来实现PC机形式的外部错误报告机制。