【问题标题】:Current x86 privilege level on a custom OS自定义操作系统上的当前 x86 权限级别
【发布时间】:2015-10-13 17:45:07
【问题描述】:

在 x86 上以保护模式运行的自定义操作系统中,除了例如执行特权指令并查看它是否崩溃?

例如,寄存器CR0 包含PE 位,它指示我们是在实模式还是保护模式下运行,并且可以使用汇编代码轻松检索。

特权级别有什么等价的吗?

Intel architecture software developer manual 提到EFLAGS 寄存器包含两个与 I/O 特权级别相关的 IOPL 位。这和当前的权限级别(CPL)一样吗?

【问题讨论】:

标签: assembly x86 privilege


【解决方案1】:

不,不一样。这些代表 io 特权级别。一些指令如INOUTCLI 需要使用IOPLCPL 确定的io 权限。

另见:

IOPL I/O 特权级字段(位 12 和 13)——表示 I/O 特权 当前运行的程序或任务的级别 (IOPL)。的 CPL 当前运行的程序或任务必须小于或等于 IOPL 才能 访问 I/O 地址空间。

CPL 可以简单地从CS 选择器中读取为两个最低位:

mov ax, cs
and ax, 3

这当然只适用于保护模式。

【讨论】:

  • 确实,很简单,一会就知道了,但是在3603页长的手册中搜索时一点也不明显。
猜你喜欢
  • 2012-08-26
  • 2013-07-23
  • 1970-01-01
  • 2019-10-09
  • 2014-07-27
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 2011-06-24
相关资源
最近更新 更多