Forum: Compiler & IDEs mehrzeiliges #define im Assembler


von Bernd (Gast)


Lesenswert?

ich möchte in einem Assemblerfile für avr-gcc zwei
Assembleranweisungen durch ein Makro ersetzen.

Ungefähr so:
#define waiLo(PORT,PIN,LAB)\
LAB:  sbic PORT,PIN       ; 2/3C    loop until SCL is low\
      rjmp  LAB      ; 2C

Jetzt macht der Präprozssor natürlich eine Zeile daraus,
es müssen für den Assembler aber 2 Zeilen sein,
wie mach ich das?

von Bernd (Gast)


Lesenswert?

sorry, geht ja doch!

von Bernd (Gast)


Lesenswert?

geht doch nicht, zwar keine Fehlermeldung,
aber die zweite Zeile wird natürlich verschluckt (als Kommentar 
betrachtet)

von Frank (Gast)


Lesenswert?

Hallo Bernd,

was spricht denn gegen
1
.MAKRO waiLo()
?
(siehe http://www.mikrocontroller.net/articles/AVR_Assembler_Makros)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Den Kommentar darfst du da nicht reinschreiben, denn der Präprozessor
macht ja aus backslash-newline eine lange Zeile draus.

Den Zeilenwechsel (für die zweite Anweisung) kannst du im
AVR-GNU-Assembler meines Wissens alternativ durch ein $
kennzeichnen.
1
#define waiLo(PORT,PIN)\
2
99:  sbic PORT,PIN$ \
3
      rjmp  99b

von Bernd (Gast)


Lesenswert?

Frank schrieb:
> was spricht denn gegen.MAKRO waiLo()

eigentlich nur die Tatsache dass ich aus der C-Ecke stamme

Jörg Wunsch schrieb:
> Den Zeilenwechsel (für die zweite Anweisung) kannst du im
> AVR-GNU-Assembler meines Wissens alternativ durch ein $
> kennzeichnen.

danke. so geht's

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.