Hallo Programmierer, wieder einmal knoble ich an einer Situation mit dem Assembler des GCC. Wie kann ich einen Makro mit lokalen Label definieren? z.B. .macro Test jmp Silly Silly: .endm und dann z.B. dreimal der Aufruf: Test Test Test der aufgelöst werden sollte in sowas (ungefähr) jmp Silly1 Silly1: jmp Silly2 Silly2: jmp Silly3 Silly3: Ich arbeite mit dem MSP430. Grüße und Danke im Voraus Christian
lokale labels in gas (gas benötigt für lokale labels in makros keine spezielle syntax wie einige andere assembler): http://sources.redhat.com/binutils/docs-2.15/as/Symbol-Names.html
Ja, die Stelle habe ich auch schon durchgearbeitet. Leider hat der gas die Locals nicht aufgelöst... Habs mit $ und als erstes in Standard-Schreibweise auspropiert, also wie oben in meinem Beispiel. Das interessiert den Assembler alles nicht. Nur die Nummern Labels habe ich nicht ausprobiert. Da gebe ich dem Makro lieber einen Index mit, der dann in die Labels eingebaut wird.
jmp 1f 1: jmp 1f 1: jmp 1f 1: Mehr braucht's nicht. Numerische lokale Labels sind grenzenlos ,,recyclebar''. Das angehängte f oder b steht für vorwärts oder rückwärts, der jeweils nächstliegende Label in der entsprechenden Richtung mit passender Nummer wird genommen. Habe ich aber auch alles in der avr-libc-Doku aufgeschrieben...
kann sein dass er die avr-libc dokumentation nicht gelesen hat, wenn er mit dem msp430 arbeitet... @Christian also dann aber doch lieber numerische labels, als bei jedem makroaufruf noch manuell einen index mitgeben zu müssen :D
Ah ja sorry, das mit dem MSP430 war mir entgangen. Anyway, numerische Labels gehen mit allen gängigen Unix-Assemblern, so auch mit gas (dem GNU assembler), sollte also auch bei MSP430 kein Problem sein.
Numerische Labels. Hm. Sieht ungewohnt und daher etwas unübersichtlich aus. Werde ich dann mal testen. Danke nochmals!
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.