mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik HW Stack


Autor: Thomas Krug (dlt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum

benutze einen tiny15 (hat nur 3 level HW stack)
sprich pop push geht nicht

nun meine frage:
stack wird nur für rücksprungadressen verwendet?
wenn man in einem prog nun immer nur sprungbefehle hat und keine
ret-befehle geht der stack ja zwangsweise über

wenn ich die rücksprungadressen aber eh nie verwende kann mir das ja
egal sein?

oder verwirrt das den tiny zu sehr? fehlfunktionen etc.?

vielen dank
thomas

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du die Rücksprung Adresse nie verwendest... dann aknste auch nen
(R)JMP nehmen anstelle von CALL

Autor: Thomas Krug (dlt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
verwende eh nur rjmp bzw. jmp

also kann mir der überlaufende stack wurst sein?

danke

thomas

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jmp und rjmp legen keine Rücksprungadressen auf den Stack, also hier
keiner Gefahr eines Stackoverflows.

Markus_8051

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur wen du ne (R)CALL verwendest oder in eine ISR springt wird eine
Rücksprung Adresse auf den Stack geschrieben (aus ne ISR solltest du
aber in jedem fall mit RETI raus, weil du sosnt eventuell Probleme
bekommst mit undefiniertem Verhalten)

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nix undefiniertes Verhalten...
Der einzige Unterschied zwischen ret und reti ist, dass bei reti das
i-flag automatisch wieder gesetzt wird. Das muss durchaus nicht immer
sein, manchmal ist es sogar sinnvoll, aus einer ISR mit ret
herauszugehen.

Autor: Thomas Krug (dlt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen dank!

hab die unterschiede jetzt kapiert

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich meinte wenn weder RET noch RETI benuzt... dann kommt manchmal
komisches raus ;)

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Stack sollte immer ausgeglichen sein, egal ob Hardwarestack oder
Stack im SRAM über Stackpointer. Jedes Push braucht sein Pop, jedes
(R)Call oder Int-Aufruf braucht sein Ret(i). Das ist eine der
Grundregeln der ASM-Programmierung.

...

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.