![]() |
![]() |
Startseite News   NDR-NKC ![]() ![]() ![]() NKC Emulator Z80 Section ![]() ![]() ![]() 68000 Section ![]() ![]() ![]() ![]() ![]() 8088 Section ![]() ![]() Bussysteme Stromversorgung Input / Output Grafikkarten Speicherkarten Massenspeicher Weitere Baugruppen Projekte Dokumentation Datenblätter Glossar Portraits Links Impressum |
Der ÜbersetzungsvorgangDa 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.
Auf den Originaldisketten enthalten diese 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.
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 zu übersetzen, dann reduziert sich der Vorgang auf die Eingabe der Kommandozeile#include "stdio.h" main() { printf("Hallo Welt"); } 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. Submit-DateienDie 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.SUBDient 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.SUBZuerst 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 Letztendlich 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 LO68 -S -U_NOFLOAT -O $1.68K S.O $2.O $3.O $4.O CLIB Zum Abschluss wird die vom Assembler erzeugte Objekt-Datei gelöscht. ERA $1.O 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.SUBDient zur Übersetzung von Programmen, die Fließkomma-Arithmetik verwenden. Jede Verwendung der Datentypen float oder double und viele Funktionen erfordern die Einbindung der Bibliothek LIBF.A Der Ablauf ist grundsätzlich ähnlich dem bei der Datei C.SUB, daher hier nur die Darstellung des kompletten Inhalts der Submit-Datei ohne weitere Beschreibung. 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.68K S.O $1.O $2.O $3.O $4.O CLIB LIBF.A ERA $1.O CE.SUBCP68 $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.68K S.O $1.O $2.O $3.O $4.O CLIB LIBE.A ERA $1.O 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.
|