Как ПЗУ BIOS отображается в адресное пространство на ПК?

ЦП x86 начинает выполнение с физического адреса 0xFFFFFFF0. Там в конце адресного пространства находится ПЗУ BIOS. Первая инструкция, которую ЦП выполняет из ПЗУ, - это дальний переход, который вызывает перезагрузку сегмента CS, поэтому следующая инструкция выполняется из физической области 0x000F0000 - 0x000FFFFF.

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

12
задан manison 18 October 2011 в 08:57
поделиться