首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大实模式下的地址转换

大实模式下的地址转换
EN

Stack Overflow用户
提问于 2015-07-24 10:19:57
回答 1查看 555关注 0票数 2

我有一些关于地址转换是如何在大的真实模式下发生的问题,正如模式所说

非实模式包括打破实模式段的‘64 of’限制,但仍然通过调整描述符缓存来保持16位指令和segment*16+offset地址的形成。

但我的问题是,gdt是如何在这个过程中使用的,甚至是在将gdt转换成线性地址时使用它。如果有人可以指出一些规范或其他参考,以切换到大的真实模式,这将是非常有帮助的,如果有人可以提供一些关于如何切换回真实模式的洞察力,这将是非常好的。

致以敬意,

阿尔卡

EN

回答 1

Stack Overflow用户

发布于 2015-07-26 18:40:24

是的,我很确定GDT是用的,因为你需要先创建它。维基百科说:

要使80386或更高的微处理器进入非真实模式,程序必须首先进入保护模式,在GDT或LDT中查找或创建一个平面描述符,用相应的保护模式“选择器”加载一些数据段寄存器,然后切换回实模式。返回到实模式后,处理器将继续使用在保护模式下建立的缓存描述符,从而允许从实模式访问4 GiB的“扩展”内存。 从80386开始,实模式程序可以使用带有操作数大小覆盖前缀的32位寄存器。这允许程序使用DS:EAX这样的地址。在正常的实模式中,如果EAX超过0xFFFF,就会发生故障。在不真实的模式下,允许访问。

顺便提一句,您提供的链接应该足够好,可以让您进入不真实的模式。从技术上讲,你不能“回到”真实模式,因为虚幻模式和真实模式同时存在。也许他们之间唯一的主要区别是他们的记忆能力。如果您想要“返回”到实模式,只需按正常情况在实模式下寻址内存即可。

基本上,你只需记住这一点,就能分辨出不同之处:

在正常的实模式中,如果EAX超过0xFFFF,就会发生故障。在不真实的模式下,允许访问。

我希望这能帮到你!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31608007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档