AMD手册:24593 3.28 March 2017
嵌套返回到64位模式过程。在长模式下,改变特权级别的远程调用会导致SS寄存器加载一个空选择符(这与长模式中的中断所采取的操作相同)。如果被调用的过程执行另一个远程调用到更高特权的过程或被中断,则将空SS选择器压入堆栈帧,并将另一个空选择器加载到SS寄存器中。以这种方式使用空选择器可以使处理器正确处理嵌套在64位模式过程和中断处理程序中的返回。
通常情况下,将空选择器弹出到SS寄存器的RET会导致发生通用保护异常(#GP)。但是,在长模式下,空选择器用作表示嵌套中断处理程序或其他特权软件在64位模式下存在的标志。长模式允许RET在以下条件下从堆栈中将空选择器弹出到SS中:
•目标模式是64位模式。
•目标CPL小于3。
在这种情况下,处理器不加载SS描述符,并且空选择器被加载到SS中而不引起#GP异常。
网友评论