2008-08-21 7 views
7

Je travaille sur un chargeur de démarrage sur une machine x86.État des registres après le démarrage

Lorsque le BIOS copie le contenu du MBR à 0x7c00 et saute à cette adresse, existe-t-il une signification standard pour le contenu des registres? Les registres ont-ils des valeurs standard?

Je sais que les registres de segments sont généralement mis à 0, mais seront parfois 0x7c0. Qu'en est-il des autres registres de matériel?

Répondre

8

Cet environnement d'exécution précoce est fortement défini par l'implémentation, ce qui signifie l'implémentation de votre BIOS particulier. Ne faites jamais d'hypothèses sur le contenu des registres. Ils peuvent être initialisés à 0, mais ils peuvent également contenir une valeur aléatoire.

du OS dev Wiki, qui est où je reçois des informations quand je joue avec mon les

1

La meilleure option serait de ne rien supposer. S'ils ont un sens, vous trouverez cela de l'autre côté quand vous avez besoin des informations qu'ils fournissent.

1

Non défini, je crois? Je pense que cela dépend de la carte mère et du processeur, et devrait être traitée comme aléatoire pour votre propre bien.

1

OS de jouets Vous pouvez toujours initialiser vous commencer par un état connu.

1

Le pari le plus sûr est de supposer indéfini.

1

La seule chose que je sais être bien défini est l'état du processeur immédiatement après la réinitialisation.

Pour mémoire, vous pouvez trouver que dans Intel's Software Developer's Manual Vol 3 chapitre 8: « GESTION DE PROCESSEUR ET INITIALISATION » dans le tableau intitulé « IA-32 États Processeur Après la mise sous tension, Reset ou INIT »

1

Supposons toujours indéfini, sinon vous rencontrerez de mauvais problèmes si vous essayez de porter des architectures.

Il n'y a rien de tel que le code de portage qui suppose que tout ce qui n'est pas initialisé sera mis à zéro.