ndr-nkc.de ndr-nbc.de
  
Startseite
News
 
NDR-NKC
Geräte Z80
Geräte 68000
Geräte 8088
 
NKC Emulator
 
Z80 Section
Baugruppen
ROM's
Software
68000 Section
Baugruppen
ROM's
PASCAL/S
Software
CP/M 68K
8088 Section
Baugruppen
Downloads
 
Bussysteme
Stromversorgung
Input / Output
Grafikkarten
Speicherkarten
Massenspeicher
Weitere Baugruppen
 
Projekte
 
Dokumentation
Datenblätter
Glossar
Portraits
Links

Impressum

 

Der CP/M-68K C-Compiler

Der C-Compiler besteht mehreren getrennten Teil-Programmen, die nacheinander mit den korrekten Parametern ablaufen müssen. Außerdem sind zusätzlich noch der Assembler und Linker notwendig, um unter CP/M-68K ablauffähige Programme erzeugen zu können.

  • CP68 - Präprozessor
  • C068 - Parser
  • C168 - Codegenerator
  • AS68 - Assembler
  • LO68 - Linker

Nachfolgend wird die Funktion aller Programme und einige der wichtigsten Optionen bei deren Aufruf beschrieben.

Präprozessor CP68.68K

Der Präprozessor erzeugt aus dem angegebenen Quelltext eine temporäre Datei in der alle mit #include und #define definierten Referenzen aufgelöst sind.

CP68 [-C] [-P] [-E] [-D] [-I d:] [-6] [-7] [-3] quelle [ziel]
CP68 hello.c hello.i
Parameter Funktion
quelle Name der Datei, die den Quelltext des C-Programms enthält
zum Beispiel HELLO.C
ziel Name der Zieldatei für die Ausgabe des Präprozessors.
Wenn kein Dateiname als Ziel angegeben wird, erhält die Ausgabedatei Automatsch den Namen der Quelldatei mit der Endung I. zum Beispiel HELLO.I
-I Laufwerk Laufwerk, von dem alle mit #include angegebenen gesucht werden.
-I 0: bezieht sich auf das aktuelle Laufwerk. Andere Laufwerke können numerisch (1 bis15) oder mit Laufwerksbuchstaben (A bis P) angegeben werden.
-C Die vom Präprozessor erzeugte Ausgabe wird während des Ablaufs auf der Konsole ausgegeben.
-P Entfernt alle Zeilennummern aus der Ausgabedatei.


Parser C068.68K

Der Parser verarbeitet diese vom Präprozessor erstellte temporäre Datei. Dabei erzeugt der Parser maximal drei weitere temporäre Dateien mit den Endungen .LI (Link Informationen) .IC (temporäre Code-Datei) und .ST (Konstanten und Strings).

C068 source link icode strings [-e|-f] [-w] [-T]
C068 hello.i hello.li hello.ic hello.st -f

Codegenerator C168.68k

Der Codegenerator verarbeitet die die von C068.68K erzeugten temporären Dateien und erstellt den finalen Quelltext, der mit dem Assembler AS68.68K in den vom Mikroprozessor 68000 ausführbaren Code übersetzt werden kann.

C168 icode link asm [-Tav]
C168 hello.li hello.ic hello.s

Hiermit ist die Arbeit des C-Compilers beendet und das aus dem C-Quelltext generierte Assembler-Programm kann übersetzt werden. Alle bisher erzeugten temporären Dateien sind jetzt nicht mehr notwendig und können gelöscht werden.

Assembler AS68.68K

Der Assembler erzeugt aus dem lesbaren Quelltext eine Objekt-Datei, die dann vom Linker verarbeitet werden kann. Nach dem Erstellen der Objekt-Datei ist der Assembler-Quelltext nicht mehr notwendig, er kann aber zu Informationszwecken gespeichert bleiben.

AS68 [-T] [-P] [-U] [-L] [-N] [-S d:] [-F d:] source [output]
AS68 -l -u hello.s
Parameter Funktion
source Name der Text-Datei, die den Assembler-Quelltext enthält.
Normalerweise haben Quelltexte die Endung .S
output Name der zu erzeugenden Objektdatei.
Ohne Angabe wird der Name der Quelldatei mit der Endung .S verwendet.
-L Bewirkt, dass alle Konstanten von Adressen als Langworte definiert werden.
Diese Option sollte genutzt werden, wenn die ausführbare Datei den Umfang von 64 kByte übersteigt.
-U Bewirkt, dass nicht definierte Symbole als globale Symbole betrachtet werden.
Diese Symbole können durch andere Objektdateien während des Linkens beigesteuert werden.
-P Gibt das Assembler-Listing während des Übersetzens auf dem Bildschirm aus.
Um dies sinnvoll verwenden zu können sollte man die Ausgabe in eine Datei umlenken. >TEST.LST.


Linker LO68.68K

Der Linker kombiniert die zum gesamten Programm gehörenden Objekt-Dateien zu einem insgesamt ausführbaren Programm.

LO68 [-R] [-S] [-F d:] [-u option] [-o output] s.o object [object …] clib [libf.a]
LO68 -s -o hello.68k s.o hello.o clib
LO68 -r -o hello.rel s.o hello.o clib
Parameter Funktion
-R Bestimmt, dass das ausführbare Programm verschiebbar sein soll.
Normalerweise ist dann die Dateiendung .REL anstelle von .68K zu verwenden.
-S Entfernt die Symboltabelle und die Informationen für verschiebbare Dateien.
Die Dateigröße der erzeugten ausführbaren Datei wird verringert, ist aber nicht mehr verschiebbar.
-F Laufwerk Legt das zu nutzende Laufwerk für temporäre Dateien fest.
-F 0: bezeichnet das aktuelle Laufwerk. Bezeichner können numerisch (1-15) oder als Laufwerks-Buchstabe (A-P) angegeben werden.
-U option Dient zum Entfernen von Teilen der C-Bibliothek.
zum Beispiel -U_NOFLOAT oder -U_NOLONG. Dazu gibt es einen eigenen Beitrag.
-O output Bestimmt den Namen der zu erzeugenden ausführbaren Datei.
zum Beispiel HELLO.68K oder HELLO.REL
S.O Einbinden der Standard-Startroutine für C-Programme.
Diese Datei muss immer als erste der Objekt-Dateien eingebunden werden.
CLIB Die Standard C-Bibliothek muss bei jedem Linken eingebunden werden.
Weitere Objekt-Dateien werden unmittelbar vor CLIB angegeben falls notwendig.
LIBF.A Einbinden der Fließkomma-Arithmetik-Routinen.
Nur notwendig, wenn Programme die Datentypen float oder double benutzen.


Automatisierung der Übersetzung

Der korrekte Aufruf aller Programme kann am besten mit Submit-Dateien gesteuert werden, die im folgenden Beitrag beschrieben werden.

Weiter zu Teil 4 der Serie: Der Übersetungsvorgang

Zurück zu Teil 2 der Serie: Die Entwicklungsumgebung