Mir fällt auf, daß der Compiler die Variablen mal im Registersatz und mal im SRAM ablegt. Nach welchen Kriterien macht der das? Was kann ich tun, damit Variable ins EEPROM gespeichert werden? Norbert
Du hast noch den Stack als Ablagemöglichkeit vergessen. > Nach welchen Kriterien macht der das? Nach bestem Wissen und Gewissen ;-) > Was kann ich tun, damit Variable ins EEPROM gespeichert werden? Am besten liest du dir diese Doku mal komplett durch, da werden eigentlich alle deine Fragen gut beantwortet: http://www.avrfreaks.net/AVRGCC/Download/haraleit.pdf Gruss, Peter
fast hätte ich es vergessen, die Beispiele beziehen sich auf den avrgcc. Für andere Compiler musst du dir deren Dokumentation anschauen.
"Du hast noch den Stack als Ablagemöglichkeit vergessen." nein, hat er nicht, denn er hat das sram erwähnt. :-) ich weiß, man kann auch pingelig sein.
@Peter: Danke für den Link, damit werd' ich wohl weiterkommen. Vielleicht muss ich ja von CodeVision auf AVR-GCC umsteigen. Gruß Norbert
Es gibt aber noch den Unterschied zwischen Software-Stack und Hardware-Stack. Der Software-Stack liegt im SRAM, der andere nicht. Und es gibt auch Compiler (z.B. der ICCtiny von Imagecraft), die legen Variable auf dem Hardware-Stack ab. Gruss, Peter
Hallo Peter, der Hardwarestack kann ausschließlich die Rückkehradressen speichern aber niemals Variablen ! Alle AVR mit Hardwarestack können nämlich kein PUSH / POP. Peter D.
> der Hardwarestack kann ausschließlich die Rückkehradressen speichern aber niemals Variablen ! > Alle AVR mit Hardwarestack können nämlich kein PUSH / POP. Stimmt, du hast Recht. Da hab ich was durcheinandergeschmissen, mit diesen Hardware-Stack-Typen hatte ich mich bislang noch nicht so genau befasst. Aber es ist schon ein Unterschied, wenn man eine Variable auf den (Software-)Stack pusht oder an einer festen Stelle im SRAM speichert, auch wenn sie de fakto beide Male im SRAM landet. Das hatte ich eher gemeint. Und es gibt auch C-Compiler, die beide Varianten auch nutzen, je nachdem, was für die Optimierung des Programms im Vorteil ist. Gruss, Peter
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.