Metacomco Makro-Assembler

Assembler auf dem Prüfstand: Der Metacomco-Makro-Assembler

Wer sich mit einem Computer näher beschäftigt und auch die internen Abläufe besser verstehen will, wird nicht darum herum kommen, Assembler zu lernen. Systemnahe BIOS- und Grafik-Routinen eines Computers werden meist in Assembler programmiert. Auch Steuer-Aufgaben sowie andere, hohe Geschwindigkeit erfordernde Probleme lassen sich nur so lösen. Wenn Sie also selbst Programme in der Sprache des Prozessors schreiben wollen, brauchen Sie einen Assembler wie z. B. diesen von Metacomco.

Die hier getestete V10.204 des Programms wird auf einer einseitigen, prall gefüllten Diskette samt umfangreicher Dokumentation geliefert. Um die über 200 KByte Quelltext zusammen mit den Programmen unterzubringen, wurden sie komprimiert, und zum Anschauen müssen sie mit einem Hilfs-Programm "ausgepackt" werden.

Der Shell: "Menu + "

Unter den Assembler- und Compilerherstellern scheint es zur Mode geworden zu sein, die Programmpakete mit einem GEM-Shell auszurüsten. Dabei handelt es sich um ein Programm, das es ermöglicht, aus einer GEM-Menüzeile die diversen Bestandteile des Entwicklungspaketes mit der Maus aufzurufen, und das die richtige Parameterübergabe sicherstellt.

Auch im Metacomco-Assembler-Entwicklungspaket ist ein solches Programm namens "Menu + " (Bild 1) enthalten. Interessant an diesem Programm ist, daß die letzten 50 Programmaufrufe in einem Fenster dokumentiert werden und zur wiederholten Ausführung dort einfach anklickbar sind. Positiv fiel auch Menü + s freie Konfigurierbarkeit auf, d. h. es können beliebige Programme integriert werden. Wenn Sie außer in Assembler auch in 'C' programmieren, kann z. B. der Compiler-Aufruf in das "Tools"-Menü eingebunden werden.

Einziger Schwachpunkt des Programms: der Desktop-Hintergrund wird nicht immer richtig aufgebaut. Ruft man z. B. 1st__Word auf und kehrt in Menu+ zurück, so wird der Hintergrund vom 1st__Word übernommen (Zeichentabelle von 1st_Word usw.).

Der Bildschirm-Editor

Beim Editor kann man geteilter Meinung sein. Einige werden diesen Editor unter TOS für nicht mehr zeitgemäß halten, andere schwören auf schnelle Befehlseingabe über die Tastatur, denn die Befehlsauswahl ist wahrlich groß.

Über die Funktionstasten oder mit Control sind 21 Funktionen erreichbar. Weitere 38 Kommandos kann man nach dem Drücken von Escape in einer Kommandozeile eingeben. Es finden sich dort auch welche für das Löschen, Suchen/Ersetzen und für Blockoperationen, die allerdings nur auf Zeilengrenzen erfolgen können.

Leider lassen nicht alle Befehle die Geschwindigkeit des Prozessors erkennen. So wird das Einfügen längerer Dateien zur Geduldsprobe, und das Löschen von Blöcken geht genauso schnell (oder langsam) wie per Hand. Nach jeder gelöschten Zeile werden der Bildschirm und der Speicherinhalt gescrollt.

Alle anderen Operationen werden zügig ausgeführt. Unter den Befehlen habe ich nur eine Möglichkeit, ein versehentlich eingegebenes Return zu entfernen, vermißt.

Wer auf GEM-Fenster usw. nicht verzichten will, dem bleibt ja immer noch die Möglichkeit, statt dieses Editors z. B. 1st__Word in Menu+ einzubinden.

Der Makro-Assembler

Nun zum wichtigsten Bestandteil: dem Makro-Assembler, der zahlreiche (40) Pseudo-Opcodes und lokale Labels unterstützt. Unter "Pseudo-Ops" versteht man Anweisungen an den Assembler, die im Quellisting enthalten sind. Dadurch wird z. B. bedingte Assemblierung ermöglicht.

Mit den Pseudo-Ops lassen sich auch Makros definieren. Unter einem Makro versteht man ein Stück Quelltext, das durch Angabe seines Namens vom Assembler vor dem eigentlichen Asse mbliervorgang in den Text eingefügt wird. Ein Beispiel mit einem Line A-Befehl zum Punktesetzen soll dies verdeutlichen:

