80386
thumb|Intel 80386 80386 ist Bestandteil der Typbezeichnung eines Mikroprozessors der Firma Intel. Dieser und dessen Nachfolger (80486 und Pentium I, II, III, IV) werden heute am häufigsten als CPU in PCs eingesetzt. 80386-Prozessoren wurden erstmals 1986 als Nachfolger des 80286 ausgeliefert.
Mit dem 80386 vollzog Intel den Wechsel zur 32-Bit-Architektur (IA-32, oft auch i386 genannt), deren Funktionen auch in allen Nachfolgemodellen bis zum aktuellen Pentium IV immer noch vorhanden sind und die gleichzeitig anderen Herstellern als Vorlage für eigene Prozessoren diente. Die Register dieser Prozessorfamilie sowie der Adressraum der Architektur sind 32 Bit breit.
Eine Spezialvariante war die SX-Version mit einer Datenbus-Bandbreite von 32 Bit intern und 16 Bit extern, sowie einem externen 24-Bit-Adressbus. Der 386SX war damit anschlusskompatibel zum 286er und ermöglichte so die Herstellung preiswerterer 386er-PCs, da man die Chip-Infrastruktur der 286er-Hauptplatinen weiterverwenden konnte. Die Beschränkung auf 16 MiB Hauptspeicher stellte für die damalige Zeit kein Problem dar, da die meisten PCs mit 1 bis 2 MiB RAM ausgeliefert wurden. Aus Sicht der Programmierung bestand so gut wie kein Unterschied zwischen dem 386-SX und dem echten 386er Prozessor (zur Unterscheidung auch 386DX genannt), mit Ausnahme der kürzeren Befehlsverarbeitungsschlange (engl. command prefetch queue) und der geringeren Geschwindigkeit des 386SX.
Der 80386 kann direkt bis zu 4 GiB Hauptspeicher adressieren (386SX: 16 MiB). Der logische Adressraum beträgt 246 Bytes = 64 TiB, welcher aber nur theoretisch vollständig nutzbar ist.
Er hat acht allgemeine 32-Bit-Register, die zwar teilweise spezielle Verwendungszwecke im Zusammenhang mit verschiedenen Befehlen haben, aber ansonsten frei zum Rechnen und allgemeinen Datenaustausch verwendet werden können:
| Abk. | Englischer Name | Spezielle Verwendung |
|---|---|---|
| EAX | Accumulator | spezielle Bedeutung bei Arithmetikbefehlen |
| EBX | Base Register | keine |
| ECX | Count Register | spezielle Bedeutung bei Schleifen |
| EDX | Data Register | spezielle Bedeutung bei Multiplikation und Division |
| EBP | Base Pointer | Zeiger auf temporäre Speicherstellen im Stack (z.B. Stackframe für lokale Variablen etc.) |
| ESP | Stack Pointer | Zeiger auf die aktuelle Position im Stacksegment; nur eingeschränkt allgemein verwendbar, da dieses Register angibt, wo die Rücksprungadresse für Sub-Routinen und Interrupts gespeichert wird. |
| ESI | Source Index | Quelle für String-Operationen |
| EDI | Destination Index | Ziel für String-Operationen |
Daneben gibt es auch noch weitere Register zur Steuerung des Verhalten der CPU:
| Abk. | Englischer Name | Verwendung |
|---|---|---|
| EIP | Instruction Pointer | Zeigt auf den nächsten auszuführenden Befehl. Wird durch Sprunganweisungen verändert. |
| EFLAGS | Flag Register | Die einzelnen Bits besitzen unterschiedliche Bedeutungen und zeigen z.B. Überläufe bei arithmetischen Operationen u.ä. an. |
| CS | Code Segment | Gibt die Position des Codesegmentes (in dem der aktuell auszuführende Programmcode steht) an. |
| DS | Data Segment | Gibt die Position des Datensegmentes (in dem die globalen Daten des Programms stehen) an. |
| SS | Stack Segment | Gibt die Position des Stacksegmentes (in dem der Stack für die lokalen Daten und Rücksprungadressen stehen) an. |
| ES | Extra Segment | Gibt die Position eines weiteren Datensegmentes (wird z.B. für String-Kopierbefehle verwendet) an. |
| FS und GS | Extra Segment 2 und 3 | Gibt die Position zweier weiterer Datensegmente an. |
| GDTR | Global Descriptor Table Register | Gibt die Position der GDT an |
| LDTR | Local Descriptor Table Register | Gibt die Position der LDT an |
| IDTR | Interrupt Descriptor Table Register | Gibt die Position der IDT an |
| CR0 - CR3 | Control Register 0 ... 3 | Steuern u.a. das Paging im Protected Mode |
| TR6 - TR7 | Test Register 6 ... 7 | .. |
| DR0 - DR7 | Debug Register 0 ... 7 | Dienen zum festlegen von Breakpoints auf Prozessorebene (DR0..DR3) u.a. |
| TR | Task Register | Segmentselektor des Task Status Segments (TSS) |
Alle Register, deren Name mit E beginnt, mit Ausnahme von ES, sind auf 32 Bit erweiterte (das E kommt vom englischen extended) Versionen von entsprechenden Registern der Vorgänger 8086 bis 80286.
Der Nachfolger war der 486er.
Weblinks
Siehe auch: Assemblersprache, Mikroprozessoren von Intel, Liste von Nicht-Intel-Mikroprozessoren
4004 | 4040 | 8008 | 8080 | 8085 | 8086 | 8088 | iAPX 432 | 80186 | 80188 | 80286 | 80386 | 80486 | i860 | i960 | Pentium | Pentium Pro | Pentium II | Celeron | Pentium III | Pentium 4 | Pentium D | Pentium M | Pentium Extreme Edition | Xeon | Itanium | Itanium 2
(Kursiv dargestellt sind die Non-Mainstream-Prozessoren)
Intel 80386
