assem: Ein konfigurierbarer Assembler
assem ist ein Assembler, der durch einfache Aenderungen auf
verschiedenste Maschinensprachen umgestellt werden kann.
Kopieren des Sources:
Stellen Sie Ihren WWW-Browser auf "Save to local disk" und klicken
Sie dann hier.
Anpassung an eine Machinensprache:
- Aenderungen im File "scan.lex"
Hier werden die Tokens definiert, die der Scanner
liefern soll. Als einzige Aenderung muss in diesem
File fuer jeden Befehl eine Zeile der Art
befehl return xxbefehl;
einfuegen.
- Aenderungen im File "tokens.h"
Hier muss nun fuer jedes xxbefehl ein Define erzeugt werden.
- Aenderungen im File "command.h"
In diesem File werden die einzelnen Maschinenbefehle naeher
spezifiziert. Dazu muss die Tabelle ComTab erzeugt werden.
Was da zu tun ist, ist in dem File selbst kurz erlaeutert.
- Aenderungen im File "assem.c"
Hier muessen zwei Funktionen komplett geschrieben werden.
Das ist einmal DoCommand(). Diese Funktion bekommt immer
einen Befehl mit Argumenten und muss dafuer die Mascinen-
Representation ausgeben. Da dies von Prozessor zu Prozessor
sehr unterschiedlich sein kann, muss man das komplett
selbst machen.
Die zweite Funktion ist ReadData(). Diese wird nur benoetigt,
wenn man mittels ".data" Daten direkt in das Programm ablegen
moechte.
Die Adressierungsarten, die der Assembler versteht:
- Direkt Bsp.: R0
- Indirekt Bsp.: (R0)
- Indirekt mit Post-Inkrement Bsp.: (R0)+
- Indirekt mit Pre-Decrement Bsp.: -(R0)
- Absolut Bsp.: $A0
- PC relativ Bsp.: $10(PC)
- Konstante Bsp.: #$20
- Indirekt mit Address-Distanz Bsp.: $FF(R0)
Solange man nur diese 8 Adressierungsarten, die in command.h
definiert werden, benutzt, muss man ansonsten keine Aenderungen
im Source vornehmen.
Wie ein Assembler-File aussehen muss zeigt das Beispiel "test.asm".
Files des Archives:
scan.lex -- Eingabefile fuer den flex (anzupassen)
tokens.h -- Hier werden die Token fuer flex definiert (anzupassen)
command.h -- Hier werden die Maschinenbefehle spezifiziert (anzupassen)
assem.c -- Haupt-C-File (Funktionen DoCommand() und ReadData() zu schreiben)
symtab.h -- Includefile fuer die Symboltabelle
symtab.c -- Symboltabelle
lexinc.h -- Hilfsfunktionen fuer den Scanner
Makefile -- Makefile
test.asm -- Kleines Beispiel Assembler-File
Folien:
GIF-File zum Ansehen.
Postscriptfiles der 4 Folien des Kurzvortrags:
Folie 1
Folie 2
Folie 3
Folie 4
Autor des konfigurierbaren Assemblers:
Georg Heßmann.
Kommentare, Bug-Reports oder aehnliches an
Manfred Grove und
Bernd Schütz.
Zurück zum Projekt "Mikrorechner"
(Letzte Änderung 15.12.98)
Bernd Schütz (schuetz@informatik.uni-hamburg.de)