在 x86 中,在我们设置 PE 位 CR0 后,我们做一个 far JMP 以确保 CS/EIP 被改变。当我查看 x86 程序员手册中的逻辑流程时,对应于这条 far JMP 指令(保护模式),我看到如下内容:
Set RPL field of CS register to CPL;
我想确保特权级别为0。假设描述符中的DPL也为0,远JMP中的选择器中的RPL也为0。描述符中的C位为0,因此它是不合格代码段的情况。手册说 CPL 是 CS 中的最后两位。这意味着,在远 JMP 之前,CS 应该包含一个最后两位为 00 的值。所以,当我最初处于实模式时,我是否应该确保 CS 在我之前具有符合此条件的某个值执行远 JMP?如果我换个说法,当我们从实模式切换到保护模式时,CPL 是什么?