是否可以在虚幻模式下访问超过 4GB 的 RAM?

问题描述

在 x86-64 cpu 上,是否可以切换到虚幻模式并能够使用超过 32 位的内存寻址?

通常,可以通过首先进入保护模式,设置一个GDT(全局描述符表)条目,基数为 0,限制为 0xFFFFF,粒度设置。当使用适当的选择器加载段寄存器时,段描述符缓存将数据存储在 GDT 条目中,即使切换回实模式时也保持不变,允许使用诸如 loadall 之类的东西访问完整的 4GB 范围。唯一的警告是它对代码段不起作用,因为中断改变了 DS:[EBX] 并破坏了 CS 的上半部分。

我知道在 64 位长模式下分段是禁用的,因此无法设置具有 64 位段限制的 GDT。但是,使用 MSR(模型特定寄存器)可以设置 EIPFS 64 位基地址。切换回实模式时,此设置是否保持不变,以便可以使用 GSFS 访问高于 0xFFFFFFFF 的地址?或者也许有另一种完全不同的方式来做到这一点?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)