微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决是否可以在虚幻模式下访问超过 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 举报,一经查实,本站将立刻删除。