Content #
- conforming类型强迫使用低权限或相等权限(CPL>=DPL)来运行,进入conforming段运行不改变当前运行的CPL值(无论是通过直接调用还是gate调用)。
- nonconforming类型限制用户使用低权限来运行(进入高权限代码需要通过gate符调用)。
conforming段: 用于不重要、无须保护的代码。 non-conforming段:用于需要保护的代码和数据。
在某些场合下,使用conforming段会比使用non-conforming段灵活:某个库routine并不涉及重要的数据和使用系统资源,它能在任意权限下运行:
- 使用conforming段将DPL设为0级权限,在3级权限下可以直接调用(CPL>DPL),在0级权限下,依然可以使用直接调用(CPL==DPL)。
- 使用non-conforming段将DPL设为3级权限,在3级权限下可以直接调用(CPL==DPL),而在其他级别无法直接调用,例如在0级不能直接调用3级权限的代码(CPL!=DPL)。将DPL设为0级权限,在3级权限下可以使用gate符进行调用,在0级权限下也可以使用gate符进行调用。
相比之下,non-conforming段的执行权限需要被定义为0级,通过gate符进行调用,显得不如conforming段灵活。并且conforming段定义在3级权限,不会改变调用者的CPL值。对于不重要的库routine来说,使用conforming段会更适合些。