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:

  1. 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.
  2. Aenderungen im File "tokens.h"
    Hier muss nun fuer jedes xxbefehl ein Define erzeugt werden.
  3. 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.
  4. 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)