Domanda

Sto lavorando su un boot loader su una macchina x86.

Quando il BIOS copia il contenuto dell'MBR in 0x7c00 e passa a quell'indirizzo, esiste un significato standard per il contenuto dei registri?I registri hanno valori standard?

So che i registri dei segmenti sono generalmente impostati su 0, ma a volte saranno 0x7c0.E gli altri registri hardware?

È stato utile?

Soluzione

Questo ambiente di esecuzione iniziale è altamente definito dall'implementazione, ovvero dall'implementazione del tuo particolare BIOS.Non fare mai supposizioni sul contenuto dei registri.Potrebbero essere inizializzati su 0, ma potrebbero anche contenere un valore casuale.

dal Wiki di sviluppo del sistema operativo, dove ottengo informazioni quando gioco con i miei sistemi operativi giocattolo

Altri suggerimenti

La soluzione migliore sarebbe non dare per scontato nulla.Se hanno un significato, lo troverai dall'altra parte quando avrai bisogno delle informazioni che forniscono.

Indefinito, credo?Penso che dipenda dalla scheda madre e dalla CPU e dovrebbe essere trattato come casuale per il tuo bene.

La scommessa più sicura è assumere indefinito.

Assumi sempre undefinito, altrimenti incontrerai grossi problemi se provi a eseguire il porting di architetture.

Non c'è niente di paragonabile al dolore del porting del codice che presuppone che tutto ciò che non è inizializzato verrà impostato su zero.

L'unica cosa che so essere ben definita è lo stato del processore immediatamente dopo il ripristino.

Per la cronaca puoi trovare Quello In Manuale dello sviluppatore di software Intel Vol 3 capitolo 8:"GESTIONE E INIZIALIZZAZIONE DEL PROCESSORE" nella tabella intitolata "Stati del processore IA-32 dopo l'accensione, il ripristino o l'INIZIALIZZAZIONE"

Puoi sempre inizializzarli tu stesso per iniziare con uno stato noto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top