Abfolge Bibliotheks-Code

Der Compiler/Assembler bindet Inline-Code (den Source aus Inline-Methoden) direkt dort ein, wo er im Luna-Code textuell erscheint. Vor dem Einbinden werden Makros und Textersetzung bearbeitet.

Die Bibliotheks-Sourcen (Methoden und Subroutinen) werden in der Reihenfolge wie im Bibliothekseditor dargestellt zusammengefasst eingebunden. Hierbei werden unbenutzte Sourcen ausgeblendet.

avr.device = atmega328p
avr.clock = 20000000
avr.stack = 64
 
uart0.baud = 19200           ' Baudrate
uart0.Recv.enable             ' Senden aktivieren
uart0.Send.enable             ' Empfangen aktivieren
 
#library "library/mylib.interface"
 
dim a as byte
 
a = mylib.myconst
a = mylib.Hello.Myproperty
 
mylib.Hello.Myproperty = 100
 
mylib.Hello.myinline(200)
mylib.Hello.mymethod(1,2)
 
halt()

Der resultierende Assemblercode:

;{12}{ a = mylib.myconst } ---------------------------------------------
ldi  	_HA0,0x64	; 0b01100100 0x64 100
sts		dVarClassAvrA,_HA0
;{13}{ a = mylib.Hello.Myproperty } ------------------------------------
lds		_HA0,_dVarMylibHellomyproperty
sts		dVarClassAvrA,_HA0
;{15}{ mylib.Hello.Myproperty = 100 } ----------------------------------
ldi		_HA0,0x64	; 0b01100100 0x64 100
sts		_dVarMylibHellomyproperty,_HA0
;{17}{ mylib.Hello.myinline(200) } -------------------------------------
ldi		_HA0,0xC8	; 0b11001000 0xC8 200
nop
nop
nop
;{18}{ mylib.Hello.mymethod(1,2) } -------------------------------------
ldi		_HA0,0x02	; 0b00000010 0x02 2
push		_HA0
ldi		_HA0,0x01	; 0b00000001 0x01 1
rcall		_MylibHelloMymethod
;{22}{ halt() } --------------------------------------------------------
__halt0:
rjmp		__halt0
 
[...]
 
_MylibHelloMymethod:
pop		_LA0
pop		_LA1
pop		_HB0
push		_LA1
push		_LA0
ret
 
[...]