========================== ULM-Simulator installieren [TOC] ========================== Der ULM-Simulator ist selbst in C++ geschrieben. Um diesen benutzen zu können, sind folgende Schritte notwenig: - Den C++ Souce-Code von der ULR `http://www.mathematik.uni-ulm.de/~lehn/ulm.cc` herunterladen. - Den Source-Code mit einem C++ Compiler übersetzen `g++ -Wall -std=c++11 -o ulm ulm.cc` - An einem kleinen Beispiel testen, ob alles funktioniert. Demo für das Herunterladen und installieren =========================================== ---- SHELL(path=session01,hide) ------------------ rm -rf demo2 mkdir demo2 -------------------------------------------------- ---- SHELL(path=session01/demo2) ----------------- wget http://www.mathematik.uni-ulm.de/~lehn/ulm.cc g++ -Wall -std=c++11 -o ulm ulm.cc ls -------------------------------------------------- Format für Programme in ULM-Maschinencode ========================================= Ein Programm in ULM-Maschinencode, das mit dem ULM-Simulator ausgeführt werden kann, sieht beispielsweise so aus :import: session01/demo/example.ulm Zu beachten ist: - Pro Zeile steht ein Maschinenbefehl. - Leerzeichen werden ignoriert. - Der Maschinenbefehl muss als Hexadezimalzahl dargestellt sein. - Pro Zeilen werden nur die ersten acht Ziffern gelesen. Der Rest einer Zeile kann als Kommentar für den Maschinencode verwendet werden. Eine Zeile mit `01 23 45 67 # Das soll ...` ist also äquivalent zu `01234567#Dassoll...` Man muss einen Kommentar nicht mit `#` einleiten. Auch `01234567Dassoll...` ist für die Maschine einfach nur `01234567` Auch dieses Beispiel kann mit `wget` geladen werden: ---- SHELL(path=session01/demo2) ---------------------- wget http://www.mathematik.uni-ulm.de/~lehn/example.ulm ------------------------------------------------------- Demo zum Testen des ULM-Simulators ================================== Auf der Kommadozeile startet man die ULM, indem man als Argument den Dateinamen für ein Maschinenprogramm übergibt. Zum Beispiel `./ulm example.ulm` Per Default wird die ULM dieses Programm interaktiv ausführen, das heisst - Zunächst wird der Zustand der Maschine beim Start dargstellt. Bevor der erste Befehl ausgeführt wurde (CPU-Cycle 0). - Drückt man _Return_ wird jeweils der nächste Befehl ausgeführt und der neue Zustand der Maschine dargestellt. Die Maschine kann auch nicht-interaktiv mit der Option `-r` (_run_) gestartet werden. Dann rauscht das durch wie in diesem Demo: ---- SHELL(path=session01/demo2) ----------------- ./ulm -r example.ulm -------------------------------------------------- :navigate: up -> doc:index back -> doc:session01/page01 next -> doc:session01/page03