Forum: Compiler & IDEs Reihenfolge von Konstanten abhängig von Optimierungsstufe


von Günter R. (galileo14)


Angehängte Dateien:

Lesenswert?

Hallo,

ich verwende in einem AVR-Programm einen Versionsblock, den ich wie im
Anhang angegeben formuliert habe; die Reihenfolge der Elemente ist
dabei sehr wichtig, da diese Daten von anderen Programmen aus dem Flash
bzw. aus dem Hex-Code ausgelesen werden.

Ich habe nun festgestellt, daß der GCC-Compiler (aus WinAVR-20060421)
abhängig von der Optimierungsstufe die einzelnen Elemente (Konstanten)
u.U. in umgekehrter Reihenfolge in das Intel-Hex-File ausgibt, nämlich
bei -O2, -O3 und -Os; da beginnt der Code dann mit VDay, und endet mit
VBlockId; bei -O0 und -O1 ist es genau umgekehrt (und so, wie es sein
soll bzw. muß).

Hat jemand einen Hinweis für mich, warum die Optimierung diese
Reihenfolge umdreht und wie man das auch bei -Os unterbinden kann?

Danke.

Günter

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> ... die Reihenfolge der Elemente ist
> dabei sehr wichtig,

Dann bleibt dir nur eins: pack alles in eine einzige struct, ggf.
diese auch noch in eine section für sich, der du dann mittels
Linker-Optionen eine bestimmte Speicheradresse verpasst.

Alles andere ist dem Compiler/Linker freigestellt.

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.