Die HAM (Hypothetische Akku-Maschine) ist eine minimalistische Prozessor-Architektur nach von Neumann. Sie dient in erster Linie zur Veranschaulichung von einfachen Mikroprozessoren mit einem minimalen Befehlssatz. Nutzen kann man das Toolkit für die berufliche Bildung in der Elektrotechnik oder Informatik.
Die Bestandteile sind:
- HAMEditor: Einfacher Source-Level-Editor für die Programmentwicklung. Damit lassen sich die Assemblerprogramme schreiben, kompilieren, linken und simulieren.
- HASM: Der einfache Assembler. Das Programm assembliert das geschriebene Programm und wandelt es in eines von drei Formate um. Die drei Formate sind Xilinx-BRAM, RTEasy und HAMSim.
- HAMSim: Der einfache HAM-Simulator (obige Abbildung). Mit dem Programm können assemblierte Programme in einer HAM-Simulationsumgebung ausprobiert werden.
Alle Programme sind im Prinzip selbsterklärend, das Assembler-Format wird in einer gesonderten Dokumentation beschrieben.
Das Toolkit kann hier heruntergeladen werden. Die Software ist betriebssystem-unabhängig. Sie benötigen dafür JRE oder JDK in der Version 1.7.x oder höher.
Ein Beispiel-Programm (Subroutine) können Sie hier einsehen.
HAM-Aufgaben in Assembler
# | Zweck | Aufgaben |
---|---|---|
1a | Addition mit Carry-Flag | Addition mit Carry |
1b | Subtraktion durch 2er-Komplement | Subtraktion |
2 | Multiplikation durch Shift | Multiplikation Shift |
3 | Multiplikation durch Schleife, INBUS, OUTBUS | Multiplikation Loop |
4 | Bits prüfen durch Prüfmasken | Bits maskieren |
5 | OR-Gatter | OR-Gatter |
6 | XOR-Gatter, Verschlüsselung | XOR-Gatter |
7 | Aufruf von Subroutinen, Stack-Zugriffe | Subroutinen |
8 | Event-Polling, externe Ereignisse | Event-Polling |
9 | Modulo-Rechnung, Division mit Rest | Modulo-Rechnung |
10 | Zeichenketten, Strings | Hello-World |
11 | Länge einer Zeichenkette | Länge eines Strings |
12 | Suchen in Zeichenketten | Zeichen in String suchen |
13 | Zeichenketten kopieren | Strings kopieren |
14 | Buffer Overflow | Buffer Overflow |