E820h 查询系统地址映射在 4GB+ 内存上返回的值



我刚刚写完一个显示QuerySystemAddressMap结果的程序的评论。
我剩下两个问题:

  1. 看到那些 - 对于最不必要的大 - 32位参数ECXEBX,尤其是EAX中的功能编号,我怀疑可能存在此BIOS功能的保护模式对应项。我的怀疑正确吗?

  2. 当 BIOS 功能 0000E820h 在内存超过 4GB 的计算机上从真实地址模式运行时,并且知道超过 4GB 标记的内存将无法寻址,报告的地址和长度是否会保持在 4GB 以下?

通常我会尝试一下并自己找出答案,但我(还没有)这种硬件。

BIOS 函数 INT 15h EAX=0000E820h 旨在获取系统的完整内存映射,旨在克服以前接口上不支持 4 GB 以上内存的限制。因此,此函数不报告 4 GB 以上的内存是没有意义的。没有保护模式等效的 BIOS 功能。(尽管 UEFI GetMemoryMap 服务在通过 UEFI 引导时提供等效的功能,而不是传统的 BIOS 引导方法。

该函数旨在在操作系统进入保护模式之前以实模式调用。在实模式下使用 32 位寄存器所需的几个额外代码字节是微不足道的。无论如何,大多数操作系统都会回收早期实模式启动代码使用的内存。

最新更新