Когда ПК сначала загружается, он начинает выполняться в физическом адресе 0xffff0. Этот адрес содержит jmp инструкцию к BIOS.
Теперь для моего вопроса, я всегда предполагаю, что физические адреса отображаются на RAM. Если RAM первоначально содержит значения мусора, что точно помещает jmp инструкцию в 0xffff0? jmp инструкция всегда является тем же, или действительно ли это отличается для другого BIOS? 0xffff0 отображается с RAM на BIOS затем (значение, что это "трудно отображается")?
Верхние 64 КБ или около того отображаются в ПЗУ BIOS, а не в ОЗУ.
Взгляните на Последовательность загрузки ПК . Как уже ответил Игнасио, он «жестко привязан» к постоянной памяти BIOS.
На самом деле, все немного сложнее. Во-первых, на любом процессоре, начиная с 386-го, он фактически начинается с fffffffff0 (т.е. на 16 байт меньше вершины 32-битного адресного пространства). Пока процессор впервые не выполнит инструкцию дальнего перехода, он выполняет специальное отображение, чтобы сделать видимым все 32-битное адресное пространство, даже если он работает в реальном режиме. После выполнения дальнего перехода начинается "нормальная" работа в реальном режиме.
В любом случае, на аппаратной стороне у вас обычно есть (Flash) ПЗУ, отображенное на это место, так что когда оно начинает выполняться, оно выполняет код в ПЗУ. То, что выполняется в начале, на самом деле не является BIOS - это просто код для распаковки реального BIOS из ПЗУ в ОЗУ, а затем повторное отображение ОЗУ на диапазон адресов BIOS.