Процессор x86 начинает выполнение по физическому адресу 0xFFFFFFF0. Там, в конце адресного пространства, находится BIOS ROM. Первая инструкция, которую CPU выполняет из ПЗУ, - это большой скачок, который вызывает перезагрузку сегмента CS, поэтому следующая инструкция выполняется из физической области 0x000F0000 - 0x000FFFFF.
Что заставляет ПЗУ реагировать на оба региона? Есть ли какая-то специальная логика декодирования адресов на ПК? Я нашел комментарий в исходном коде Bochs, в котором говорится, что последний 128K BIOS ROM сопоставляется с 0xE0000 - 0xFFFFF. Однако я не могу найти больше информации об этом. Очевидно, что это то, что характерно для ПК, поскольку у меня встроенная плата x86, и такого зеркалирования там не происходит. Я могу использовать только прыжок.