IA-32 - IA-32
IA-32 (kurz für „ Intel Architecture, 32-bit “, manchmal auch i386 ) genannt, ist die 32-Bit- Version der x86- Befehlssatzarchitektur , die von Intel entwickelt und 1985 erstmals im 80386- Mikroprozessor implementiert wurde. IA-32 ist die erste Inkarnation von x86, die 32-Bit-Computing unterstützt; Daher kann der Begriff "IA-32" als Metonym verwendet werden, um sich auf alle x86-Versionen zu beziehen, die 32-Bit-Computing unterstützen.
Innerhalb verschiedener Programmiersprachendirektiven wird IA-32 immer noch manchmal als "i386"-Architektur bezeichnet. In einigen anderen Kontexten bestimmte Iterationen der IA-32 ISA sind manchmal beschriftet i486, i586 und i686, die sich auf die Anweisung eine Obermenge der angebotenen 80486 , der P5 und die P6 - Mikroarchitekturen sind. Diese Updates boten neben dem Basissatz IA-32 zahlreiche Ergänzungen, dh Gleitkommafähigkeiten und die MMX-Erweiterungen .
Intel war historisch gesehen der größte Hersteller von IA-32-Prozessoren, wobei der zweitgrößte Anbieter AMD war . In den 1990er Jahren produzierten VIA , Transmeta und andere Chiphersteller auch IA-32-kompatible Prozessoren (zB WinChip ). In der Neuzeit produziert Intel immer noch IA-32-Prozessoren unter der Intel Quark- Mikrocontroller- Plattform; seit den 2000er Jahren hat sich die Mehrheit der Hersteller (einschließlich Intel) jedoch fast ausschließlich dazu bewegt, CPUs basierend auf der 64-Bit-Variante von x86, x86-64, zu implementieren . x86-64 bietet laut Spezifikation Legacy-Betriebsmodi, die auf dem IA-32 ISA für Abwärtskompatibilität betrieben werden. Selbst angesichts der gegenwärtigen Verbreitung von x86-64 werden ab 2018 IA-32-Versionen im geschützten Modus vieler moderner Betriebssysteme weiterhin gepflegt, z. B. Microsoft Windows und die Debian- Linux- Distribution. Trotz des Namens von IA-32 (und der für einige potenzielle Verwirrung sorgt) würde die 64-Bit-Entwicklung von x86, die von AMD stammt, nicht als "IA-64" bekannt sein, sondern dieser Name gehört zu Intels Itanium-Architektur .
Architektonische Besonderheiten
Das primäre bestimmende Merkmal der IA-32 ist die Verfügbarkeit von 32-Bit - Allzweck- Prozessorregister (beispielsweise EAX und EBX), 32-Bit - Integer - Arithmetik und Logikoperationen, ein 32-Bit - Offsets innerhalb eines Segments im geschützten Modus , und die Übersetzung segmentierter Adressen in lineare 32-Bit-Adressen. Die Designer nutzten die Gelegenheit, um auch andere Verbesserungen vorzunehmen. Einige der wichtigsten Änderungen werden im Folgenden beschrieben.
- 32-Bit-Integer-Fähigkeit
- Alle Universalregister (GPRs) werden von 16 Bit auf 32 Bit erweitert, und alle arithmetischen und logischen Operationen, Speicher-zu-Register- und Register-zu-Speicher-Operationen usw. können direkt mit 32-Bit-Ganzzahlen arbeiten. Pushs und Pops auf dem Stack sind standardmäßig 4-Byte-Schritte, und nicht segmentierte Zeiger sind 4 Byte breit.
- Allgemeinere Adressierungsmodi
- Jedes GPR kann als Basisregister verwendet werden, und jedes andere GPR als ESP kann als Indexregister in einer Speicherreferenz verwendet werden. Der Indexregisterwert kann mit 1, 2, 4 oder 8 multipliziert werden, bevor er zum Basisregisterwert und zur Verschiebung addiert wird.
- Zusätzliche Segmentregister
- Zwei zusätzliche Segmentregister, FS und GS, werden bereitgestellt.
- Größerer virtueller Adressraum
- Die IA-32-Architektur definiert ein segmentiertes 48-Bit-Adressformat mit einer 16-Bit-Segmentnummer und einem 32-Bit-Offset innerhalb des Segments. Segmentierte Adressen werden auf lineare 32-Bit-Adressen abgebildet.
- Demand-Paging
- Lineare 32-Bit-Adressen sind eher virtuelle Adressen als physikalische Adressen; sie werden über eine Seitentabelle in physikalische Adressen übersetzt . Bei den Prozessoren 80386, 80486 und den ursprünglichen Pentium- Prozessoren betrug die physikalische Adresse 32 Bit; beim Pentium Pro und späteren Prozessoren erlaubte die Physical Address Extension 36-Bit-physikalische Adressen, obwohl die lineare Adressgröße immer noch 32 Bit betrug.
Betriebsarten
Betriebsart | Betriebssystem erforderlich | Art des ausgeführten Codes | Standardadressengröße | Standardoperandengröße | Typische GPR- Breite |
---|---|---|---|---|---|
Sicherheitsmodus | 32-Bit-Betriebssystem oder Bootloader | 32-Bit-Code im geschützten Modus | 32 Bit | 32 Bit | 32 Bit |
16-Bit-Betriebssystem im geschützten Modus oder Bootloader oder 32-Bit-Bootloader | 16-Bit-Code im geschützten Modus | 16 Bit | 16 Bit | 16 oder 32 Bit | |
Virtueller 8086-Modus | 16- oder 32-Bit-Protected-Mode-Betriebssystem | 16-Bit-Real-Mode-Code | 16 Bit | 16 Bit | 16 oder 32 Bit |
Real-Modus | 16-Bit-Real-Mode-Betriebssystem oder Bootloader oder 32-Bit-Bootloader | 16-Bit-Real-Mode-Code | 16 Bit | 16 Bit | 16 oder 32 Bit |
Unwirklicher Modus | 16-Bit-Real-Mode-Betriebssystem oder Bootloader oder 32-Bit-Bootloader | 16-Bit-Real-Mode-Code | 32 Bit | 16 Bit | 16 oder 32 Bit |