x32 ist eine Binärschnittstelle (ABI) des Linux-Kernels ab Version 3.4, die auf der x64-Architektur basiert, aber 32 Bit breite Zeiger verwendet. Dadurch ist es möglich, die 64-Bit-Erweiterungen der x86-Architektur (x86 im 64-Bit-Betriebsmodus, daher oft „x86-64“), wie zum Beispiel den IP-relativen Addressierungsmodus für effizienten PIC zu nutzen, gleichzeitig ist der Speicherverbrauch durch die kürzeren Zeiger aber geringer. Außerdem ist der Datentyp long 32 Bit groß, das Datenmodell ist daher – wie im 32-Bit-Modus – ILP32. Daher können Programme, die zwischen 32-Bit-, 64-Bit- und x32-Modus unterscheiden müssen, den x32-Modus wie folgt erkennen: #if defined( __x86_64__ ) && defined( __ILP32__ ) … // x32-spezifischer Code #endif
Die x32-ABI verwendet die gleichen Systemaufrufe wie die x64-ABI. Für Systemaufrufe, bei denen die Zeigerlänge einen Unterschied ausmacht, wird eine andere Nummer verwendet.
+ Vergleich der Binärschnittstellen (ABIs) Feature Architektur/ABI i386 x86_64 x32-Prozess nativ (64-Bit) Maximalgröße des physischen Arbeitsspeichers 64 GiB mit PAE128 TiB Maximal adressierbarer Arbeitsspeicher pro Prozess4 GiB128 TiB Anzahl der Integer-Register6 (PIC)16 Anzahl der Gleitkomma-Register816 Größe von Zeiger-Datentypen 32 bit 64 bit Größe von Unixzeit-Datentypen 32 bit 64 bit Rechnen mit 64-Bit-RegisternNein Ja Gleitkommazahlenx87SSE AufrufkonventionArbeitsspeicherRegister PIC-Prolog2-3 insnKeiner
Im Vergleich zu nativem IA-32 (32-Bit-x86 des i386) stehen im x32-Modus die doppelt so vielen Register der x64-Architektur (siehe Registererweiterung) zur Verfügung, sodass der 32-Bit-Betrieb mit x32 immer schneller sein sollte als natives 32-Bit-x86 im Protected Mode seit dem 80386. Es gibt jedoch auch Einzelfälle, in denen x32 geringfügig langsamer ist.
Im direkten Vergleich zu 64-Bit-x86 „x64“ ist die Verwendung von 32-Bit-Zeigern zwar auf 4 GB Arbeitsspeicher pro Prozess limitiert, geht jedoch mit reduziertem Speicherverbrauch einher und führt in einigen Fällen, abhängig vom jeweiligen Programm und den Daten, zusätzlich zu einer Performance-Steigerung. Obwohl die Nutzung eines 32-Bit-Modus innerhalb des modernisierten x64-Betriebsmodus der x86-Architektur auch langsamer sein kann, ist es meistens mindestens gleichauf mit dem nativen 64-Bit-Modus und kann manchmal sogar bis zu 30 % schneller sein. Für Speicher-hungrige Software ist x32 indes nicht geeignet, weshalb z. B. ein Webbrowser wie Chromium oder eine moderne Desktop-Umgebung wie KDE Plasma nicht mit x32 übersetzt werden (können).
Weblinks X32 System V Application Binary Interface (Projektseite) x32 – a native 32-bit ABI for x86-64 (Vortrag auf der Konferenz Linux Plumbers)
Einzelnachweise
Kategorie:Linux-Betriebssystemkomponente