www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Stack von avr


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"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

Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...nur in ganz, ganz, ganz seltenen fällen ist im Stack ein fehler
festzustellen. Und meistens hat man den dann auch noch selbst
fabriziert.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter: hast recht, der stack ist einfacher :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.