Forum: Compiler & IDEs GCC Asm: Lokale Labels in Makros


von Christian Rötzer (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

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

von Christian Rötzer (Gast)


Lesenswert?

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.

von Jörg Wunsch (Gast)


Lesenswert?

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...

von Thomas (Gast)


Lesenswert?

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

von Jörg Wunsch (Gast)


Lesenswert?

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.

von Christian Rötzer (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.