PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wozu Stackpointer???



CriGri
28.03.2006, 13:31
Hallo Gemeinde....

Da ich noch ziemlich neu auf dem Gebiet der Mikrocontroller bin habe ich noch unzählige Fragen.Eine davon ist wozu man(ich :) )den Stack bzw. denStackpointer braucht bzw. verwenden kann?
Was man mit ihm eigentlich machen kann/sollte und im welchem Einstatzgebiet man ihn wirklich braucht!

Ich danke euch schon mal für eure Antworten!!!

mfg Cri

buz11
28.03.2006, 15:10
Du brauchst ihn nicht . (erstmal...:))
Aber, der µC braucht ihn.
Zum Beispiel damit er weiß , wohin er nach einem call oder jump zurückspringen soll .

Also aufpassen, nicht dass er Dir irgendwelche Speicheradressen überschreibt.

holgi
28.03.2006, 15:17
Der Stack ist der Zwischenspeicher der Rückkehradresse aus Unterprogrammen. Der Stackpointer ist eben der Zeiger auf die letzte gültige Adresse. Der Stack wird im allgemeinen vom Controller bzw Prozessor selbst verwaltet. Man muß nur aufpassen, das der Stack je nach Verschachtelung der Unterprogramme groß genug ist. Wenn man das nicht macht, kommt sowas raus wie beim Erststart der Ariane-5 Rakete... Als Programmier sollte man die Finger vom Stack lassen, es sei denn, man hat programmtechnische Schweinereien vor...

CriGri
28.03.2006, 21:38
Danke danke :)

Werd wohl die Finger vom Stack lassen da ich den e net gebrauchen kann (wie es scheint)

Danke nochmals!!!

semmel
30.03.2006, 19:42
Na, also ich möchte auf den Stack nicht verzichten, den hab ich lieb, verstehen sollte man ihn auch.

Bei den 8x51 Typen liegt der Stack nach dem RESET auf der Speicherstelle 07H im internen RAM, also auf Register R0 der Registerbank 1. Wenn du alle Registerbänke verwenden willst (und das macht Sinn) dann lager ihn ins RAM an anderer Stelle aus, z.B. mov sp,#60H, nun liegt er auf der Speicherstelle 60H im RAM und alle Registerbänke können verwendet werden.

Desweiteren sollte man die Stacktiefe bestimmen können. Der Stack wächst ja aus genannten Gründen an und kann somit ander vielleicht schon genutzte Speicherstellen zerstören.

Desweiteren gibt es die schönen PUSH und POP Befehle. Einfach mal was auf den Stack ablegen, dann zurückholen, möchte diese Möglichkeit nicht missen.

Also, ran an den Stack, der wird noch gebraucht.

Noch Fragen, dann raus damit, Finger weg vom Stack ist jedenfalls der falsche Ansatz.

Gruß

Semmel

Winne
31.03.2006, 21:54
high chris

ohne stack kein "reti" und kein "ret"

und auf die kann wohl nur nen "Spaghetticoder" verzichten.

Holger
31.03.2006, 22:03
Für einen Beginner ist der Stack eigentlich nicht weiter interesant. Die ersten Programmierschritte (LED blinken, Lauflicht etc.) sind lange nicht so umfangreich und verschachtelt, als dass man sich um den Stack speziell kümmern müsste. Wenn man dann mal den Durchblick hat, kann man auch den Stack händeln, zb. wie Semmel schreibt. Ich lasse meist den Stack, wo er ist und verwende RAM erst ab #30h. Das ist auch ziemlich viel für den Stack.:)

edgar
01.04.2006, 00:28
Hi Stapler !

Je weiter oben der Sp gesetzt wird desto mehr darf er nach unten wachsen.
Ich schaue mir oefters die 'Aktivitaet' im Stapel mit dem Simulator an und habe somit keine Ueberraschungen. Darunter benuetze ich das Ram wie es mir passt.

Ich habe auch was aanderes zum stapeln : bin vor zwei Stunden im Tiefflug ueber den Vatikan geflogen. Der Ratzinger hatte sich gerade gekaemmt...:) hab ich ihm doch gerade sein weisses Haar wieder total durcheinander gebracht....
Mensch hat der geflucht (konnte man hoeren trotz Turbine) auch der bayrische Akzent kam beinhart oben an. Bei der Landung auf dem Leonardo da Vinci Flughafen haben sie mich nicht einmal festgenommen.Mit dem erstbesten Linienflug nach Mailand konnte ich mich dem Zorn der Schweizer Garde entziehen. (die vatikanische Luftabwehr hat mal wieder geschlafen.)

Schoenes WE
Ed wieder am PO

sparky
01.04.2006, 00:34
..... leicht wie Luft :)

Wieso? Hast du neben dem Porsche und dem Jeep jetz noch einen Hubschrauber/Jet? ;)

edgar
01.04.2006, 00:59
Ja, aber leider nur heute und nur von Brindisi (sued ost italien) nach Rom.

