Am Die, 2002-12-17 um 17.58 schrieb Eberhard Wilfrid ZFF TE-PR:
Hallo zusammen,
ich hab ein Problem mit dem Alignment des gcc compilers glaube ich.
Hmm, ich glaube ehe, Du hast ein Problem mit deiner Applikation ;)
In meinem Code wird eine struktur angelegt. Von dieser Struktur werden direkt hintereinander drei Variabeln angelegt. Wie machst Du das? Die Details wären hier von entscheidender Bedeutung.
Die Variabeln haben eine Groesse von 50 Byte (laut sizeof). Wenn ich mir jedoch die Pointer auf die Variabeln anschaue haben die einen "Abstand" von 64 Byte. Gut möglich - Hängt von den Details ab.
Mein Problem ist nun, dass an einer andere Stelle im code auf die erste Variable verwiesen wird und dann der Zeiger einfach incrementiert wird, allerdings um 50 Byte. Und das ist dann echt schlecht..... Was normalerweise darauf hin deutet, dass dein Code ein Problem mit der Adressarithmetik hat.
Weiss einer von euch wie ich das loesen kann. Z.B. wie ich das alignment des gcc compilers immer auf Byte setzen kann? Es gäbe Tricks das zu erzwingen [1], doch haben die in normalen Applikationen normalerweise nichts verloren, da das Alignment u.a. sehr von der verwendeten HW/Architektur und dem unterlagerten OS/Speichermanagement abhängt.
Ralf [1] Je nach Architektur und GCC-Version: Unterschiedliche #pragmas, __attribute__()'s, Linker-Script-Tricks, Inline ASM-Tricks u. dergleichen mehr.