2008-08-21 803 views
7

Estoy trabajando en un cargador de arranque en una máquina x86.Estado de los registros después del arranque

Cuando el BIOS copia los contenidos del MBR a 0x7c00 y salta a esa dirección, ¿existe un significado estándar para los contenidos de los registros? ¿Los registros tienen valores estándar?

Sé que los registros de segmentos generalmente se establecen en 0, pero a veces serán 0x7c0. ¿Qué pasa con los otros registros de hardware?

Respuesta

8

Este entorno de ejecución temprana está altamente implementado, lo que significa la implementación de su BIOS en particular. Nunca haga suposiciones sobre el contenido de los registros. Se pueden inicializar a 0, pero también pueden contener un valor aleatorio.

del OS dev Wiki, que es donde consigo la información cuando estoy jugando con mi juguete de

1

La mejor opción sería no asumir nada. Si tienen significado, lo encontrarán del otro lado cuando necesiten la información que brindan.

1

Indefinido, creo? Creo que depende de la placa base y la CPU, y debe tratarse como aleatorio por su propio bien.

1

Siempre se les puede inicializar sí mismo para comenzar con un estado conocido sistema operativo.

1

La apuesta más segura es suponer indefinida.

1

Lo único que sé que está bien definido es el estado del procesador inmediatamente después del reinicio.

Para el registro se puede encontrar que en Intel's Software Developer's Manual Vol 3 Capítulo 8: "Gestión del procesador y de inicialización" en la tabla titulada "IA-32 Estados Procesador después del encendido, reset, o INIT"

1

Siempre asuma que no está definido, de lo contrario, tendrá problemas graves si alguna vez trata de portar arquitecturas.

No hay nada como el dolor del código de transferencia que supone que todo lo no inicializado se pondrá a cero.

Cuestiones relacionadas