Advertisement

Bochs源码分析 - 16:conforming和non-conforming code segments的区别及其实现

阅读量:

前言

在学习x86架构的过程中,在代码段中存在一个细节令人感到困惑之处。具体来说,则涉及type字段的11位设置。在此之前一直似懂而非完全掌握;如果说自己对该功能尚有诸多疑问的话,则可以说自己对其基本概念尚不明确;即便说是对其实质作用尚不明确的情况下,则会感觉到这一细节处理起来略显吃力;尤其是处理权限相关的操作时更是如此

Intel手册说明

下面来引用intel手册中对这问题的描述(卷三 3.4.5.1节)

代码片段可以分为合规类或非合规类。
执行转移到更特权的合规类片段将允许在当前权限水平上继续执行。
当执行转移至不同权限级别的非合规片段时,通常会产生一般保护例外(#GP),除非使用了调用门限或任务门限。

对于一致的代码块而言,在这种情况下低权限程序能够调用对应的高权限模块(反之则不可行);而对于非一致的代码块来说,则会出现不同组件间的权限交互问题(即会导致类似于Group Policy的行为发生),因此需要通过特定的方法或机制来进行处理。

所有数据段都是非合规的,即它们无法被低权限程序或过程访问(指执行更高数值权限代码的程序)。与代码段不同的是,数据段可以直接被高权限程序或过程访问(指执行较低数值权限代码的程序),而无需专用入口。

我们今天来讲解的是"所有数据段都是非一致代码段"这一部分内容,在这种情况下,低级权限程序无

全部评论 (0)

还没有任何评论哟~