Ähm, ich hätte da gleich noch einen Frage:
Was ist die Aufgabe des Stackpointers?
@Klaus: Danke fürs kompliment. Ich bin selber seit kurzem Ausbilder und es sind halt solche Dinge, die mich an unserem Schulsystem stören. Selbst hasste ich die Schule deswegen, wenn ich erlich bin. Wie sol ich einen Lehrer ernst nehmen, dem man erstmal erklären muß, wie ein Oszi funktioniert? Sicherlich gabs auch gute Lehrer, aber die waren eher die Ausnahme. Dazu muß ich noch sagen, Fachidioten gibts leider nicht nur Lehrertum. Will jetzt aber nicht von dem eigentlichem Thread abkommen. Sorry
Ich muß Klaus auch recht geben, was das selber verstehen und denken angeht, sonst endest du irgendwann so, wie deine Lehrer
Was man verstanden hat kann man am besten umsetzen.
Ähm, ich hätte da gleich noch einen Frage:
Was ist die Aufgabe des Stackpointers?
...und die Klausur ist morgen???Zitat von Daniela
Statt zu lernen machst du dir besser nen gemütlichen Nachmittag...da hast du im Ende mehr von.
Disclaimer: none. Sue me.
Stackpointer? Ich kann fast nicht glauben, das du schon Programme geschrieben haben willst. Ich geb dir nen Rat, mach morgen nen Krankenschein und lern!!!
Hi Daniela,
Pointer sind Zeiger; d.h. Werte die auf einen Speicherbereich zeigen. Ein Stack ist ein Stapel, dh. ein Speicherbereich von zB. 256 Bytes der wie eine Art Schmierzettel funktioniert.
Der Stackpointer ist der Pointer, der auf die aktuelle Adresse des Stack zeigt. Sieh Dir mal die Befehle PUSH und POP an. Mit POP wird ein Wert auf den Stack geschrieben und der Stackpointer (die aktuelle Adresse) um 1 erhöht. Beim Befehl PUSH (engl. ziehen) wird der Wert der auf der aktuellen Adresse vom Stack steht vom Stack gezogen und die Adresse (der Stackpointer) um 1 vermindert. Der Stack arbeitet nach dem FIFO - Prinzip (FIFO => first in first out).
Sinn und Zweck des Ganzen ist :
Wenn im Programm Unterprogramme aufgerufen werden müssen die aktuellen Zustände der Register, die im Unterprogramm verwendet werden, mit dem Befehl PUSH zwischengespeichert (gerettet) werden. Nach der Abarbeitung des Unterprogramms werden die geretteten Register mit dem Befehl POP wieder in den Zustand vor dem Unterprogrammaufruf gebracht. Das Hauptprogramm wird dadurch nicht durch das Unterprogramm gestört. Eventuelle Register für eine Parameterübergabe sind davon natürlich nicht betroffen.
Der Stack kann auch als eine Art Schmierzettel für temporäre Daten verwendet werden, falls die Anzahl der Register mal nicht ausreicht.
Es ist auf jeden Fall wichtig, den Stack sorgfältig zu behandeln. Ein Kardinalfehler in Verbindung mit dem Stack ist, die Nichtbeachtung der Reihenfolge von Retten und Zurückholen der Registerinhalte.
Grüße Klaus
Eine verrückte Idee ist besser als keine
@SprinterSB,
es hat noch nie geholfen den Kopf in den Sand zu stecken.
Klaus
Eine verrückte Idee ist besser als keine
Hab schon gecodet und glaub mir, ich kann coden
Ich programmiere seit 4 Jahren C++ und Java. Da fällt asm nicht sehr schwer. das Problem ist nicht das coden sondern die Hardware, verstehste?!
Zitat von Anonymous
Häh?
Dann muss aber ein Stack bekannt sein.
irgendwie widersprüchlich...
irgendwie komische sache hier
Ja ich kenn nen Stack, ich kenn push und pop. Ich weiß, dass ich drauf achten muss, dass er nicht überläuft usw... Stack ist in den Hochsprachen eine dynamische Datenstruktur und nicht son Ding auf der Platine.
Naja, trotz allgemeiener Entgeisterung über meinen kläglichen Hilferuf möchte ich Klaus und Rage danken.
Lesezeichen