XJack (One Step Beyond) ... (The NAND2TETRIS Experience / Part II)

Showtime

“Ein kleiner Schritt für die Menschheit, ein großer Sprung für …”

Motivation

Selbst der HE32 Emulator aus Teil 1 läuft noch relativ gemächlich, Geschwindigkeit geht anders.

Wenn man nach den Ursachen forscht, kommt dann Grundsätzliches zu Tage. Die verwendete CPU kennt nur jeweils ein Daten- und ein Adressregister (sowie den Programmzähler). Was die Hardware vereinfacht, erschwert der Software die Arbeit. Praktisch alle vom VM-Code geforderten Aktivitäten arten in regelrechte Stackoperationsorgien aus. Für einfachste Dinge müssen zum Teil hunderte von CPU-Befehlen ausgeführt werden - da nützt der schnellste Emulator nichts!

Wenn man hier auf Abhilfe sinnt, gibt es eigentlich nur einen Weg: Eine neue CPU mit eigenem - womöglich “Emulator-optimiertem” - Befehlssatz und mehr Registern! Um die Sache im Rahmen zu halten, habe ich also die Anzahl der Register auf 16 erhöht und die verfügbaren Operationen zunächst gar nicht geändert. Mit der Zeit und zunehmender Erfahrung habe ich dann immer mehr Befehle & Fähigkeiten nach Erfordernis nachgerüstet.

Wenn sich das neue Gerüst als stabil erweist, kommen schnell Wünsche nach weiteren Fähigkeiten auf. Meine Wunschliste enthielt z.Bsp. zunächst den Wunsch nach Interrupt-Unterstützung & die Integration diverser “Hardware”, später kam noch “ein OS mit unabhängig nachladbaren Programmen” hinzu - inkl. Shell-Unterstützung!

Hier habe ich mal ein paar Details zur Entwicklung zusammengetragen:

Tutorials & Samples

Tutorial 1: Hello World

Tutorial 2: The XJack Language

Tutorial 3: The HV2 Platform Emulator

Tutorial 4: The HV2 Operating System

KI-Transparenzhinweis

Dieser Text ist komplett ohne KI-Nutzung entstanden. Lediglich für Beispiele zur Nutzung des Linux-API habe ich eine bekannte KI gelegentlich eingespannt (über Ecosia - weil ohne Anmeldung), d.h. als Hilfe zur Bereitstellung der HV2OS-Library & des hv2e64-Emulators.