Da das Booten noch erforderlich ist, frage ich mich, ob das BIOS auf einem 64-Bit-System mit x64 / AMD64 noch 16-Bit-Anweisungen verwendet. Funktioniert es auch im REAL MODE?
Da das Booten noch erforderlich ist, frage ich mich, ob das BIOS auf einem 64-Bit-System mit x64 / AMD64 noch 16-Bit-Anweisungen verwendet. Funktioniert es auch im REAL MODE?
Antworten:
x86-Prozessoren starten immer noch im Real-Modus. BIOSs können während der Initialisierung ihrer Hardware frei (und manchmal auch gezwungen) in den geschützten oder langen Modus wechseln. Wenn sie jedoch die Steuerung an das Betriebssystem (oder besser dessen Bootloader) übergeben, müssen sie wieder in den realen Modus zurückkehren, da dies der Fall ist Diese Lader erwarten, dass sich das System in befindet.
Coreboot und UEFI wechseln ziemlich früh in den geschützten Modus, während wir für PCBIOSes (Phoenix / Award, Ami usw.) nichts sagen können. Sie sind Closed Source und erzählen im Allgemeinen nicht viel über ihre Interna, und ihre Schnittstellen sind alle als Real-Modus spezifiziert.
Bei Systemen, die mit ECC-RAM ausgeführt werden, können Sie relativ sicher sein, dass sie in einen Modus wechseln, der den gesamten RAM adressieren kann. Daher wechseln sie zumindest in den geschützten Modus. Dies liegt daran, dass sie den Speicher initialisieren müssen (schreiben Sie einen Wert in jede Adresse ) beim Booten oder das System würde anhalten, wenn ein späterer Code Adressen liest, in die nie geschrieben wurde (aufgrund einer Fehlererkennung, die möglicherweise zu einem falsch positiven Ergebnis führt). Aber wie gesagt, das ist intern im BIOS und nichts, was bloße Sterbliche leicht herausfinden können oder worüber sie nachdenken müssten.
tl; dr: Das BIOS befindet sich an allen Stellen, an denen es von außen sichtbar ist, im Real-Modus, sodass es in jeder Hinsicht möglicherweise immer im Real-Modus ausgeführt wird.