Die Alitalia war dagegen unter aller Sau...so eng wie ein Hasenstall ,Verspaetung und horrende Preise !

Aber trotz allem,wie Du siehst...ich bin wieder in meinem Haeusle.
Ciao

semmel
01.04.2006, 13:01
So langsam fängt man an den Stack zu benutzen, gut so.

ohne Stack kein RETI, ja und schon wieder eine Verwendungsmöglichkeit. Typischerweise sichert man sich seine Regeister in einer Interrupt Service Routine auf dem Stack.

@ Holger, wenn du den Stack nicht ins "upper RAM" verschiebst beraubst du dich der Möglichkeit alle Registerbänke zu verwenden. Noch fataler ist die Tatsache das du den BIT-addressierbaren Bereich ab 20H völlig außer Acht lässt, wie baust du deine Flags ? Gerade der BIT-addressierbare Bereich ist für mich immer sehr wichtig. Der SP gehört auf jeden fall oberhalb dieses Bereiches ausgelagert.

Hoffentlich stucked der Stack nicht.

Semmel

edgar
01.04.2006, 13:09
ganz richtig,

wer sagt STACK SUCKS
der hat seinen Controller ueberhaupt noch nicht richtig defloriert:D

ed

Holger
01.04.2006, 13:42
@ Holger, wenn du den Stack nicht ins "upper RAM" verschiebst beraubst du dich der Möglichkeit alle Registerbänke zu verwenden. Noch fataler ist die Tatsache das du den BIT-addressierbaren Bereich ab 20H völlig außer Acht lässt, wie baust du deine Flags ? Gerade der BIT-addressierbare Bereich ist für mich immer sehr wichtig. Der SP gehört auf jeden fall oberhalb dieses Bereiches ausgelagert.

Hoffentlich stucked der Stack nicht.

Semmel
von 08h bis 1Fh hat bei mir allemal für den Stack ausgereicht. Und die register verwende ich nicht mal alle der RB 0, aber der Ram ist bei mir fast immer ausgereizt. Vielleicht ne Angewohnheit. Kann ja mal auch nach deinem Schema proggen. Versuch macht klug!:)

Winnie
02.04.2006, 10:01
Hier kannst Du es auch nichmal nachlesen.

http://www.progforum.com/showthread.php?t=6143

Ed,

das ist aber nicht nett, dass Du dem alten Ratze die letzten Borsten durcheinander bringst. Nu' mussa widda beten bis neue wachsen, aber was soll's, ist ja ohnehin sein Hobby.

Gestern gab's hier im Lokalradio einen Aprilscherz. Extra für die Spanier (während der WM) würden im nächsten Dorf Stierkämpfe angeboten und abgehalten. Mit Telefonnummer für Hörerreaktionen. Du kannst Dir nicht vorstellen wie viele Deppen da angerufen haben und sich aufgeregt haben. Die haben das jede halbe Stunde in den Nachrichten erzäht, ca. 3 Stunden lang. Da sieht man mal wie leicht die Medien Leute proggen können. Sind halt Nachrichten und da wird nicht gelogen:rolleyes:.

Schönen Sonntag zusammen wünscht

Winnie

edgar
02.04.2006, 11:05
Hallo ' bro ' Winnie,

ich hab ihm ja nur ein paar Schuppen weggeblasen...
Aber schon ist er wieder hochglanzfrisiert wie ein HiTechAMG.
Selbst wenige Tage vor den Wahlen kann der Vatikan es nicht lassen sich
in die ital.Politik einzumischen....(es ist leider so seit ueber 50 Jahren)

Hier haben wir das ganze Jahr ueber 1°April.....Stell Dir vor die Merkel haette (Eigentum) 90% der Fernsehanstalten und wuerde alle Komik,Kritik und Satyre aus dem TV streichen...bald sind wir hier so weit.

Aber das ist ja Nebensache, hier geht's ja darum wie man das Holz am besten stapelt .... sorry auf den Stack legt.
Das mit dem Stack lernt man sobald der Stack bestimmte Werte ueberschreibt und ein Programm Mist macht...learning by doing :)

Danke fuer den ''schoenen Sonntag''

Ed

Winnie
02.04.2006, 15:48
Hallo Ed,

deshalb hatte ich es ja schon oben angemerkt.

Lass dem Ratze seine Glatze...

oder irgendwie in die Richtung...

Gruß Winnie

Holger
02.04.2006, 18:25
Aber das ist ja Nebensache, hier geht's ja darum wie man das Holz am besten stapelt .... sorry auf den Stack legt.
Das mit dem Stack lernt man sobald der Stack bestimmte Werte ueberschreibt und ein Programm Mist macht...learning by doing :)

Danke fuer den ''schoenen Sonntag''

Ed
Wenn man es denn "schnallt", dass der Stack is weg.....

Winnie
02.04.2006, 20:33
Wenn man es denn "schnallt", dass der Stack is weg.....

Genau, recht hast Du. Ist der Stack erst mal im Dreck, hängt sich der Controller weg:D.

Gruß Winnie