E820h QuerySystemAddressMap 在 4GB+ 内存上返回的值

Values returned by E820h QuerySystemAddressMap on 4GB+ memory

刚写完一篇review for a program that displays the results from QuerySystemAddressMap
我还有 2 个问题:

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

  2. the BIOS function 0000E820h在内存大于4GB的计算机上从实地址模式运行并且知道4GB以上的内存不会可寻址,报告的地址和长度是否会保持在 4GB 以下?

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

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

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