3 level deep hardware stack - was bedeutet das??

Gast #86398
Lesenswert?
• ▲
▼
Ich habe hier einen ATtiny11.

ich wollte da so ein programm in assembler reinmachen.
das lief auch alles fehlerfrei.

jetzt habe ich wo an einer stelle noch eine prozedur eingefügt:
und zwar das hier:


  sbis PORTB, 0
        rjmp an1
        cbi PORTB, 0
        rjmp lab5;
        an1:
        sbi PORTB, 0
  lab5:


(soll bei erreichen dieser befehle immer einen bestimmten ausgang von
low auf high und andersrum machen.)

das habe ich wo so reingemacht, daß es nur aufgerufen wird, wenn was
bestimmtes vorher passiert ist oder nicht.

ob diese befehle ausgeführt werden, wird mit befehlen wie brcs, sbis
und rjmp festgelegt.

tatsache ist jedoch, daß das da eingefügte an der stelle nicht korrekt
von dem microcontroller ausgeführt wird und nur müll bei rauskommt.

(die sprungmarken sind alle korrekt und nicht doppelt.)

und es kam auch müll raus, obwohl ich das da eingefügte schonmal an
anderen stellen wo ohne probleme benutzen konnte.

jetzt die frage:
kann da das mit dem 3-level deep hardware stack dran schuld sein?

wird denn auch für befehle wie brcs, sbis und rjmp der hardware stack
benutzt oder wird der hardware stack nur bei ganz anderen sachen
benutzt?

bei was würde denn sonst der hardware stack benutzt werden, also was
dürfte ich denn in diesem fall nicht mehr als "3 level deep" machen?
Gast #86399
Lesenswert?
• ▲
▼
die Befehle sbis, brcs und rjmp sind Sprungbefehle, wo der Stack nicht
verwendet wird. Der wird eher verwendet wenn du Poppst und Pushst oder
halt, wenn du ein Unterprogramm aufrufst. Dann wird die
Rücksprungadresse dort abgelegt.
Gast #86400
Lesenswert?
• ▲
▼
POP und PUSH geht bei Hardware-Stack nicht...

Hardware-Stack wird verwendet:

- bei Aufruf von Unterprogrammen mittels RCALL-RET,
- bei auftretenden Interrupts, deren ISR mit RETI verlassen wird.

Die 3-Level-Tiefe bedeutet, dass man nur 3 Ebenen hat, also
Unterprogramme nicht unnötig verschachteln sollte...

Bit- & Bytebruch...
...HanneS...

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.