Hallo, hier geht es nun weiter mit dem dritten Teil des Crashkurses. Ich habe den Bytecode Lader der L1VM in unsere Zero VM eingebaut. Das heißt, das wir jetzt den Assembler der L1VM zum erstellen von Programmen verwenden können! Das ist viel einfacher als den Bytecode von Hand selbst zu erstellen, wie wir das bisher machten.

Wie ihr in der Funktion run() in “zerovm-0.3.c” sehen könnt habe ich in die Sprungtabelle “nop” dort eingefügt wo wir noch keine Befehle haben. Das müssen wir machen um kompatibel zur L1VM zu sein. Nur deshalb können wir den Assembler der L1VM verwenden. Wir haben ja bisher nur die vier Grundrechenarten und ein paar andere Befehle.

Jetzt können wir später ganz einfach mehr neue Befehle einfügen! Was macht nun der Bytecode Lader eigentlich? Er lädt den Bytecode in die zwei Speicherbereiche: Code und Daten. Er reserviert dafür das nötige RAM. Er wandelt Binärzahlen in dem Bytecode für die VM um (von Big Endian zur Host Endianess). Das ist schon ganz schön viel was da abläuft.

Schaut euch das mal an, wie das gemacht wird.

Hier gibt es ein ZIP Archiv mit dem vollständigem Programm:

ZeroVM-03