Statistik  Mitglieder gesamt: 68573  Mitglieder online: 2  Gäste online: 5 mehr...
Anzeige
| Thread: Rekursion mit Assembler
 25.02.2009 22:29 Uhr
|
|
|
|
|
Hallo,
könnte mir jemand erklären, wie ich Rekursion in Assembler verwirkliche?
Aus google & Co. werd ich nicht so recht schlau.
thx
|
|
 25.02.2009 23:29 Uhr
|
|
|
|
|
Wenn ich das noch richtig im Kopf habe (sowas programmiert man ja nicht alle Tage), dann definiert man die rekursive Funktion wie gewohnt und speichert dann auf einem Stack die Rücksprungadressen zu denen nach der vollständigen Ausführung der Funktion wieder zurückgesprungen wird. Wird nun die Funktion rekursiv aufgerufen, so schiebt man die aktuelle Adresse auf den Stack, geht zum Anfang der Funktion und führt sie erneut aus. Nach vollständiger Ausführung springt man dann zu der letzten Adresse aus dem Stack zurück und entfernt sie aus dem Stack. Natürlich muss man noch dafür sorgen, dass innerhalb des rekursiven Aufrufs nicht versehentlich irgendwelche anderen Speicherbereiche überschrieben werden.
Aber anbei: Rekursionsbeispiele in Assembler spuckt Google zu tausenden aus.
___________________________ Fatal Error: Uncaught exception 'UnexpectedValueException' with message 'No Signature' in /cybton/src/index.php:38274
#0 /cybton/src/profile.php(2843): Profile->showSignature()
#1 /cybton/src/forum.php(2843): Thread->showPost()
#2 {main}
|
|
 27.02.2009 22:50 Uhr
|
|
|
|
|
hey,
wo liegt denn genau das Problem dabei? Nimm doch mal ein typisches Beispiel wie z.b. fibonacci und schreib es in java. Dann übersetz das einfach. Schau dir am besten dazu mal folgende Themen an: calls, stack und jumps(vor allem alle jumps, die auf die verschiedenen Flags reagieren.) Damit bist du eigentlich bestens bedient.
Aber: immer vorsichtig mit dem Stack. Man bügelt sich sehr sehr gerne mal was über. Sei es eine Zahl die zu groß ist oder wenn man den IP vergisst, der ja gepusht wird ;-) Dann doch lieber mit Variablen ;-)
Wenn du dann auf ein Problem triffst kannste mich auch privat anschreiben. Hab gerade an der Uni ne Klausur über Assembler geschrieben(und bestanden :-D). Sonst könnte ich auch noch das sehr einfach zu verstehende Script meines Profs und die Übungen dazu anbieten ;-)
lg
dead
|
|
|