Stackpointer? Im RAM-Bereich oder eigenes Register

Gast #446632
Lesenswert?
• ▲
▼
Meistens ist der Stack Teil des Speichers, aber nicht immer:
es gibt auch Controller die für den Stack ein paar Extraregister haben. 
Dann sind z.B. nur 3 Unterprogrammaufrufe möglich.

Grüße
Walter
(Firma: Rehrmann Elektronik) #446720
Lesenswert?
• ▲
▼
Der Stackpointer ist ein wichtiges Arbeitsregister, auf das ständig 
zugegriffen werden muß. Da es sich nur um ein einziges Wort handelt, 
kann man das problemlos im CPU-Bereich unterbringen. Eine Auslagerung in 
den Arbeitsspeicher würde wegen der zusätzlichen Zugriffe auf das RAM 
die CPU unnötig ausbremsen. Der Stack selbst befindet sich dagegen 
meistens im RAM. Bei PIC-Controllern besteht z.B. auch der Stack aus 
eigenen Registern.

Jörg
Gast #578932
Lesenswert?
• ▲
▼
Hallo,

was meinst Du mit "normalerweise"?

Wenn es einen Default-Wert gibt, den er nach Reset enthält, steht es im 
Datenblatt des konkreten Prozessors.

Wenn es eine 8Bit-CPU ist und Du ein 8Bit-Register gePUSHd hast, sollte 
er auf 7Eh zeigen.

Das konkrete Verhalten bei den stackbeeinflussenden Befehlen (PUSH, POP, 
CALL, RET, RETI oder wie sie jeweils heißen), verrät auch das 
Datenblatt.

Üblich ist post-decrement/increment, also erst den Wert in die Adresse 
speichern, auf die der SP zeigt, dann diesen verringern und erst den 
Wert von Stack holen und dann den SP erhöhen.
Es gab auch CPUS, die das anders gemacht haben (6502/6510 z.B.).

Gruß aus Berlin
Michael
#578954
Lesenswert?
• ▲
▼
Maxim W. wrote:
> Was genau bewirke ich mit dem Befehl
>
> MOV SP, #7Fh

Wenn man jetzt noch errät, welchen Core Du im Kopf hast.

Ich rate mal, es ist ein 8052-Core, denn beim 8051 ist bei 7F ja schon 
Schluß.

SP = 7F bedeutet beim 8052, daß von 80..FF der Stack liegt.

In der Regel setzt man aber den Stack einfach unmittelbar hinter die 
letzte Variablenadresse.


Peter

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.