【发布时间】:2011-12-09 22:08:20
【问题描述】:
x86 CPU 从物理地址 0xFFFFFFF0 开始执行。 BIOS ROM 位于地址空间的末尾。 CPU 从 ROM 执行的第一条指令是远跳转,这会导致 CS 段被重新加载,因此下一条指令从物理区域 0x000F0000 - 0x000FFFFF 内执行。
是什么导致 ROM 在两个区域都响应? PC上是否有一些特殊的地址解码逻辑?我在 Bochs 源代码中找到注释,指出最后 128K 的 BIOS ROM 映射到 0xE0000 - 0xFFFFF。但是我找不到有关此的更多信息。显然,这是 PC 特有的,因为我有 x86 嵌入式板,并且这种镜像不会在那里发生。我只能使用近跳。
【问题讨论】: