【发布时间】:2014-12-19 16:57:59
【问题描述】:
在实模式启动后,我想找出最低和最高 我可以使用的可能的内存地址。我想我需要找出 然后计算安装在机器上的 ram 的实际大小 地址应该很简单(但只是为了好玩,我该怎么做:))。 然后我可以将这些地址用作 我的 gdt 的基础和限制对吗?这样加载gdt后, 进入保护模式,并设置我的段。我会拥有所有的记忆 可以玩。
【问题讨论】:
标签: memory assembly kernel ram
在实模式启动后,我想找出最低和最高 我可以使用的可能的内存地址。我想我需要找出 然后计算安装在机器上的 ram 的实际大小 地址应该很简单(但只是为了好玩,我该怎么做:))。 然后我可以将这些地址用作 我的 gdt 的基础和限制对吗?这样加载gdt后, 进入保护模式,并设置我的段。我会拥有所有的记忆 可以玩。
【问题讨论】:
标签: memory assembly kernel ram
根据定义,实模式不能寻址所有内存。您必须首先切换到保护模式,使用安全的 GDT 限制,扫描内存,然后相应地调整描述符限制。
至于检测内存,只需尝试从增加的物理地址读取,直到出现异常。为此指定一个选择器,在循环中重置描述符,然后继续。
【讨论】: