Forum: Mikrocontroller und Digitale Elektronik Byte-alignment


von Keiler :) (Gast)


Lesenswert?

Hallo,

ich hab mal eine kurze Frage:

Bei meinem Cortex M3 ist das Datenalignment per Default wohl auf 4 
gestellt. Das heißt Variablen befinden sich immer nur an den Adressen 
0x4, 0x8, 0xC, 0x10 usw.
Das wiederum bedeutet doch auch, dass es keinen Sinn macht überhaupt 
"char" oder "short" zu verwenden, wenn  man Speicher sparen möchte 
(außer natürlich bei arrays des jeweiligen Datentyps) - ist das so?

Danke
Keiler

von Jim M. (turboj)


Lesenswert?

Nein. Zumindest der GCC packt Byte-Variablen auch auf ungrade Adressen. 
Analog können (u)int16_t auf graden, aber nicht durch 4 teilbaren 
Adressen liegen.

von Reinhard Kern (Gast)


Lesenswert?

Keiler :) schrieb:
> Bei meinem Cortex M3 ist das Datenalignment per Default wohl auf 4

Du musst dich halt entscheiden zwischen Schnelligkeit und 
Speichersparen. Das sollte daher entsprechend einzustellen sein. Wenn du 
allerdings gleich einen 32bit-Wert verwendest, obwohl ein Byte genügt, 
verbaust du dir eben die Umschaltmöglichkeit, ohne einen Vorteil davon 
zu haben.

Gruss Reinhard

von Keiler :) (Gast)


Lesenswert?

Reinhard Kern schrieb:
> verbaust du dir eben die Umschaltmöglichkeit, ohne einen Vorteil davon
> zu haben.

das ist ein gutes Argument

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.