2008-08-21 4 views
7

Я работаю над загрузчиком на машине x86.Состояние регистра после загрузки

Когда BIOS копирует содержимое MBR в 0x7c00 и переходит на этот адрес, существует ли стандартное значение для содержимого регистров? Имеют ли регистры стандартные значения?

Я знаю, что регистры сегментов обычно равны 0, но иногда будут 0x7c0. Как насчет других аппаратных регистров?

ответ

8

Эта ранняя среда исполнения является высокой реализацией, что означает реализацию вашего конкретного BIOS. Никогда не делайте никаких предположений о содержании регистров. Они могут быть инициализированы до 0, но они также могут содержать случайное значение.

из OS dev Wiki, который где я могу получить информацию, когда я играю с моей игрушкой ОС,

1

Лучшим вариантом было бы ничего не принимать. Если они имеют смысл, вы найдете это с другой стороны, когда вам нужна информация, которую они предоставляют.

1

Неопределенный, я считаю? Я думаю, что это зависит от материнской платы и процессора, и его следует рассматривать как случайный для вашего же блага.

1

Вы всегда можете инициализировать их самостоятельно начать с известного состояния.

1

Безопасная ставка заключается в том, чтобы считать неопределенным.

1

Единственное, что я знаю, чтобы быть четко определенным, - это состояние процессора сразу после сброса.

Для записи вы можете найти что в Intel's Software Developer's Manual Том 3 Глава 8: «УПРАВЛЕНИЕ ПРОЦЕССОР И ИНИЦИАЛИЗАЦИИ» в таблице под названием «IA-32 государства-Processor После включения питания, сброса или INIT»

1

Всегда принимайте undefined, иначе вы столкнетесь с плохими проблемами, если попытаетесь объединить архитектуры.

Нет ничего похожего на боль при портировании кода, предполагающего, что все неинициализированные будут установлены на ноль.

Смежные вопросы