Forum: Mikrocontroller und Digitale Elektronik avrstudio - sprungbefehlfehler


von Tobias Breckle (Gast)


Lesenswert?

hi community,
hab heut zum erstenmal die fehlermeldung "Relative branch out of reach" 
von meinem compiler bekommen. (sprungbehel ist breq) prozessor ist ein 
mega8.
jetzt ist meine frage wie lös ich denn sowas auf? routinen kann ich 
nicht viel kürzen. und so zwischensprünge einfügen vergeudet unnötig 
zeit.

hab au nix im forum oder in der anleitung gefunden.

von MooseChecker (Gast)


Lesenswert?

aus dem relativen Sprung einen absoluten Sprung machen

MooseC

von Tobias Breckle (Gast)


Lesenswert?

spring aber mit breq. oder gibts da ein gleichen befehl der absolut 
springt?

von crazy horse (Gast)


Lesenswert?

manchmal kann man Programmteile anders anordnen, um die Sprungdistanz zu 
verkürzen, ein Kochrezept gibts dafür nicht.
statt:

breq ziel1

kannst du dann schreiben:

brne ziel2
rjmp ziel1
ziel2: weiter im Text

von Tobias Breckle (Gast)


Lesenswert?

hab ich au schon überlegt.
hab aber grad noch ne andere lösung gefunden:

...
breq ziel1
...

ziel1:
jmp eigentliches_ziel
...

von crazy horse (Gast)


Lesenswert?

viele Wege führen nach Rom, deine Lösung funktioniert natürlich auch, 
würde trotzdem meine favorisieren, da du den endgültigen Sprungbbefehl 
da stehen hast, wo die Verzweigung auch stattfindet, ist leichter 
lesbar. Ausserdem kann es passieren, dass der breq wieder irgendwann zu 
kurz ist, wenn  das Programm zwischen breq und  jmp irgendwann mal 
länger wird. Aber, wie gesagt, das kannst du halten wie Nolte.

von Uwe (Gast)


Lesenswert?

Hi!
Bei mir sieht das dann so aus:

brne Ziel2
rjmp Ziel1
Ziel2

Nun ja viele Wege ...

MFG Uwe

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.