ToySimulator - Simulation eines einfachen Prozessors

Der ToyRechner war eine Übungsprojekt an der Berufsakademie Stuttgart im 4. Semester und basiert auf einer Idee vom Forschungszentrum Informatik an der Universität Karlsruhe. Dabei wird ein sehr einfacher Rechner spezifiziert, der prinzipiell aus einfachen TTL-Bausteinen nachgebaut werden kann.

Spezifikation

Blockschaltbild

Das Blockschaltbild des ToyRechners
Blockschaltbild (verkleinert)

Befehlssatz

OP-CodeMnemonicBeschreibung
00 (0x0)STO <Adresse>speichere den ACCU ins RAM an die Adresse
01 (0x1)LDA <Adresse>lade ACCU mit dem Inhalt der Adresse
02 (0x2)BRZ <Adresse>springe nach Adresse, wenn der ACCU null ist
03 (0x3)ADD <Adresse>addiere den Inhalt der Adresse zum ACCU
04 (0x4)SUB <Adresse>subtrahiere den Inhalt der Adresse vom ACCU
05 (0x5)OR <Adresse>logisches ODER des ACCUs mit dem Inhalt der Adresse
06 (0x6)AND <Adresse>logisches UND des ACCUs mit dem Inhalt der Adresse
07 (0x7)XOR <Adresse>logisches ExODER des ACCUs mit dem Inhalt der Adresse
08 (0x8)LDAR <Adresse>lade AR mit der angegebenen Adresse
09 (0x9)INCARinkrementiere AR (AR++)
10 (0xA)LDIlade ACCU mit dem Inhalt der Adresse aus dem AR
11 (0xB)STIspeichere ACCU an die Adresse aus dem AR
12 (0xC)CPIvergleiche ACCU mit dem Inhalt der Adresse aus dem AR
13 (0xD)SHLschiebe den ACCU um 1 Bit nach links
14 (0xE)SHRschiebe den ACCU um 1 Bit nach rechts
15 (0xF)BRC <Adresse>springe nach Adresse, wenn das Carry-Bit gesetzt ist

Der Simulator

Screenshot des ToySimulators

Der Simulator zeigt alle Register des Prozessors an. Diese können dann auch verändert werden. Im RAM-Viewer (Menüpunkt View, RAM) wird der Inhalt des Arbeitsspeichers disassembliert angezeigt. Wurde der Quellcode frisch assembliert, werden hier auch die Sprungmarken (Labels) angezeigt. Einen Breakpoint kann man mit einem Rechtsklick in der Spalte "Breakpoint" anlegen.

Unter dem Menüpunkt View, Console verbirgt sich ein Memory-Mapped-Device, das ein Ausgabebildschirm mit der Größe 10x40 darstellt. Dazu werden die letzten 400 Bytes bzw. die letzten 200 16-bit-Wörter des Arbeitsspeichers also ASCII-Codes interpretiert und angezeigt. D.h. es wird der Speicherbereich 0xf38-0xfff verwendet. Ähnlich funktioniert das LCD (Menüpunkt View, LCD). Das LCD kann allerdings nur 4 Zeichen darstellen, wozu zwei Speicherwörter benötigt werden. Es wird also der Speicherbereich 0xffe-0xfff verwendet.

Unter dem Menüpunkt File, New Assembler File verbirgt sich ein einfacher Texteditor, mit dem die Assemblerprogramme geschrieben werden können. Er unterstützt leider kein Syntax-Highlighting. Aber man kann direkt aus dem Assembler heraus das Programm assemblieren und in den Arbeitsspeicher des Simulators laden und ausführen lassen.

Der Simulator ist in Java geschrieben und kann hier heruntergeladen werden:

Beispielprogramme

Ein paar Beispielprogramme.
© 2006 adabolo.de (2006/11/12)