Tutorial - Hilfe zum Assembler Editor asmedric
Übersicht
Was ist asmedric?
Dieser Editor ist keine alleinstehendes Programm sondern nur für die Verwendung mit dem
Programmpaket CIA konzipiert. Es ist möglich, Assemblerprogramme zu editieren und die Programme
gemäß eines Schemas in Programme aus 0 und 1 zu übersetzen. Diese Binärprogramme
können dann in einen RAM-Baustein des Simulators geladen werden, um sie dort mit dem geeigneten
Rechnertyp zu simulieren. Es wird in der ersten Version keine Übersetzung in das Binärformat
erfolgen.
Der Editor benutzt spezielle Dateien als Informationsquellen (Dateitypen).
Das Verhalten des Editors kann mithilfe dieser Dateien direkt gesteuert werden. Daher ist die Anpassung
an andere Befehlssätze und Ausgabeformate mit relativ geringem Aufwand zu bewerkstelligen.
Der Editor unterscheidet zwei Modi: Der eine ist die Bearbeitung von "Assemblerprogrammen", die auch
als solche vom Editor automatisch erkannt wurden. Sie müssen dazu einem bestimmten Format entsprechen.
Sollte die Datei nicht dem Format entsprechen, wird die Datei als Text geladen. Die Umwandlung in ein
Assemblerprogramm ist möglich.
zurück
Welche Dateitypen gibt es?
asmedric unterscheidet 3 Dateitypen:
- Befehlssatz-Dateien enthalten die Definition eines Befehlssatzes.
Dies sind XML-Dateien, deren Format in der Datei Befehlssatz.dtd festgelegt ist. Ein Befehlssatz ist
eine Liste von Befehlen, es wird angegeben, welche Parameter zu dem jeweiligen Befehl passen und dann im
Editor als "erlaubt" erkannt werden. Außerdem sollte jeder Befehl die Vorschrift mitführen,
wie er in bestimmte Sprachen übersetzt werden kann. Es werden standardmäßig die
Befehlssätze RISC, MIKROCODE und MIXED mitgeliefert.
- Makrosatz-Dateien definieren Abkürzungen für Gruppen von
Befehlen zu einem bestimmten Befehlssatz (wiederum XML). Die Spezifikation ist in MakroSatz.dtd zu finden.
Makros dürfen keine weiteren Makros enthalten, sondern bestehen aus reinen Folgen von Befehlen des
betreffenden Befehlssatzes. Die hier benannten Makros haben noch weitere Fähigkeiten, die über
die der allgemeinbekannten Makros hinausgehen und sind somit zwischen den textuellen Ersetzungen und
Unterprogrammen anzusiedeln.
- Assembler-Programme beschreiben Zeile für Zeile ein
Assembler-Programm. Jedes Programm gehört zu einem Befehlssatz. Das Format ist auch hier XML, wobei
es speziell in AssemblerProgramm.dtd festgelegt ist.
-
Steuersatz-Dateien sind ein Hilfsbefehlssatz, der eine besondere Rolle
bei der Benutzung von Variablen spielt. Hier werden zwei Befehle definiert: Festlegung der Startadresse
der ersten Variable (voreingestellt VARSTART) immer mit einem Parameter vom Typ "natürliche Zahl",
da hier eine Speicheradresse erwartet wird. Und der Befehl zur Deklaration einer neuen Variable
(voreingstellt VAR) immer mit einem Namen, einer Angabe zur Breite der Variable in Byte (>=0) und einem
initialen Wert (Ganzzahl) in dieser Reihenfolge. Jeder Befehlssatz, der Variablen unterstützen
will, muss daher einen Befehl enthalten, der es ermöglicht, eine Speicherzelle mit einem Initialwert
zu belegen.
zurück
Wie editiere ich einen Befehlssatz?
Nachdem man den Assembler Editor gestartet hat, wählt man im Menü Datei
den Punkt Neu und muss nun einen Befehlssatz wählen, zum Beispiel aus den oben genannten
Dateitypen.
Nun kann man mit dem Editieren des Programms im oberen Textfeld beginnen.
Das untere Feld ist für Meldungen reserviert, insbesondere für Fehlermeldungen. Es kann möglich
sein Variablen zu benutzen, dies hängt vom Befehlssatz
(Dateitypen) ab. Falls der Befehlssatz überhaupt übersetzbar ist, kann das mit
einem einzeiligen Programm getestet werden (siehe Wie teste ich einen Befehlssatz?).
Nun kann man den Befehlsatz übersetzen.
Beim editieren der Befehlsätze sollte man die folgende Reihenfolge beachten:
- Variablendeklaration (Var name, breite, wert)
- Konstantendeklaration (Const name, wert)
- Anfang des Speicherbereichs (Varstart wert)
- Befehle aus dem Befehlssatz
Wobei die Befehle des Befehlssatzes von der folgenden Form sein müssen:
Marke : Mnemo, Parameter, Parameter ... // Kommentar
Die Parameterzahl ist vom Befehlsnamen (Mnemo) abhängig.
Marken, Variable und Konstanten
sind case-sensitive!
Alle Zahlen sind als Dezimalzahlen anzugeben!
zurück
Wie teste ich einen Befehlssatz?
Dazu im oberen Textfeld VAR testvar, 1, 1 eingeben und in eine Sprache
übersetzen. Es erscheint ein kleines Fenster, hier kann alles gewählt werden.
Wird nun ein Programm erzeugt und in einem neuen Bereich des Editors angezeigt, ohne das im unteren Textfeld
des Ursprungsprogramms VAR testvar, 1, 1 ein Meldung erscheint, so können Variablen mit dem
gewählten Befehlssatz benutzt werden. Ansonsten sollte die Fehlermeldung besagen, dass dies nicht
möglich ist.
zurück
Wie übersetze ich einen Befehlssatz?
Mit dem Menü Übersetzung kann zu jedem Zeitpunkt ein Übersetzungsversuch
unternommen werden. Dazu kann die Zielsprache ausgewählt werden, anschließend muss
noch die Art der Übersetzung angegeben werden. Die Übersetzung kann zu Simulations- und
Debugzwecken nur bis zur Auflösung von Makros, zur Ersetzung von Variablen oder bis zur Berechnung von
Zeilenmarken ausgeführt werden. Die ganze Übersetzung steht natürlich auch zur Verfügung.
Bei jedem Vorgang wird bei Erfolg ein neues Textfeld erzeugt, in dem die Übersetzung angezeigt wird.
Sollten Fehler auftreten, so werden diese im Fehlerbereich des ursprünglichen Textes angezeigt.
zurück
Was sind Variablen?
Variablen werden als Adresse benutzt, d.h. sie dürfen nur dort eingesetzt werden, wo auch eine Adresse
erlaubt ist.
Alle Variablendeklarationen müssen vor den anderen Befehlen im
Programm Stehen!
zurück
Was sind Konstanten?
Konstanten können mit Const Name, Zahl eingerichtet werden, die im Format Zahl im
Programmverlauf verwendet werden . Sie stellen nur textuelle Ersetzungen dar.
Alle Konstantendeklarationen müssen vor den anderen Befehlen im
Programm stehen!
zurück
Was sind Marken?
Marken sind Markierungen für einzelne Befehlszeilen, die dem Befehlsnamen vorangestellt und durch einen
: abgetrennt werden. Für jede Zeile ist eine Marke erlaubt. Einer markierten Zeile kann
ein Kommentar angefügt werden.
zurück
Was bietet das Menü Datei?
Es enthät die folgenden Punkte für den Umgang mit Dateien
- Neu: Erstellt eine neue Datei, es muss eine Befehlssatz-Datei angegeben werden
- Neue Textdatei: Eine leere Textdatei kann editiert werden
- Öffnen: Eine Datei wird in den Editor geladen. Sollte es sich um ein Assembler-Programm
im Sinne der Spezifikation handeln, wird der Text als Programm behandelt. Insbesondere wird dann der
zugehörige Befehlssatz geladen. Sollte die Datei keinem Programm entsprechen oder der zugehörige
Befehlssatz nicht gefunden werden, wird die Datei wie reiner Text behandelt
- Speichern: Speichert das Programm unter dem Namen, der in der im zugehörigen Register
angezeigt wird. Ist die Datei ein Assembler-Programm, so wird im XML-Format abgespeichert, sonst als
reiner Text
- Speichern unter: Wie 'Speichern', der Name, unter dem gespichert wird, muss vom Benutzer
gewählt werden
- Export als Textdatei: Ein Assembler-Programm kann auch als reiner Text abgespeichert werden.
Dabei wird nur der sichbare Editorinhalt textuell in eine Datei geschrieben. Damit wird das automatische
Speichern als XML-Datei umgangen werden
- Schließen: Schließt das aktuell editierbare Textfenster (eventuelle Änderungen
werden nicht berücksichtigt)
- Beenden: Beendet den Editor (eventuelle Änderungen werden nicht berücksichtigt)
zurück
Was bietet das Menü Tools?
Dieses Menü bietet eine Reihe von nützlichen Hilfsmitteln
- Rechner: Wegen der Einschränkung auf Dezimalzahlen im Editor können hier
Zahlensystem umgerechnet werden. Gibt man eine Zahl im rechts daneben angegebenen Format
(ohne Bezeichner wie h oder 0x) in ein Textfeld ein, so wird bei Druck des Knopfes
mit dem Format die eingegebene Zahl in alle anderen Systeme umgerechnet und in den betreffenden
Zeilen dargestellt. Es sind nur Ganzzahlen >= 0 erlaubt, bei Fehlern im Format erscheint ein ?
im Textfeld. Die Dezimalzahl im oberen Feld kann mit Einfuegen in das aktuelle Programm an der
Cursorposition eingefügt werden
- Befehlssatz anzeigen: Das Fenster mit der Befehlssatzanzeige wird geöffnet. Der
Befehlssatz zum gerade bearbeiteten Assembler-Programm wird hier angezeigt. Die Anzeige ist baumartig,
zu jedem Befehl sind die erlaubten Parameter explizit abrufbar. Eine Editierung des Satzes ist an diesem
Punkt nicht möglich
- Befehlssatz wählen: Einem Programm kann ein (neuer) Befehlssatz zugeordnet werden.
Dazu wird der Benutzer aufgefordert, die Befehlssatz-Datei zu wählen
- Befehlssatz löschen: Dem aktuellen Programm kann der Befehlssatz entzogen werden.
Damit wird es vom Editor wie ein ganz normaler Text behandelt und demnach auch als reiner Text
abgespeichert (d.h. nicht im XML-Format eines Assembler-Programms)
- Export als RAM-Datei: Ein Binärprogramm, d.h. jedes Zeichen ist entweder 0, 1 oder
ein Zeilenumbruch, kann in eine externe RAM-Datei exportiert werden. Dazu muss dem Editor ein RAM-Objekt
bekannt sein. Sollte dies nicht der Fall sein, wird ohne Meldung abgebrochen. Sollte die zu
exportierende Datei nicht den oben genannten Kriterien entsprechen, wird mit einer Fehlermeldung
abgebrochen. Ist der Export möglich, muss vom Benutzer noch der Name der Zieldatei angegeben
werden.
zurück
Welche anderen Menüs bietet asmedric?
- Bearbeiten: Das Kopieren, Einfügen, Ausschneiden von Text sowie das
Suchen nach Textpassagen und auch Ersetzen bestimmter, markierter Passagen kann hier abgerufen
und ausgeführt werden.
- Konvertieren: Hier befindet sich die Liste der Übersetzungen, die
für das aktuell editierbare Assembler-Programm möglich sind
- Schrift: Die Schriftgröße kann z.B. für Präsentationen
angepasst werden
- Hilfe: Startet eine Hilfeseite.
zurück
Welche Register sind verfügbar?
Der Editor erkennt acht verschiedene Register, die Namen sind dem RISC-Befehlssatz angepasst. Eine
Umbenennung der Register ist nicht möglich, d.h. auch beim Programmieren für andere
Maschinentypen müssen diese Bezeichnungen benutzt werden. Intern werden die Register aber mit
Zahlen von 0 bis 7 identifiziert, so dass ein Zuordnung möglich ist.
Name im Editor |
Interne Nummer
|
Z.B. in Mikrocode |
NULLR |
0 |
R0 |
PC |
1 |
R1 |
S1 |
2 |
R2 |
S2 |
3 |
R3 |
S3 |
4 |
R4 |
T1 |
5 |
R5 |
LO |
6 |
R6 |
HI |
7 |
R7 |
Bei Registern kommt es nicht auf Groß- und Kleinschreibung an!
zurück
Was sind sensitive Makros?
In einer externen Datei kann zu einem Befehlssatz ein Makrosatz definiert werden. Die Makros bestehen
gültigen Befehlen des betreffenden Befehlssatzes. Insbesondere bedeutet das, dass Makros nicht aus
anderen Makros aufgebaut sein dürfen. Die Makros dürfen sogenannte Makrovariablen benutzen,
Diese sind von der Form ?x wobei x>=0 eine Ganze Zahl ist.
Ex: ?0, ?1 sind Variablen, ?-2, ?a, ?1.3 nicht
Beim Ersetzen von Makros im Programm werden diese Variablen durch die Parameter des Makros ersetzt.
Überall, wo im Makro ?0 vorkommt, wird der erste Parameter des Makros eingesetzt, für ?1 jeweils
der zweite etc. Will man ein solches Makros mit Variablen benutzen, so ist darauf zu achten, dass mindestens
die vorkommenden Makrovariablen mit Werten belegt werden können.
Ex:
Sei der Makro MAKRO gegeben mit ADD ?0, 10,
d.h. schreibt man MAKRO im Programntext, so soll etwa der erste Parameter dieser Zeile um 100 erhöht
werden (dies kann aber nur eine Interpretation des ADD-Befehls sein).
So wäre MAKRO S1 (ein Register) eine Möglichkeit, diesen Makro zu benutzen. Dabei muss vorausgesetzt
werden, dass es im Befehlssatz einen Befehl ADD gibt, der als ersten Parameter ein Register und als zweiten
eine Zahl erwartet, denn Makros dürfen nur aus Befehlen des zugehörigen Befehlssatzes bestehen.
Der Aufruf MAKRO (ohne Parameter) führt zu einer Fehlermeldung, da die Variable ?0 nicht belegt werden
kann.
Der Aufruf MAKRO S2, S3 ist erlaubt, denn alle Variablen (nur ?0) können belegt werden, weitergehende
Parameter werden ignoriert.
zurück
Anmerkungen und Erweiterungen
- VAR und VARSTART sind die voreingestellten Namen für diese Befehle, die in SteuerSatz.xml
definiert sind. Diese Datei kann auch überschrieben werden, um diesen Befehlen andere Namen zu
geben.
- Zur Unterstützung von Variablen muss in derBefehlssatz-Datei ein Befehl eine spezielle
Übersetzung in die Sprach Steuer haben, die den Code VariablenBelegung hat.
Dieser Befehl muss das Format Name, Speicheradresse, Zahl haben. Der Übersetzer ersetzt die
Variablendeklaration durch diesen Befehl. Dazu sollte der Befehl natürlich die Zahl unter der
angegebenen Adresse speichern
zurück