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 ,,`+@```:

  - Es wird eine ,,`.ref```-Datei erzeugt und
  - der Code wird analog zur obigen Option ,,`-d``` optimiert.

  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

  - keine Referenz-Datei erstellt
  - der Code nicht optimiert

  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.

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

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