www.mikrocontroller.net

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


Autor: Christian Rötzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/Sy...

Autor: Christian Rötzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian Rötzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Numerische Labels. Hm. Sieht ungewohnt und daher etwas unübersichtlich
aus. Werde ich dann mal testen. Danke nochmals!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.