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 Übersetzungsvorgang

Da für die Übersetzung des Quelltextes mehrere eigenständige Programme notwendig sind, die in der richtigen Reihenfolge mit passenden Parametern aufgerufen werden müssen, sind Submit-Dateien die beste Wahl, um den Ablauf zu steuern. Es stehen mehrere Submit-Dateien zur Verfügung, mit denen der Vorgang gesteuert werden kann.

Zurück zum Inhaltsverzeichnis der Beiträge

Die richtige Wahl

Für Programme, die ohne Fließkomma-Arithmetik auskommen, sollte C.SUB verwendet werden, da die beiden anderen Submit-Dateien den Umfang der ausführbaren .68K Datei unnötig erhöhen, auch wenn die Fließkomma-Funktionen nicht genutzt werden.

  • C.SUB - Einfache C-Programme ohne Fließkomma-Unterstützung
Bei der Verwendung von Fließkomma-Zahlen kann man zwischen dem sehr schnellen Motorola-Format und dem international standardisierten IEEE-Format wählen. Eine der beiden folgenden Submit-Dateien muss genutzt werden, sobald im C-Programm Operatoren oder Funktionen verwendet werden, welche die Datentypen float oder double erwarten.
  • CF.SUB - Programme mit Verwendung der Motorola Bibliothek LIBF.A
  • CE.SUB - Programme mit Verwendung der IEEE Bibliothek LIBE.A

Auf den Originaldisketten enthalten die obigen Submit-Dateien nicht die Anweisung zum Linken der Objekt-Dateien zu einem ausführbaren Programm. Das Linken mit eventuell weiteren Objekt-Dateien muss durch einen Aufruf einer weiteren Submit-Datei erledigt werden.

  • CLINK.SUB - Linker-Aufruf wie bei C.SUB
  • CLINKF.SUB - Linker-Aufruf mit Motorola Bibliothek LIBF.A
  • CLINKE.SUB - Linker-Aufruf mit IEEE Bibliothek LIBE.A

C-Quelltexte haben üblicherweise die Datei-Endung .C, was von allen Submit-Dateien exakt so erwartet wird. Die Datei-Endung darf beim Aufruf der Submit-Dateien jedoch nicht angegeben werden. Angenommen, es ist ein Programm Namens HELLO.C

#include "stdio.h"
main() {
    printf("Hallo Welt");
}
zu übersetzen, dann reduziert sich der Vorgang auf die Eingabe der Kommandozeile
C HELLO 

Während des Ablaufes der Submit-Datei werden einige temporäre Dateien erstellt, die mit entsprechenden ERA-Kommandos nach deren Nutzung automatisch wieder gelöscht werden. Nach erfolgreicher Ausführung von C.SUB findet sich auf der Diskette neben dem Quelltext HELLO.C eine ausführbare Datei HELLO.68K, vorausgesetzt, dass die Übersetzung fehlerfrei erfolgte. Diese kann wie jedes andere Programm mit der Eingabe von HELLO gestartet werden.

Falls man ein Programm, welches Fließkomma-Arithmektik verwendet, mit C.SUB übersetzt, wird eine ausführbare Datei erzeugt, die jedoch einen Laufzeitfehler der Laufzeit-Bibliothek CLIB hervorruft.

C RTL - program not linked for floating point
Program terminating 

Submit-Dateien

Die Submit-Dateien rufen den C-Compiler, Assembler und Linker in der richtigen Reihenfolge mit entsprechenden Parametern auf. Der C-Compiler besteht aus den Programmen CP68.68K, C068.68K und C168.68K, welche den C-Quelltext in einen Assembler-Quelltext übersetzen. Der Assembler AS68.68K übersetzt den erzeugten Quelltext in eine Objektdatei. Der Linker LO68.68K bindet die durch den Assembler erzeugte Objektdatei mit der bzw. den Laufzeit-Bibliotheken von C und erzeugt ein ausführbares Programm.

C.SUB

Dient zur Übersetzung einfacher Programme ohne Nutzung von Fleißkomma-Arithmetik. Die Submit-Datei kann mit einem C-Quelltext und mit mehreren bereits übersetzten Objektdateien als Parameter aufgerufen werden. Der Linker versucht, die im C-Quelltext nicht definierten Symbole, Funktionen und Methoden mit den in den zusätzlichen Objektdateien definierten Symbolen aufzulösen. Auch die zusätzlichen Objektdateien müssen ohne die Datei-Endung .O angegeben werden.

