3 Punkte von GN⁺ 2024-12-28 | 1 Kommentare | Auf WhatsApp teilen

Was ist eine virtuelle Maschine?

  • Eine virtuelle Maschine (VM) ist ein Programm, das wie ein Computer funktioniert. Sie simuliert eine CPU und einige Hardware-Komponenten, um arithmetische Operationen auszuführen, in den Speicher zu lesen und zu schreiben sowie mit I/O-Geräten zu interagieren.
  • VMs werden erstellt, um das Verhalten eines bestimmten Computers nachzubilden oder die Softwareentwicklung zu erleichtern.
  • Die Java Virtual Machine (JVM) ist ein erfolgreiches Beispiel und ermöglicht die Ausführung von Java-, Kotlin- und Clojure-Programmen auf verschiedenen Geräten.

LC-3-Architektur

  • LC-3 ist eine Computerarchitektur für Lehrzwecke, die die wichtigsten Konzepte moderner CPUs zeigt.
  • LC-3 verfügt über 65.536 Speicherstellen, von denen jede einen 16-Bit-Wert speichert.
  • Es gibt 10 Register: 8 davon sind Allzweckregister, 1 ist der Program Counter (PC) und 1 das Bedingungsflag-Register (COND).

Befehlssatz

  • Ein Befehl ist eine Anweisung, die der CPU eine grundlegende Aufgabe vorgibt.
  • LC-3 hat 16 Opcodes, und jeder Befehl ist 16 Bit lang.
  • Ein Befehl besteht aus dem Opcode und den für die Operation benötigten Parametern.

Bedingungsflags

  • Das Register R_COND speichert Bedingungsflags, die das Vorzeichen der letzten Berechnung angeben.
  • LC-3 verwendet 3 Bedingungsflags, um das Vorzeichen des Berechnungsergebnisses darzustellen.

Programmausführung

  • Ein Programm lädt Befehle aus dem Speicher, erhöht das PC-Register, prüft den Opcode und führt den Befehl aus.
  • Befehle können den PC verändern, um den Ausführungsfluss zu steuern.

Implementierung von Befehlen

  • Der Befehl ADD addiert zwei Zahlen und speichert das Ergebnis in einem Register.
  • Der Befehl LDI lädt einen Wert aus dem Speicher und speichert ihn in einem Register.
  • Jeder Befehl wird gemäß der Spezifikation implementiert und muss die Flags aktualisieren.

Trap-Routinen

  • LC-3 stellt Trap-Routinen bereit, um allgemeine Aufgaben wie Tastatureingabe oder die Ausgabe von Zeichenketten auszuführen.
  • Jede Trap-Routine wird durch einen Trap-Code identifiziert und mit dem Befehl TRAP ausgeführt.
  • Die Trap-Routinen sind in C geschrieben und verbessern die Performance der VM, indem sie die I/O-Routinen des Betriebssystems nutzen.

1 Kommentare

 
GN⁺ 2024-12-28
Hacker-News-Kommentare
  • Ein Nutzer berichtete, dass er in einem Einführungskurs in Informatik am Community College einen einfachen CPU-Befehlssatz entworfen, eine VM und einen Assembler geschrieben und damit Assemblerprogramme ausgeführt habe. Dieser Prozess habe ihm geholfen, vieles über Computer zu verstehen.

    • Er hatte das Gefühl, dass man auf diese Weise alle Stufen des Computings lernen kann, von der echten CPU-Entwicklung für FPGA bis hin zum Schreiben eines einfachen Betriebssystems und von Programmen.
    • Wenn man nicht die Leistung und Sicherheit modernen Computings benötigt, ist dieser Prozess überraschend einfach.
  • Nach dem Ansehen von Ben Eaters Breadboard-CPU-Serie äußerte jemand den Wunsch, eine eigene CPU zu entwerfen und zu emulieren.

    • Es wurde der Wunsch geäußert, sich dafür Zeit zu nehmen und das Design tatsächlich umzusetzen.
  • Liste empfohlener Bücher:

    • "Virtual Machines: Versatile Platforms for Systems and Processes" by Smith and Nair - scheint ein umfassender Überblick über das Thema zu sein
    • "Virtual Machines" by Iain Craig - scheint ein praxisorientiertes Buch über Sprachen und VMs zu sein
    • "Virtual Machine Design and Implementation in C/C++" by Bill Blunden - scheint ein praxisorientiertes Implementierungsbuch zu sein
    • Es wurde erwähnt, dass zusätzliche Einschätzungen von jemandem hilfreich wären, der diese Bücher gelesen hat.
  • Es wurde die Meinung geäußert, dass die Lehrarchitekturen Brookshear Machine und Little Computer nicht der Realität entsprechen und Studierenden ein verzerrtes Verständnis vermitteln könnten.

    • Für Menschen, die lernen wollen, wie Computer funktionieren, sei ein Betriebssystemkurs vermutlich die bessere Wahl.
    • Für ein kurzes Tutorial wurde "Writing my own bootloader" empfohlen.
    • Die Meinung war nicht, dass das Tutorial "Write your own VM" schlecht sei, sondern dass andere Themen nützlicher sein könnten.
  • Es wurde angemerkt, dass der Begriff "Virtual Machine" heute üblicherweise eine Umgebung bezeichnet, die Hardware-Virtualisierungsfunktionen nutzt.

    • Beim Erklären des Unterschieds zwischen Emulator und VM wurde erwähnt, dass der Begriff früher mehrdeutig gewesen sei, heute aber klarer verwendet werde.