Asm-endAsm
Einfügen von Assemblerquelltext an die aktuelle Position. Syntax:
- Asm
- assembler-source code
- endAsm
Inline-Assembler
Zeichenketten und Kommentare der Inline-Assembler-Quellcodes folgen der gleichen Syntax wie im Luna-Code. Zeichenketten sind daher immer mit Anführungszeichen versehen. Kommentare beginnen mit ' oder //, zusätzlich ; am Zeilenanfang.
Allgemein
Die Zusatzfunktionen und Eigenschaften des Assemblers:
Labels im Assembler-Source
Jedes Label steht in einer eigenen Zeile, nachfolgende Befehle sind nicht vorgesehen.
Inline-Assembler
Die Labels in Luna sind auf die aktuelle Klasse bezogen, z.B. das Label „mylabel“ im Hauptprogramm wird vom Compiler zu „classAvrMylabel“ erweitert. „mylabel“ in einer Klasse „myclass“ wird zu „classMyclassMylabel“. Auch Labels die im Inline-Assembler erstellt wurden, werden diesbezüglich erweitert.
Die Namenserweiterung ist zwingend notwendig um die verschienenen Namensräume getrennt halten zu können und einen Zugriff aus dem Luna-Source heraus zu ermöglichen. Dies betrifft ausschließlich den Inline-Assembler im Luna-Source.
Beispiel 1
' somewhere in the main program Asm classAvrMyLoop: nop rjmp classAvrMyLoop endAsm
Beispiel 2
' somewhere in the main program Asm MyLoop: 'will be expanded to "classAvrMyLoop" nop rjmp classAvrMyLoop endAsm
Beispiel 3
' call assembler routine call example ' Somewhere in the program code Asm classAvrexample: add R16,R17 ori R16,&h33 ldi R16,(1<<3) or (1<<7) ; Set bit 3 and 7 ldi ZL,lo8(classAvrexample) ldi ZH,hi8(classAvrexample) inc R17 ret endAsm