C quelldatei [objektdatei] [objektdatei] ….

Inhalt der Datei C.SUB

Zuerst wird der Präprozessor gestartet. $1 entspricht dem ersten an die Submit-Datei übergebenen Parameter. Das muss der Name des C-Quelltextes ohne Endung sein.

CP68 -I 0: $1.C $1.I

Danach folgt der Aufruf des Parsers, welcher die Syntax des Quelltextes überprüft.

C068 $1.I $1.1 $1.2 $1.3 -F

Die temporäre Datei mit der Endung .I kann jetzt gelöscht werden.

ERA $1.I

Es folgt der Aufruf des Codegenerators, der den Assembler-Quelltext erzeugt.

C168 $1.1 $1.2 $1.s

Alle vom C-Compiler erzeugten temporären Dateien werden nicht mehr benötigt und mit den folgenden Anweisungen von der Diskette gelöscht.

ERA $1.1
ERA $1.2

Aus dem vom C-Compiler generierten Assembler-Quelltext wird jetzt eine Objekt-Datei für den finalen Linker-Vorgang erzeugt.

AS68 -L -U -S 0: $1.S

Auch der Assembler-Quelltext wird ab jetzt nicht mehr benötigt, kann aber zur Information behalten werden. Dazu kann man die Zeile in der Submit-Datei auskommentieren.

ERA $1.S 

Danach wird der Linker gestartet, der die Objekt-Dateien zu einem ausführbaren Programm zusammensetzt.

LO68 -R -U_NOFLOAT -O $1.REL S.O $2.O $3.O $4.O CLIB

Die vom Assembler erzeugte Objekt-Datei wird jetzt nicht mehr benötigt.

ERA $1.O

Die verschiebbare Datei wird in eine ausführbare Datei für das aktuelle System überführt um die Dateigröße zu verringern.

RELOC $1.REL $1.68K

Die vom Linker erzeugte verschiebbare Datei kann jetzt gelöscht werden.

ERA $1.REL

Damit ist die Submit-Datei beendet und auf der Diskette befindet sich neben dem C-Quelltext nur noch die ausführbare Programmdatei.

Die weiteren Submit-Dateien arbeiten ähnlich, jedoch mit abweichenden Parametern für den Linker. Die genaue Bedeutung der Parameter des Linkers kann der Dokumentation (in englisch) entnommen werden (Download am Ende des Beitrags).

CF.SUB

Dient zur Übersetzung von Programmen, die Fließkomma-Arithmetik verwenden. Jede Verwendung der Datentypen float oder double und viele Funktionen erfordern die Einbindung einer Fließkomma-Bibliothek

CP68 $1.C $1.I
C068 $1.I $1.1 $1.2 $1.3 -F
ERA $1.I
C168 $1.1 $1.2 $1.S
ERA $1.1
ERA $1.2
AS68 -L -U $1.S
ERA $1.S
LO68 -R -O $1.REL S.O $1.O $2.O $3.O $4.O CLIB LIBF.A
ERA $1.O
RELOC $1.REL $1.68K
ERA $1.REL

CE.SUB

Dient zur Übersetzung von Programmen, die Fließkomma-Arithmetik mit dem IEEE Format verwenden. Jede Verwendung der Datentypen float oder double und viele Funktionen erfordern die Einbindung einer Fließkomma-Bibliothek.

CP68 $1.C $1.I
C068 $1.I $1.1 $1.2 $1.3 -E
ERA $1.I
C168 $1.1 $1.2 $1.S
ERA $1.1
ERA $1.2
AS68 -L -U $1.S
ERA $1.S
LO68 -R -O $1.REL S.O $1.O $2.O $3.O $4.O CLIB LIBE.A
ERA $1.O
RELOC $1.REL $1.68K
ERA $1.REL

Um zu analysieren, wie der C-Compiler arbeitet, könnte man die ERA-Anweisungen auskommentieren. Dadurch bleiben die temporären Dateien erhalten und können nach der Übersetzung eingesehen werden. Bei einfachen Programmen kann man aus dem erzeugten Assembler-Quelltext vielleicht einen Ansatz für ein reines Assembler-Programm ableiten, welches viel kleiner ist und weniger Platz auf der Diskette verwendet.

Zurück zum Inhaltsverzeichnis der Beiträge