next up previous
Nächste Seite: Der M2Amiga-Assembler Aufwärts: Bedeutung der Optionen Vorherige Seite: Bedeutung der Optionen

Optionen der Kommandozeile

Nun folgen die Optionen, die nur von der Kommandozeile beeinflussbar sind und bei der bedingten Compilation nicht benutzt werden können, weil kein Name für sie definiert ist. Wir stellen sie in folgender Form dar:

Zweck, Buchstabe, Vorgabewert

Debug-Info, d, TRUE

Wenn von der Kommandozeile oder in ,,ENV:m2c``2.15 die Option ,,-d`` angegeben wird, bedeutet dies: ,,kein Debugger``. Für den Compiler heisst das:

  1. Es wird keine ,,.ref``-Datei, also keine Referenzdatei für den Debugger erzeugt und
  2. der Code wird so weit wie möglich optimiert. Hierbei werden unnötige Dinge gelöscht, die sonst unter Umständen als NOP-Anweisungen2.16im Code erscheinen, Sprünge wenn immer möglich umgeleitet, gelöscht oder verkürzt.

Diese Optimierung wird jeweils einzeln für jede globale Prozedur, jedes zum Hauptmodul lokale Modul und für das Hauptmodul ausgeführt. Der Compiler gibt zu Beginn jeder Optimierung ein ,,o`` auf dem Bildschirm aus. Bei grossen Prozeduren (ab etwa 6kByte) wird dadurch eine geringfügige Verzögerung bemerkbar, ansonsten geht es sehr schnell. Am Schluss meldet der Compiler, wieviel Code er durch die Optimierung eingespart hat.

Referenz-Datei, @, n.a.

Die Option ,,@`` bewirkt bei der Einstellung ,,+@``:

Die so erzeugte Referenzdatei ist allerdings nur vom Profiler und vom Library-Linker zu benutzen. Für den Debugger ist diese Referenz-Datei unbrauchbar!

Mit der Option ,,-@`` wird

Diese Form macht dann Sinn, wenn eine schnelle Compilation gewünscht wird, da Aufwand für Optimierung und Erstellen zusätzlicher Dateien wegfallen.

Im Überblick bewirken die zwei Optionen ,,d`` und ,,@`` folgendes:

  Mit Referenz Ohne Referenz
Ohne Optimierung +d -@
Mit Optimierung +@ -d

Ikonen-Erzeugung, i, CLI: FALSE, Workbench: TRUE

Ist diese Option eingeschaltet, erzeugt der Compiler für die Symbol-, Objekt- und Referenz-Dateien Workbench-Ikonen. Der Standardwert wird beim Start des Compilers vom CLI auf FALSE, beim Start von der Workbench auf TRUE gesetzt. Wenn Sie auch beim CLI-Start Ikonen wünschen, geben Sie die Option ,,+i`` an. Ein Löschen der Option mit ,,-i`` bei der Workbench-Arbeit macht wenig Sinn, da Sie dann Ihre erzeugten Dateien nur eingeschränkt sehen können2.17.

Meldungen, q, TRUE

Nach der Eingabe ,,-q`` unterlässt der Compiler sämtliche Meldungen über geladene Dateien oder Statistiken auf dem Bildschirm. Im Fehlerfall geht der Compiler auch nicht in den interaktiven Modus. So lässt sich der Compiler auch in Batch-Dateien problemlos verwenden.

Warnungen, w, TRUE

Warnungen sind Fehlermeldungen, die der Compiler erzeugt, wenn er während der Compilation auf Compiler-Optionen in der alten (bis M2Amiga Version 3.3) Syntax trifft (Ein Dollar-Zeichen, gefolgt von einem Buchstaben, gefolgt von ,,+``, ,,-`` oder ,,=`` innerhalb eines Kommentars).

Als Hilfe für die Umstellung älterer Quelltexte oder bei der Portierung von fremden Systemen ist dies sicherlich sehr nützlich, da so keine ,,alte`` Option übersehen werden kann.

Durch die Angabe ,,-w`` werden Warnungen unterdrückt.


\begin{note}
Warnungen k\uml {o}nnen auch auftreten, wenn ein ASSEMBLE-Teil mit
...
...en
auskommentiert wurde, da diese ebenfalls mit ,,{\tt\$}\lq\lq  beginnen!
\end{note}

Profiler, p, FALSE

Nach der Angabe ,,+p`` erzeugt der Compiler Code, der zur Benutzung des Profilers nötig ist. Der Code ist dann aber nur mit dem Profiler lauffähig! Auf jeden Fall wird dann eine Referenzdatei erzeugt, unabhängig vom Setzen der Optionen ,,d`` und ,,@``. Eine Optimierung wird wie verlangt durchgeführt.

Verzeichniswechsel, g

