Probleme mit Stack

Gast #63056
Lesenswert?

Habe ein Prog geschrieben, es ist allerdings noch nich fertig dennoch
habe ich schon die ersten Probleme.

Der Stack will nicht so wie ich will, nach aufrufen des Unterprogramms
soll er mit ret zurück hüpfen, tut er, aber nur insofern das er zum
Programm anfang und nicht zum Aufruf des Unterprogramms hüpft, hat wer
ne idee ?

Danke im vorraus
Angehängte Dateien:
Gast #63058
Lesenswert?

tja, was soll man dazu sagen?
push, push, push... und dann soll sich der kleine ret die richtige
Adresse selbst rausfischen? Oder wie denkst du dir das? Push/pop und
call/ret benutzen den gleichen stack und den gleichen SP.
Gast #63059
Lesenswert?

bin mir net sicher, aber ich glaub du hast das problem, dass der
controller net mehr weiss wo er "hinhüpfen" soll, denn in der
Stack-schleife schiebst du den eintrag wo die rücksprungadresse steht
immer weiter zurück.
ich weiss net ob du mir folgen kannst, aber ich mein dass es so ist,
das im nach nem "rcall" die rücksprungadresse als oberstes in den
stack gespeichert wird. wenn du jetzt via "push" neue daten
drüberschreibst, verliert der controller die orientierung.
wieso speicherst du die daten überhaupt im stack, das ist doch
eigentlich gar net nötig, oder?
hoffe ich hab net für allzuviel verwirrung gesorgt.
gruß
martin
Gast #63061
Lesenswert?

hm ok das Problem war mit einem einfachen rjmp gelöst ! Das ret scheint
tatsächlich meinen Stack zu mißbrauchen ;-) Zumindest wenn es etwas
anspruchsvoller wird.

Gibts denn ne möglichkeit dem die richtige stack adrese wieder
einzutrichtern ? ohne rjmp zu fuschen ?
Gast #63064
Lesenswert?

du kannst die daten einfach in den flash schreiben, unn dann schön der
reihe nach einlesen, ich hab selbst so nen lauflicht geschrieben, ca.
100 Zustände im Flash, ist kein prob, aber auf dem stack wirds eng!

was sollte das mit cbi PORT,3 ?
Gast #63068
Lesenswert?

Naja habe es jetzt so gemacht

sub1:
sbi PORTB, 0
sbi PORTB, 1
sbi PORTB, 2
sbi PORTB, 3
sbi PORTB, 4
sbi PORTB, 5
sbi PORTB, 6
sbi PORTB, 7
ret

da sdi eidnger anspringen.
Fange gerade erst mit avrs an , deshalb wunder dich nicht wenn meine
Lösungen nicht ganz so elitär sind ! :-) bin trotzdem glücklich wenns
klappt !

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren