Ich stelle hier mal mein aktuelles Projekt
easySOM vor:
easySOM ist entstanden, weil wir im Unterricht den "Schul-"Assembler
SOM (Stack-orientierte Maschine) benutzt haben, um die Idee von Assembler zu lernen und eigentlich jeder nach drei Wochen Hass auf diesen Assembler hatte. In erster Linie lag das daran, dass die
IDE sehr unhandlich und auf DOS-Basis ist. Darüber hinaus hatte der Assembler einige Eigenarten, wie z.B. fehlende Sprungmarken und keine Kommentierungsmöglichkeit (bzw. eine sehr unpraktische).
Alles in Allem war das Grund genug für mich, diesen kleinen Assembler nachzuprogrammieren. Diesmal auf
Win32-Basis und mit einigen Veränderungen.
Das Prinzip und die Syntax des Assemblers wurde beibehalten. D.h. die Befehle sollten im Wesentlich noch funktionieren, wie vorher und die vorhandenen Register sollten denen im SOM entsprechen (wobei ich auch hier einige Änderungen vorgenommen habe, die für mich nicht weiter bedenklich erschienen).
Wer also mit SOM schon einmal gearbeitet hat, sollte keine großen Probleme mit
easySOM haben.
Es sei noch angemerkt, dass SOM eine stack-orientierte Maschine ist. D.h. es gibt nur wenige Register und in der Praxis hat das Programm - abgesehen von einem Indexregister - keinen Einfluss darauf. Wer also das EAX-Register sucht, wird vergeblich suchen. Darüber hinaus ist die Handhabung von Variablen und von Stack extrem komisch. So funktioniert
pop bspw. so, dass das oberste Element an die Variable der angegebenen Stelle gelegt wird. Also
pop 0 würde das oberste Stack-Element an die Variablenstelle 0 legen, die vorher mit Hilfe von
res reserviert wurde.
Wer noch nie SOM gesehen hat, wird also den Kopf schütteln, nehme ich an. Ich halte auch nicht sonderlich viel davon, aber es ist nett zum Lernen und Lehrer wollen häufig ja nichts anderes lernen, als das, was sie kennen und somit war mein Ziel eigentlich nur ein Verbessern der
IDE.
Eine Kleinigkeit zur Syntax noch:
; (Semikolon) leitet einen Kommentar ein und
: ein Label. Labelnamen dürfen nur Buchstaben und Zahlen enthalten. Es wird kein Fehler ausgegeben, wenn Sonderzeichen drin sind, aber ich kann nicht garantieren, dass das ohne Weiteres funktioniert.
Sprungbefehle können entweder eine Zeilennummer und ein Label als Parameter erhalten. Ein Label muss inkl. dem Doppelpunkt angegeben werden.
Das ZIP-Paket enthält neben der Exe-Datei, einer ReadMe und einem ChangeLog noch einige Beispiel.
Screenshot:
easySOM v0.1
Projektseite:
http://blog.calganx.net/software/easysom/
Befehlsreferenz:
http://blog.calganx.net/software/easysom/referenz/
Download:
Version 0.2:
.zip-Datei (ca. 504KB)
.zip-Datei (UPX) (ca. 354KB)
Version 0.1:
.zip-Datei (ca. 512KB)
Viel Spaß mit easySOM.
Chris