AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte easySOM v0.2: Einfache Assembler-Emulation
Thema durchsuchen
Ansicht
Themen-Optionen

easySOM v0.2: Einfache Assembler-Emulation

Ein Thema von CalganX · begonnen am 14. Mär 2007 · letzter Beitrag vom 23. Mär 2007
Antwort Antwort
CalganX
Registriert seit: 21. Jul 2002
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
 
CalganX

 
Turbo Delphi für Win32
 
#2
  Alt 23. Mär 2007, 20:40
Hab heute mal ein paar Bug gefixt und ein paar Sachen hinzugefügt.

ChangeLog:
Code:
===
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
Download im ersten Beitrag und auf der Projektseite.

Chris
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz