面简单地说明了把选择子装入代码段寄存器CS时为实现保护而进行的检测,下面也简单地说明在把选择子装入数据段寄存器和堆栈段寄存器时要进行的检测。 在把选择子装入数据段寄存器DS、ES、FS或GS时,要进行如下检测: (1)选择子不能为空; (2)选择子指定的描述符必须是数据段描述符、可读可执行的代码段或一致可读的可执行代码段的描述符; (3)对于数据段和可读可执行代码段,要求CPL<=DPL,RPL<=DPL; (4)对应的段必须存在。 若装入的选择子不满足上述要求,则会产生异常。 在把选择子装入堆栈段寄存器SS时要进行如下检测: (1)选择子不能为空; (2)选择子指定的描述符必须是可读写的数据段描述符; (3)要求CPL=DPL=RPL; (4)对应段必须存在。 若装入的选择子不满足上述条件,则在装入SS时就会引起异常。
|