HINWEISE ZUM PDC-COMPILER Es versteht sich von selbst, daß die sich auf dieser Diskette befindlichen Public-Domain-C-Compiler nicht an die Leistungen der professionellen C-Compiler (wie z.B. Aztec oder Lattice) heranreichen. Vielmehr sollen Ihnen diese Public-Domain-Versionen ein Hineinschnuppern in die C-Programmierung ermöglichen, ohne gleich dafür eine Menge Geld ausgeben zu müssen. Es folgen anschließend noch einige Tips und Hinweise zum PDC-Compiler: Ich kann Ihnen hier natürlich keinen Einführungskurs in Compilerbau geben, da dieses Thema schon über ganze Bücher hinweg ausgeweitet werden müßte. Vielmehr ist die Eigeniniative eines Amigafreaks und dessen Experi- mentierfreudigkeit gefragt, um den Compiler mit geschickter Programmierung aus seinem "Mauerblümchendasein" herauszuhelfen. Zu diesem Thema kann ich Ihnen folgendes Buch empfehlen: "DAS DRITTE AMIGA PUBLIC DOMAIN BUCH" Verlag technicSupport Preis DM 49,-- ISBN 3-926847-06-9 dort befindet sich ab Seite 282 eine ausführliche deutsche Anleitung zum Pdc-Compiler. DER PDC-COMPILER ================ Wie von vielen PD-Sources gewohnt, wird auch PDC mit einem "makefile" geliefert. Der Vorgang der Einstellung des Compilers selbst wirft so keine unlösbaren Probleme auf. Einer potentiellen Weiterentwicklung steht somit nichts im Wege, wobei für ein solches Projekt fundierte Kenntnisse in C unbedingt erforderlich sind. Es kommt allerdings erleichternd hinzu, daß hier spezielle Kenntnisse über den Amiga ausnahmsweise nicht benötigt werden. Ein schneller Blick über den Sourcecode offenbart nämlich ein in Standard-C gehaltener Programmierstil. Wer C schon von anderen Rechner her kennt, dürfte sich auch hier schnell zurechtfinden. Der PDC-Compiler erlaubt die direkte Übersetzung des C-Quelltextes in ein Assemblerlisting, genauso wie man es unter Aztec gewohnt ist. Mittels "pdc test.c" würde also beispielsweise "test.s" kreiert werden, das man sich dann mit einem Editor anschauen könnte. Der Assembler-Source hält sich an den Metacomco-Standard und kann damit problemlos von jedem Assembler übersetzt werden. PDC besitzt genau zwei Optionen; es läßt sich nur sehr wenig indirekter Einfluß auf das Compilat ausüben. Die Optionen lauten wie folgt: -l: Dem Assembler-Quelltext werden die entsprechenden Zeilen des C-Sources hinzugefügt. Man bekommt so recht schnell eine Vorstellung davon, wie die C-Anweisungen in Maschinencode aussehen. -n: Mit dieser Option wird PDC angewiesen, den Programmcode zu optimieren. Es wird versucht, überflüssige Anweisungen zu entfernen. Beim benötigten A68K-Assembler (Bavarian-Diskette Nr.102) handelt es sich um einen MetaComco-kompatiblen Cross- und Makroassembler, der also auch von reinen Assembler-Programmierern benutzt werden kann. Er ist in seinen Funktionen soweit ausgereift, daß er sich von kommerziellen Produkten nicht so ohne weiteres in den Schatten stellen läßt. Die wenigen Einschränkungen sind so geringfügig, daß sie im normalen Programmierbetrieb fast nicht auf- fallen (es handelt sich hierbei zum Beispiel um fehlende Direktiven, die in bestehenden Assemblerlistings fast nie verwendet werden). "A68K" ist also für die Erstellung von AmigaDOS-kompatiblen Objektmodulen bestens geeignet, zumal man so der PD-Linie treu bleibt. Weitere Informationen zu "A68K" entnehmen Sie bitte der deutschen Anleitung auf der Bavarian-Diskette Nr.102. Kommen wir nun zur letzten Phase der Erstellung eines ablauffähigen C-Programmes, dem Linkvorgang: Zur Bewältigung dieser Aufgabe benötigen Sie das Programm BLINK (Bavarian Nr.102). Die Frage nach dessen Leistungs- fähigkeit entfällt, wenn man bedenkt, daß der Lattice C-Compiler in neueren Versionen auch schon auf diesen, allerdings bereits verbesserten Linker zurückgreift. Der bei Lattice zuvor verwendete ALINK konnte einem Vergleich mit BLINK nicht standhalten, so daß man diesen kurzerhand mit in das Com- pilerpaket implementierte. Jetzt stellt sich nur noch die Frage nach der zu verwendenden Library. Dazu befindet sich auf dieser Diskette (Schublade LIB) eine Public-Domain- Version der "amiga.lib". Wie es vielleicht der Quelltext des C-Compilers schon demonstriert, so ist er hauptsächlich für die Übersetzung von C-Programmen geeignet, die keiner- lei Amiga-spezifische Funktionen oder Strukturen verwenden. Der Grund dafür liegt ganz klar auf der Hand: PDC verwendet in seiner momentanen Version einen sehr verkümmerten Pre-Prozessor, der allerdings als fast schon uner- läßlich bezeichnet werden kann. Des weiteren ist die für C sehr wichtige "typedef"-Anweisung noch nicht implementiert, so daß mit diesen beiden Ein- schränkungen die Amiga-Include-Files nicht mehr vernünftig eingelesen werden können. Allein das Einbinden kann schon Probleme bereiten. Diejenigen unter Ihnen, die vielleicht mal verbessernd in den Quelltext eingreifen möchten, sollten genau hier ansetzen, da die Beseitigung dieser Mankos den Compiler wahrscheinlich schon in einen akzeptablen Zustand ver- setzen würde. Auf der Bavarian-Diskette Nr. 102 befindet sich übrigens ein leistungs- fähiger Pre-Prozessor, der bei diesem Compiler Anwendung finden kann. Sollten Sie nur an der experimentellen Benutzung des Compilers Interesse haben, dann sind folgende Mängel beim Programmieren unbedingt im Hinterkopf zu behalten: 1. Der Compiler unterstützt keine Fließkommaarithmetik. Variablen, die im Quelltext als "float" deklariert sind, werden zwar akzeptiert, bei der Generierung des Codes aber nicht beachtet. 2. PDC behandelt alle Integerkonstanten als Langworte. Dies würde zum Beispiel bei der Anweisung printf( "Here is the character %c\n",`x` ); zu Problemen führen, da hierbei die Funktion "printf" eine Charakterkon- stante als Argument erwartet. Das Code-Fragment char x; x = `x`; printf( "Here is the character %c\n", x ); würde hingegen mit der Übergabe einer Charaktervariablen korrekt übersetzt werden. Bei Char- und Wordkonstanten ist also Vorsicht geboten, im Zweifels- fall sollten immer Variablen des entsprechenden Typs verwendet werden. 3. PDC erlaubt noch nicht alle unter C gültigen Konstrukte, wie etwa die wiederholte Anwendung des Zuweisungsoperators. Ein Beispiel: Die Anweisung x = y = 0 würde zur Ausgabe eines Fehlers führen. Ebenso ist die direkte Initiali- sierung einer Autovariablen bei deren Deklaration, wie etwa int x=0 noch zu vermeiden. 4. Der Aufzählungstyp "enum" ist noch nicht zulässig und ist bisher nicht im Keyword-Verzeichnis des Compilers vermerkt. 5. Bei der Behandlung von Zeigern auf Zeiger gibt es noch Probleme. So würde die Variable "char **argv" zwar noch richtig behandelt werden, "char *argv[]" jedoch zu Fehlern bei der Übersetzung führen. Sicher lassen sich diese Einschränkungen mit etwas Geschick beim Program- mieren umgehen, so daß Sie der Willkür des Compilers doch noch entgehen können, um sich an kleinere Programmierprojekte heranzuwagen. Die Fehlermeldungen sind zwar manchmal nicht besonders vielsagend, der versierte C-Programmierer hat aber bestimmt die nötige Intuition, um auch diese Probleme zu meistern. ACHTUNG! ACHTUNG! ACHTUNG! ACHTUNG! ACHTUNG! ACHTUNG! ACHTUNG! ACHTUNG! Auf dieser Diskette befindet sich bereits der neue verbesserte Pdc-Compiler (Version 0.92), bei dem viele der oben genannten Mängel behoben wurden. Lesen Sie dazu bitte auch die Readme.Files.