X86

Aus Lowlevel

Wechseln zu: Navigation, Suche
Diese Seite oder Abschnitt ist zwar komplett, es wird aber folgende Verbesserungen gewünscht:

  • Ein Diagramm zur Registerarchitektur hinzufügen
  • Ergänzungen zur Handhabung von Interrupts
  • Eingehen auf verschiedene Befehlssätze

Hilf Lowlevel, den Artikel zu verbessern.

Die x86-Architektur galt lange Zeit als quasi Standard für so gut wie alle Prozessoren. Sie wurde von Intel ins Leben gerufen und nach den Prozessoren der Baureihe 8086/8088 benannt. Der wirkliche Durchbruch begann allerdings erst mit dem ersten 32 Bit Prozessor, dem 80386, oder auch kurz 386 genannt. Der grundlegende Prozessoraufbau ist seitdem gleichgeblieben, alle neueren Prozessoren sind seitdem abwärtskompatibel zum 386 bzw 486. Intel selbst nennt diese Architektur heute IA-32 (Intel Architecture with 32 Bit). In absehbarer Zukunft wird der x86 Standard aber wohl durch den x64-Standard ersetzt werden.


Inhaltsverzeichnis

CPU

Register

Übersicht

Bits Register
8 AL, BL, CL, DL, AH, BH, CH, DH
16 AX, BX, CX, DX, DI, SI, BP, SP, CS, DS, ES, FS, GS, SS
32 EAX, EBX, ECX, EDX, EDI, ESI, EBP, ESP, EIP, EFLAGS
128 XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7


Allzweckregister

Bytes
3 2 1 0
E?X
 ?X
 ?H  ?L
 ? = A, B, C, D
Die Allzweckregister können, wie ihr Name schon andeutet eigentlich für fast jeden Zweck genutzt werden. Trotzdem gibt es einige gebräuchliche Nutzungen:
  • EAX (engl.: Accumulator Register): für Rechenoperatioen, als Rückgabewert in C
  • EBX (engl.: Base Register): als Basisadresse für indizierte Adressierung
  • ECX (engl.: Counter Register): als Zähler
  • EDX (engl.: Data Register)


Indexregister

Bytes
3 2 1 0
E?I
 ?I
 ? = D, S
Die Indexregister werden oft als Indexe in Datenbereichen (va. bei den eingebauten Stringoperationen) verwendet. Dabei zeigt
  • ESI (engl.: Source Index) auf die Quelle
  • EDI (engl.: Destination Index) auf das Ziel


Zeigerregister

Bytes
3 2 1 0
E?P
 ?P
 ? = B, S
Die Zeigerregister werden genutzt, um auf Stellen im Speicher zu zeigen.
  • ESP (engl.: Stack Pointer): Zeigt immer auf den aktuellen Stack
  • EBP (engl.: Base Pointer): Wird meistens für Stackframes und lokale Variablen bei Funktionsaufrufen verwendet


Instruktionsregister

Bytes
3 2 1 0
EIP
IP
Das Instruktionsregister EIP (engl.: Instruction Pointer) zeigt immer auf den nächsten auszuführenden Befehl. Es kann nicht direkt geändert werden, sondern nur über Instruktionen wie jmp, call oder ret


Flagregister

Hauptartikel: EFLAGS

Bytes
3 2 1 0
EFLAGS
Das Flagregister EFLAGS speichert einige Konfigurationsmöglichkeiten und Systemzuständen, beispielsweise, ob Interrupts gerade erlaubt sind oder ob ein Übertrag bei einer Addition stattfand.


Segmentregister

Bytes
1 0
 ?S
 ? = C, D, E, F, G, S
Die Segmentregister geben die Basisadresse des aktuellen Segments an. Dabei steht
  • CS für das Code-Segment
  • DS für das Data-Segment
  • SS für das Stack-Segment
  • ES für das Extra-Segment

FS und GS sind zusätzliche Daten-Segmente.

Die Segmentregister sind im Protected Mode auch für die Segmentierung mit Hilfe der GDT verantwortlich.


Zusätzliche Spezialregister

  • GDTR (engl.: Global Descriptor Table Register) gibt die Position der GDT an
  • LDTR (engl.: Local Descriptor Table Register) gibt die Position der LDT an
  • IDTR (engl.: Interrupt Descriptor Table Register) gibt die Position der IDT an
  • CR0, CR2, CR3 und CR4 (engl.: Control Register) werden im Protected Mode zum Paging benutzt
  • TR6 – TR7 (engl.: Test Register) zum Überprüfen des Translation Lookaside Buffers (TR0-TR5 gibt es beim 80386 nicht)
  • DR0 – DR7 (engl.: Debug Register) zum Setzen von Breakpoints
  • TR (engl.: Task Register) Segment-Selektor des TSS
  • MSRs (engl.: Machine-Specific Register)


Erkennen der CPU

Mit dem Befehl CPUID kann man beispielsweise die von der CPU unterstützten Features oder Daten wie den Hersteller der CPU auslesen.

sonstige Hardware

Diese Seite oder Abschnitt ist zwar komplett, es wird aber folgende Verbesserungen gewünscht:

Andere zur Platform gehörende Hardware auflisten mit Links zu den entsprechenden Artikeln

Hilf Lowlevel, den Artikel zu verbessern.


Weblinks

Persönliche Werkzeuge