【发布时间】:2017-12-21 03:15:28
【问题描述】:
我刚刚写完review for a program that displays the results from QuerySystemAddressMap。
我还有两个问题:
看到那些 - 对于最不必要的大 - 32 位参数
ECX、EBX,尤其是EAX中的函数号,我怀疑可能存在与此 BIOS 函数对应的保护模式.我的怀疑正确吗?当the BIOS function 0000E820h 在内存超过 4GB 的计算机上运行从真实地址模式并且知道超过 4GB 标记的内存将无法寻址时,地址和长度会不会报告低于 4GB?
通常我会尝试一下并自己找出答案,但我还没有这种硬件。
【问题讨论】:
-
您没有内存超过 4 GB 的硬件?因为每个系统,即使是全新的系统,都以实模式启动,因此很容易测试。据我所知,没有 ROM BIOS 中断可以从保护模式访问。 This reference 建议 E820h 也只是实模式。我认为它使用 32 位寄存器的原因只是历史原因:它是为 Compaq SystemPro 引入的,这是第一个需要它的系统,它使用了 386 处理器。为什么不使用完整的寄存器?
-
@CodyGray 我有点推测可能存在类似于 VESA 视频 BIOS 上可用的 ProtectedModeEntryPoint 的东西。至于“为什么不使用完整的寄存器”,所有这些操作数大小前缀和 32 位立即数在实地址模式下占用了大量字节。
标签: assembly memory x86-64 bios