L1VM ist eine virtuelle Maschine mit RISC Ansatz. Es werden nur die nötigsten Befehle fest in die VM integriert. Alles andere wird mit Modulen (Bibliotheken) realisiert. Es wird für Datei I/O oder für TCPI/IP Sockets ein Modul benötigt. Ich schrieb ein Modul für die SDL Bibliothek, das Pixel zeichnen kann. Der Grund dafür war zu testen wie lange die Apfelmännchen Berechnung mit der L1VM dauert. Um es kurz zu machen: die L1VM ist deutlich schneller als Nano, was am viel einfacheren Design liegt.

Die L1VM ist kleiner als 32 KB! Sie kann Objektcode sehr schnell ausführen. Die Programme für die VM werden mit einem Assembler übersetzt. Zur Zeit schreibe ich einen Compiler für die neue L1VM. Ein “Hello world!” Programm in L1ASM sieht so aus:

// hello.l1asm
// Hello world demo
// data section
.data
	Q, 1, helloaddr
	@, 0, 8Q
	B, 13, hellostr
	@, 8, "Hello world!"
	Q, 1, returncode
	@, 21, 0Q
.dend
// code section
.code
	loada returncode, 0, I1
	loada helloaddr, 0, I0
	// print string
	intr0 6, I0, 0, 0
	// print newline
	intr0 7, 0, 0, 0
	// exit with returncode 0
	intr0 255, I1, 0, 0
.cend