【发布时间】:2016-01-18 16:45:00
【问题描述】:
在 x86 中,在我们设置 PE 位 CR0 后,我们会执行一次远 JMP 以确保更改 CS/EIP。当我查看 x86 程序员手册中的逻辑流程时,对应于这条 far JMP 指令(保护模式),我看到如下内容:
Set RPL field of CS register to CPL;
我要确保特权级别为0。假设描述符中的DPL也是0,远JMP中的选择器中的RPL也是0。描述符中的C位为0,所以它是nonconforming-code-segment案子。手册说 CPL 是 CS 中的最后两位。这意味着,在远 JMP 之前,CS 应该包含一个最后两位为 00 的值。所以,当我最初处于实模式时,我是否应该确保 CS 在我之前具有符合此条件的某个值执行远 JMP? 如果换个说法,当我们从实模式切换到保护模式时,CPL 是什么?
【问题讨论】:
-
好问题,顺便说一句。当我开始使用这些东西时,我想知道几个月来完全一样。
-
谢谢,cad。不过,我的头在旋转,您的回复中嵌入了如此多的嵌套信息。我想我可能需要几个月的时间才能吸收他们。但在那之前我需要了解很多,因为我很快就会登上老师的讲台。
标签: x86 privileges protected-mode setjmp real-mode