Dieses Makro kann nun überall in den Text eingefügt werden. Wenn man jetzt schreibt "aputpix #20,#10", so wird der Text aus der Makrodefinition in den Quelltext eingefügt. " l" und " 2" werden durch #20 und #10 ersetzt. Als Parameter an ein Makro sind nicht nur Zahlen, sondern auch Strings möglich, für die dann z. B. im Makro Speicher reserviert wird.

Die einstellbaren Optionen des Assemblers sind recht vielfältig: In der Kommandozeile kann man angeben, ob man eine Fehlerdatei/ein Programmlisting wünscht. Selbst eine Header-Datei kann per Befehl von dort eingebunden werden. Was aber besonders interessant ist, ist die Fähigkeit des Assemblers, Objektdateien sowohl im GST als auch im DRI-Format zu erstellen. Somit kann der Assembler auch zusammen mit dem Atari-Entwicklungspaket eingesetzt werden.

Bei der Assemblergeschwindigkeit werden keine Rekorde erzielt. Für die Assemblierung des beigefügten Debuggers wurden die folgenden Zeiten ermittelt (ohne Laden des Assemblers):

  Diskette RAM-Disk
mit Komment. (1180 Zeilen / 45 KByte Quelltext) 84 s 45 s
ohne Komm. (780 Zeilen / 19 KByte Quelltext) 49 s 29 s

Im Vergleich fällt bei der zweiten Zeit, wo das gleiche Programm nach der Entfernung der Kommentare assembliert wurde, auf, daß der Assembler auch für Kommentare recht lange braucht. Für normale Programme ergibt sich ein Durchsatz von nur ca. 15 Zeilen/S (25 auf der RAM-Disk). Negativ fiel mir außerdem auf, daß keine automatische Optimierung von Sprungoder anderen Befehlen unterstützt wird.

Der Linker und die Bibliothek

Als Linker findet man bei Metacomco den GST-Linker vor. Dieser Linker besticht durch die Vielzahl seiner Optionen. Er dient gleichzeitig auch der Bibliotheksverwaltung.

Zu dem Linker erhält man eine komplette GEM-Bibliothek, die zudem auch in Form von fast 200 KByte dokumentierter Quelltexte auf der Diskette zu finden ist. Innerhalb der Quelltexte werden alle GEM-Befehle kurz erläutert. Zur Geschwindigkeit möchte ich keine Angaben machen, da Link-Zeiten schlecht vergleichbar sind. Ich würde die Geschwindigkeit als "durchschnittlich" einstufen.

Ein Debugger als Quelltext

Einen Debugger in Form eines ausführlich dokumentierten Quelltextes beizufügen, ist eine gute Idee. Dem Programmierer werden nicht nur nützliche Anregungen im Quelltext gegeben, nach dem Assemblieren hat man zudem ein gutes Hilfsmittel zum Austesten der eigenen Programme. Der Debugger bietet Möglichkeiten für Einzelschrittablauf des Programmes (Trace) mit Breakpoints, zum Verändern und Anzeigen der Prozessorregister und des Speicherinhaltes.

Die Dokumentation

Hier hat Metacomco beispielhafte Arbeit geleistet. Die gut gegliederte, 130 Seiten umfassende Dokumentation in Englisch enthält alle Informationen, die zur Bedienung des Programms erforderlich sind. Dabei wurden auch Beispiele nicht vergessen. Nur bei der Beschreibung der Makrobefehle hat man leider darauf verzichtet. Gerade für Anfänger wäre hier eine nähere Erläuterung interessant gewesen.

Zusammenfassung

Mit diesem Makro-Assembler bietet Metacomco ein recht ausgereiftes Softwareprodukt mit enormen Fähigkeiten. Gerade Assembler und Linker bieten eine Vielzahl von Optionen, überzeugen jedoch nicht durch ihre Geschwindigkeit. Wen die Geschwindigkeit und die in Englisch gehaltene Dokumentation sowie der unter TOS arbeitende Editor nicht stören, oder wer einen anderen Editor einsetzt, kann mit dem Programm voll zufrieden sein.

putpix    EQU   $aOOl    ;Rechteck
aputpix   MACRO          ;Makroanfang
          MOVE  1,xl(a0) ;X-Koordinate
          MOVE  2,yl(a0) ;Y-Koordinate
          DC.W  putpix   ;
          ENDM           ;Makroende

Jörg Wilhelm
Aus: ST-Computer 10 / 1986, Seite 65

Links

Copyright-Bestimmungen: siehe Über diese Seite