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

Siehe auch

Verweise