Gast
#6019
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
|
Anzeige
|
Variablen ablegen
Gast
#6019
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
Gast
#6020
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
Gast
#6021
fast hätte ich es vergessen, die Beispiele beziehen sich auf den avrgcc. Für andere Compiler musst du dir deren Dokumentation anschauen.
Gast
#6022
um genau zu sein: der stack liegt im SRAM... :-)
Gast
#6023
Hat jemand das Gegenteil behauptet?
Gast
#6024
"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.
Gast
#6025
@Peter: Danke für den Link, damit werd' ich wohl weiterkommen. Vielleicht muss ich ja von CodeVision auf AVR-GCC umsteigen. Gruß Norbert
Gast
#6026
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
Gast
#6027
ok, 1:0 für dich :-) 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.
Gast
#6029
jeah, stimmt eigentlich! :-) dann war ich ja doch nicht so doof...
Gast
#6030
> 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 Antwort schreiben |
Anzeige
|