![]() |
easySOM v0.2: Einfache Assembler-Emulation
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: ![]() Projektseite: ![]() Befehlsreferenz: ![]() Download: Version 0.2: ![]() ![]() Version 0.1: ![]() Viel Spaß mit easySOM. Chris |
Re: easySOM v0.2: Einfache Assembler-Emulation
Hab heute mal ein paar Bug gefixt und ein paar Sachen hinzugefügt.
ChangeLog:
Code:
Download im ersten Beitrag und auf der Projektseite. ;)
===
v0.2 (2007-03-23) [+] Befehls-Implementierung: res_dyn, indirect [+] Datei können nun auch über Drag’n'Drop geöffnet werden [+] Die Ausführung des Programmes kann nun pausiert werden [*] Doppelklick auf Fehlermeldungen im Log lässt den Editor zur entsprechenden Zeile springen.[*] Einträge im Log werden nun farblich hervorgehoben und unterschieden[*] Log wird nun vor dem Compilieren/Starten geleert [b] push_i/pop_i sollten nun auch bei Unterprogrammen richtig funktionieren Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz