Forum: Compiler & IDEs breq + rjmp funktioniert nicht


von Sam .. (sam1994)


Lesenswert?

Hi

Lange habe ich nach einem blöden Fehler gesucht, den ich nun durch 
Zufall gefunden habe.
Eingebaut habe ich ihn, nachdem breq nicht mehr zum Springen gereicht 
hat. Also nahm ich ein 2. Label in der Nähe und setze ein rjmp dahinter:
1
cpi YL, LOW(OSCEND)
2
breq JPut
3
rjmp Loop
4
5
Jput:
6
rjmp Put
Dieses Codestück hat mich Stunden gekostet.

Bei der Fehlersuche habe ich abundzu manche Codestücke verbessert - 
zufällig auch das obere, da mir eingefallen ist, dass Loop näher an der 
Codestelle liegt:
1
cpi YL, LOW(OSCEND)
2
brne Loop
3
rjmp Put

Und plötzlich funktionierte das Programm einwandfrei. Ich habe es 
nochmals rückgängig gemacht, aber es ist genau dieses Codestück.

Für mich wären beide richtig. Was ist nun der Unterschied zwischen den 
beiden?

von (prx) A. K. (prx)


Lesenswert?

Samuel K. schrieb:

> Was ist nun der Unterschied zwischen den beiden?

Nur Laufzeit und Länge vom Code. Die Funktion ist gleich. Hängt bei dir 
vielleicht irged etwas von der Codelänge ab?

von Sam .. (sam1994)


Lesenswert?

Danke du hast mich auf die Idee gebracht mal ein nop einzusetzen. Ich 
schätze ich muss den Buffer vergrößern, die Routine ist zu zeitkritisch. 
Der Fehler tritt ein sobald ich ein nop hinzufüge.

edit: Funktioniert jetzt mit größerem Buffer.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.