X86
| Diese Seite oder Abschnitt ist zwar komplett, es wird aber folgende Verbesserungen gewünscht:
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
Aufbau einer 32-Bit-CPU
Details siehe Register.
Mehrzweckregister
Die 32 Bit x86 Prozessoren verfügen über 4 je 32 Bit breite Mehrzweck-Register, wobei das 'E' jeweils für Extended steht:
- EAX (engl.: Accumulator Register) wird in C für Rückgabewerte von Funktionen verwendet
- EBX (engl.: Base Register)
- ECX (engl.: Counter Register) meistens als Zähler verwendet
- EDX (engl.: Data Register)
Diese Mehrzweck-Register (engl.: General Purpose Registers) sind vielseitig verwendbar.
Des Weiteren gibt es:
- ESI (engl.: Source Index) zeigt bei Stringoperationen auf die Quelle
- EDI (engl.: Destination Index) zeigt bei Stringoperationen auf das Ziel
- EBP (engl.: Base Pointer) Pointer auf den Start des Speichers für ein (Unter-) Programm
- ESP (engl.: Stack Pointer) zeigt auf das aktuelle Element des Stacks, sollte nicht verändert werden wenn man nicht weiß was man tut
Segment-Register
- DS (engl.: Data Segment)
- CS (engl.: Code Segment)
- SS (engl.: Stack Segment)
- FS
- GS
- ES
Zusätzliche Spezial-Register
- EIP (engl.: Instruction Pointer) zeigt auf den nächsten auszuführenden Befehl
- EFLAGS (engl.: Flag Register) die einzelnen Bits haben unterschiedliche Bedeutung und werden für bedingte Sprungbefehle eingesetzt
- 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, CR1, CR2 und CR3 (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
Erkennen der CPU
Mit dem Befehl CPUID kann man Daten wie Hersteller der CPU auslesen.