x86 CPU从物理地址0xFFFFFFF0开始执行。在地址空间的末尾,BIOS ROM位于那里。CPU从ROM执行的第一条指令是远跳转(far jump),它会导致CS段重新加载,因此下一条指令将从物理区域0x000F0000-0x000FFFFF内执行。
是什么导致ROM在这两个区域上响应?PC上有一些特殊的地址解码逻辑吗?我在Bochs源代码中发现了注释,说明BIOS ROM的最后128K映射到0xE0000-0xFFFFF。然而,我找不到更多关于此的信息。显然,这是一些PC特定的东西,因为我有一个x86嵌入式板,这种镜像并没有发生。我只能使用近跳转。