-
-
Erfahrener Benutzer
Roboter Genie
Hilfe! Mein Speicherplatz!
Hi!
Ich habe ein AVR-GCC-Programm geschrieben, das war so ungefähr 35% des Speicherplatzes vom M8 groß (mit -O3).
Nun hab ich die ein oder andere Variable volatilisiert (volatile uint8_t, global).
Und der benötigte Speicherplatz ist um glatt 50% gewachsen, nämlich auf gut 83%.
Das kanns doch irgendwie nicht sein, oder?
(Mei, das wird so ne n00b-Frage sein.)
Thx schonmal,
Tobi
PS: AVRGCC auf neuerster Version, AVRStudio upgedated auf 4.13 b...
-
Neuer Benutzer
Öfters hier
Hmm, das ist natürlich eine Menge...
Volatile bedeutet, dass die Variable bei jedem Zugriff neu aus dem RAM geladen wird (und bei Veränderung gleich wieder zurückgeschrieben) wird, also nicht in einem Register gehalten werden kann (sie könnte ja zwischenzeitlich durch eine Interruptroutine verändert worden sein). LDS (Load) und STS (Store) konsumieren jeweils 4 Byte zusätzlich.
Du könntest auch mal -Os probieren, das ist gelegentlich etwas sparsamer.
Informativ ist auch ein Blick in die .lss Datei vorher/nachher, da siehst Du den generierten Assembler-Code und damit genau, wo der Mehrverbrauch stattfindet.
LG
Wolfgang
-
Erfahrener Benutzer
Roboter Genie
Hi
hm. lustig. Mit -Os ist der spaß nur noch 29% groß.
Thanx a lot!
VLG Tobi .o0O(Warum sind das immer die Dinge, auf die man nicht kommt, die einem weiterhelfen?)
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen