Wie macht man das folgende eleganter?
.cseg
tabelle: .db 1, 2, 3, 4, low(foo * 2), high(foo *2)
foo: mach irgendwas
ret
main: ldi r30, low(tabelle *2)
ldi r31, high(tabelle *2)
lpm
.....
Irgendwie sieht das "*2" blöde aus. Geht das schöner?
Hi
>Irgendwie sieht das "*2" blöde aus. Geht das schöner?
Wenn eine 1 schöner aussieht. Dann
tabelle << 1
MfG Spess
Georg G. schrieb: > Wie macht man das folgende eleganter? > > .cseg > tabelle: .db 1, 2, 3, 4, low(foo * 2), high(foo *2) > > foo: mach irgendwas > ret > > main: ldi r30, low(tabelle *2) > ldi r31, high(tabelle *2) > lpm > ..... > > Irgendwie sieht das "*2" blöde aus. Geht das schöner? man schreibt anstatt: "tabelle:" "foo:" einfach ".EQU tabelle=PC<<1" ".EQU foo=PC<<1" Oder, noch hübscher, man verpackt das noch in ein eingängiges Macro .MACRO PMDATA .EQU @0=PC<<1 .ENDMACRO und schreibt dann insgesamt: PMDATA tabelle .db 1, 2, 3, 4, low(foo), high(foo) PMDATA foo mach irgendwas ret main: ldi r30, low(tabelle) ldi r31, high(tabelle) lpm ..... Man darf dann aber natürlich nicht auf die Idee kommen, zu schreiben: ..... rcall foo Das ginge dann fürchterlich gegen den Baum. Und auch: ldi ZL,Low(foo) ldi ZH,High(foo) icall Das würde genauso knallen. Ich würde die Idee mit dem PMDATA-Macro also wirklich nur für reine Datenkonstanten-Adressen empfehlen, wie in dem Beispiel für "tabelle" (wie ja auch schon der Name des Macros suggeriert), sobald die Daten aber (ggf. auch) als Sprungziel verwendet werden sollen, würde ich bei der klassischen Schreibweise bleiben, hier im Beispiel also für "foo".
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.