0xffff0 и BIOS

Когда ПК сначала загружается, он начинает выполняться в физическом адресе 0xffff0. Этот адрес содержит jmp инструкцию к BIOS.

Теперь для моего вопроса, я всегда предполагаю, что физические адреса отображаются на RAM. Если RAM первоначально содержит значения мусора, что точно помещает jmp инструкцию в 0xffff0? jmp инструкция всегда является тем же, или действительно ли это отличается для другого BIOS? 0xffff0 отображается с RAM на BIOS затем (значение, что это "трудно отображается")?

9
задан Ciro Santilli 新疆改造中心法轮功六四事件 21 September 2015 в 08:16
поделиться

3 ответа

Верхние 64 КБ или около того отображаются в ПЗУ BIOS, а не в ОЗУ.

21
ответ дан 4 December 2019 в 06:26
поделиться

Взгляните на Последовательность загрузки ПК . Как уже ответил Игнасио, он «жестко привязан» к постоянной памяти BIOS.

7
ответ дан 4 December 2019 в 06:26
поделиться

На самом деле, все немного сложнее. Во-первых, на любом процессоре, начиная с 386-го, он фактически начинается с fffffffff0 (т.е. на 16 байт меньше вершины 32-битного адресного пространства). Пока процессор впервые не выполнит инструкцию дальнего перехода, он выполняет специальное отображение, чтобы сделать видимым все 32-битное адресное пространство, даже если он работает в реальном режиме. После выполнения дальнего перехода начинается "нормальная" работа в реальном режиме.

В любом случае, на аппаратной стороне у вас обычно есть (Flash) ПЗУ, отображенное на это место, так что когда оно начинает выполняться, оно выполняет код в ПЗУ. То, что выполняется в начале, на самом деле не является BIOS - это просто код для распаковки реального BIOS из ПЗУ в ОЗУ, а затем повторное отображение ОЗУ на диапазон адресов BIOS.

4
ответ дан 4 December 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: