AMD 64 位模式下的段限制检查

Nul*_*lik 0 assembly operating-system x86-64 memory-segmentation

我正在为 64 位处理器编写自己的操作系统,但遇到了一般保护问题。我的操作系统不会依赖页面错误来实现用户空间保护机制,所以我发现有一种方法可以通过段限制检查来实现:

这个来自 VMWare 的演示

http://download3.vmware.com/vmworld/2005/pac346.pdf

在第 20 页上说:

  • 最初的 AMD64 架构不包括 64 位模式下的分段

    • EMT64T 中也缺少分段

    我们如何保护 VMM?

    • 64 位来宾支持需要额外的硬件协助
    • 在较新的 AMD 处理器上的 64 位模式下可用的段限制检查

现在,我有了更新的 AMD 处理器型号,我的问题是如何在 64 位(长)模式下对 AMD 处理器进行限制段限制检查?我已经下载了 2011 年 9 月版本(最新)的开发人员手册,但我无法在任何地方找到如何执行此操作,请帮助。

use*_*653 5

我认为他们可能在讨论第 2 卷 3.1.7 页LMSLE的“扩展功能启用寄存器”(EFER)中的长模式段限制启用位(第13 位)。55 . 在第 114 页的“4.12.2 64 位模式下的数据限制检查”中有更详细的描述。请注意,这EFER是一个特定于模型的寄存器(更多信息请参见第 156 页的“6.2.5 访问特定于模型的寄存器”)也在第 2 卷中)。

  • 不幸的是,正如@PaulBetts 的回答也指出的那样,如果您尝试在 64 位操作系统上强加分段内存访问,那么您正在对机器工作(并且您很快就会肆虐)。限制检查可能是为了响应 VMWare 和其他人想要它用于他们的目的而不是 OS 编写者而添加的。 (3认同)