【发布时间】:2020-05-17 12:02:43
【问题描述】:
我正在 x86 上进行一些裸机编程。我处于 16 位模式并使用 qemu 进行仿真...我使用 int 0x15/ax = 0xE820 查看内存映射...使用 qemu 监视器(检查我编写映射的区域)我得到以下信息关于内存映射:
Start=0 Length= 0x9fc00 (type 1)
Start=0x9fc00 Length= 0x400 (type 2)
Start=0xf0000 Length= 0x10000 (type 2)
Start=0x100000 Length= 0x7ee0000 (type 1)
Start=0x7fe0000 Length= 0x10000 (type 2)
Start=0xfffc0000 Length = 0x40000 (Type 2)
那么,不在此映射中的段(例如 0xA0000)是否属于 MMIO 之类的东西?我知道 BIOS 等使用类型 2 内存区域(Start=0x9fc00 Length= 0x400 (type 2) 是 EDBA)当我写入这些区域时会发生什么?
注意:我没有类型 3(ACPI) 可能是因为我使用的是 qemu。在真正的硬件中,我很可能也应该获得类型 3 区域。那也是内存吗?
【问题讨论】:
标签: memory bios memory-management acpi x86