PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Alignment



Meckerer
26-04-2001, 14:07
Hallo Linux-Friends,

Weiß jemand,welcher Compilerschalter/Linkerschalter für die Einstellung des Struktur-Alignments zuständig ist ? Wir benutzen gcc.

Vielen Dank in Voraus
Meckerer

jgbauman
27-04-2001, 02:01
Hi,

generell ist es nicht ratsam das alignment fuer gcc global zu aendern, da dass dann die Kompatibilitaet zu den benutzten Libraries gefaehrdet (broken ABI), aber man kann natuerlich auch die Libraries selber mit abweichendem alignment kompilieren.
Dazu gibts beispielsweise die Schalter:
-mpreferred-stack-boundary=NUM
-malign-double

Um selektive nur einzelne Variablen oder Strukturen zu veraendern gibts es
__attribute__ aligned (ALIGNMENT)
z.B. richtet:
int x __attribute__ ((aligned (16))) = 0;
das int x an einer 16 Byte boundary aus.

Auch laesst sich mit z.B.
__alignof__ (double)
das alignment fuer den Typ double, aehnlich wie mit sizeof() die Groesse abfragen.

Zu genaueren Erklaerungen siehe:
info gcc