“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 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.