Hi! ich programmier meine avr´s mit assembler und mit dem avr studio. wenn ich doch immer wieder etwas auf den stack schiebe und es nicht mehr hol ist er doch irgendwann voll?? overflow?? oder wie nennt sich das. Wie kann ich das vermeiden? Ich mein, wie kann ich den ganzen inhalt vom stack löschen? welchen befehl muss ich da verwenden? bin für alle tipps dankbar Martin
das ist wie mit den Frauen - auf Dauer funktioniert das nur, wenn man sie ordentlich behandelt... Der Stack wird im Normalfall nur ein einziges Mal gesetzt, und zwar am Programmanfang. Ab da gehört zu jedem stackschreiben ein stacklesen. Wozu sollte man was auf den stack schreiben und dann nicht wieder abholen?? Wenn du es nicht mehr brauchst, lass das Schreiben.
im stack werden auch (insbersondere!) rücksprung adressen für den programmablauf gesichert. daten solltest du da nur kurz pushen und popen (als "kurzzeitgedächnis") und längerfristig gesehen daten im ram (definierte adresse) ablegen denn du call xxyy xxyy: push zz ret machst wird´s nen fehler geben, weil das programm an der stellen yyzz und nich xxyy fortgesetzt wird. guck dir das tutoriall hier nochmal an.
"das ist wie mit den Frauen" Na na, da sind ja doch gravierende Unterschiede. Der Stack funktioniert vollkommen logisch, man kann ihn leicht verstehen und muß nicht erst fragen, obs ihm gerade paßt, daß man ihn benutzen will :-) Peter
...nur in ganz, ganz, ganz seltenen fällen ist im Stack ein fehler festzustellen. Und meistens hat man den dann auch noch selbst fabriziert.
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.