x32 (ABI)

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

x32 ist eine Binärschnittstelle (ABI) des Linux-Kernels ab Version 3.4, die auf der AMD64-Architektur basiert, aber 32 Bit breite Zeiger verwendet. Dadurch ist es möglich, die Erweiterungen der AMD64-Architektur, 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 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 x32-Prozess x86_64
Maximalgröße des physischen Arbeitsspeichers 64 GiB mit PAE 128 TiB
Maximal adressierbarer Arbeitsspeicher pro Prozess 4 GiB 128 TiB
Anzahl der Integer-Register 6 (PIC) 16
Anzahl der Gleitkomma-Register 8 16
Größe von Zeiger-Datentypen 32 bit 64 bit
Rechnen mit 64-Bit-Registern Nein Ja
Gleitkommazahlen x87 SSE
Aufrufkonvention Arbeitsspeicher Register
PIC-Prolog 2-3 insn Keiner

Weblinks[Bearbeiten | Quelltext bearbeiten]