x86-Programmierung und -Betriebsarten (Teil 1)

Die sechsteilige Artikelserie behandelt die Speicheradressierung und die x86-Betriebsarten. Dieser Teil widmet sich dem Code- und Datensegment sowie dem Befehlszähler und der Verwendung des Stacks.

In der logischen Adressierung des Speichers bei x86-Prozessoren findet sich auch der Schlüssel für die mitunter recht eigentümlich anmutende Speicherverwaltung, die mit den Prozessoren für PCs einhergeht, was oft zu Missverständnissen und Fehlinterpretationen führt. Demnach ist eine eingehende Untersuchung der (segmentierten) Speicherorganisation und der beteiligten Register notwendig, was durch entsprechende Programmierbeispiele verdeutlicht wird.

Außerdem unterscheidet sich die Speicheradressierung abhängig vom aktiven Betriebsmodus, also je nachdem, ob die CPU (ab 80386) im Real, Protected oder Virtual 8086 Modus arbeitet und ob die Paging Unit aktiv ist oder nicht.

Zur Erklärung der Funktionen muss man keinen der aktuellen hochkomplexen Prozessoren als Referenz heranzuziehen. Die Artikelreihe verwendet deshalb als "einfache" und überschaubare Beispiel-CPU den 80386. Er war der erste 32-Bit-Prozessor in PCs. Seine grundlegende Architektur wurde mit den Nachfolgemodellen (486 bis Pentium III) weitergeführt und jeweils um einige On-Chip-Schaltungselemente (mathematischer Coprozessor, Cache) erweitert. Der 80386 ist zum Verständnis der logischen Adressierung und der Speicherverwaltung von x86-CPUs daher bestens geeignet, das er vergleichsweise einfach zu verstehen ist und die Erkenntnisse trotzdem noch aktuell sind.

Die Artikelserie basiert auf dem Kapitel 6 des "PC Hardwarebuch" von Addison Wesley. Sie können in unserem Buch-Shop das über 1200 Seiten starke Kompendium bestellen oder als eBook downloaden.

Serie: x86-Programmierung und -Betriebsarten

Teil 1

Code-/Datensegment, Befehlszähler und Stack

Teil 2

Adressierungsarten und Befehlsdekodierung sowie Real Mode

Teil 3

Interrupts und Exceptions

Teil 4

Der Protected Mode

Teil 5

Paging und die MMU

Teil 6

Der Virtual-8086-Modus