Durch die Angabe ,,-gDirectory`` setzt der Compiler das aktuelle Verzeichnis auf ,,Directory``. Die Option ,,-g`` allein wechselt zurück in das Startverzeichnis. Mit Hilfe dieser Option kann man sich interaktiv -- sogar schon von der Kommandozeile aus -- durch mehrere Projekte bewegen. Dies ist wichtig, damit die erzeugten Dateien im richtigen Projekt abgelegt werden. Die Compilation von ,,my:txt/Demo.mod`` findet zwar den Text, legt aber die Objekt-Datei im aktuellen Projekt ab. Weitere Hinweise finden sich in 2.2 auf Seite [*].

Benutzerdefinierte Optionen, o

Von der Kommandozeile sind benutzerdefinierte Optionen mittels den Optionen ,,-oName`` oder ,,+oName`` zu setzen. Die Deklaration erfolgt im Programmtext mit der Anweisung ,,DEFINE Name:=Wert``. Die benutzerdefinierten Optionen haben keine direkte Wirkung auf den erzeugten Code, sondern dienen nur als Hilfsmittel für die bedingte Compilation.

Zieldatei, t

Im Zusammenhang mit der bedingten Compilation kann es sinnvoll sein, eine eigene Objektdatei zu erzeugen. Die Option ,,-tZieldatei`` -- Zieldatei darf keinen Pfad enthalten -- legt lediglich den Dateinamen fest, der vom Compiler je nach gewählter CPU und dem Vorhandensein eines obj-Verzeichnisses vervollständigt wird. Der in der Objektdatei abgelegte Modulname wird hierdurch nicht verändert. Die so erzeugten Dateien können beim Linkvorgang mit den Optionen ,,-a`` oder ,,-lDateiname`` angegeben und an Stelle der vorgegebenen Dateien geladen werden.

Die folgenden Tabellen geben eine Übersicht aller Optionen. Dabei bezeichnet ,,Name`` die im Quelltext von Compiler-Anweisungen benutzbaren Optionen. Tabelle 2.3 gibt die allgemein verwendbaren Optionen an. In Tabelle 2.4 sind die von der Kommandozeile beeinflussbaren und prozessorwählenden Optionen beschrieben. Namen in Klammern dienen lediglich der Erklärung und sind im Quelltext nicht definiert.

Eine Sonderstellung nehmen schliesslich die Optionen der Prozessoren ein. Sie sind nur von der Kommandozeile beeinflussbar und werden nach der Systematik gemäss Tabelle 2.5 gesetzt.


Tabelle 2.3: allgemeine Compiler-Optionen
Name Kommando Typ Vorgabe
StackChk s stapelbar pro Prozedur TRUE
RangeChk r stapelbar TRUE
OverflowChk v stapelbar TRUE
NilChk n stapelbar TRUE
EntryClear e stapelbar TRUE
CaseChk c stapelbar TRUE
ReturnChk f stapelbar TRUE
LongAlign l stapelbar TRUE
Volatile h stapelbar TRUE
LargeVars y pro Modul TRUE
StackParms z stapelbar TRUE
Joker j stapelbar TRUE
benutzerdefinert oName stapelbar --
EntryExitCode -- bereichsbezogen TRUE
CopyDyn -- bereichsbezogen TRUE
ParDealloc -- bereichsbezogen TRUE
LoadA4 -- bereichsbezogen FALSE
SaveA4 -- bereichsbezogen FALSE
Implementation -- pro Def-Modul TRUE
NameChk -- pro Modul TRUE
ChipBSS -- pro Modul FALSE
ChipDATA -- pro Modul FALSE
ChipCODE -- pro Modul FALSE
CStrings -- stapelbar TRUE



Tabelle: Compiler-Optionen der Kommandozeile und für Prozessorwahl
(Debug) d pro Modul TRUE
(Ref) @ pro Modul --
(Meldungen) q pro Modul TRUE
(Ikonen) i pro Modul TRUE
(Warnungen) w pro Modul TRUE
(Profiler) p pro Modul FALSE
(Verzeichnis) gDirectory -- --
(Zieldatei) tTargetName pro Modul Modulname
MC68000 0 pro Modul TRUE
MC68010 1 pro Modul FALSE
MC68020 2 pro Modul FALSE
MC68030 3 pro Modul FALSE
MC68040 4 pro Modul FALSE
MC68881 8 pro Modul FALSE



Tabelle 2.5: Systematik der Prozessoroptionen
Ziffer MC68010 MC68020 MC68030 MC68040 MC68881
0 FALSE FALSE FALSE FALSE FALSE
1 TRUE FALSE FALSE FALSE FALSE
2 TRUE TRUE FALSE FALSE FALSE
3 TRUE TRUE TRUE FALSE FALSE
4 TRUE TRUE FALSE TRUE TRUE
8 TRUE TRUE TRUE FALSE TRUE



next up previous
Nächste Seite: Der M2Amiga-Assembler Aufwärts: Bedeutung der Optionen Vorherige Seite: Bedeutung der Optionen
Claudio Nieder 2000-11-12