Hinweise zur Installation: Die Disketten sind mit tar Xv unter Superuser-id einzulesen. Dabei entsteht ein Verzeichnis /z/LCC, in dem sich alle zum Compiler gehoerenden Komponenten befinden. Nach dem Einlesen sollte mit ln /z/LCC/bin/lcc /z/bin/lcc der Treibermodul des Compilers in ein Verzeichnis des Standardsuchpfades eingebunden werden. Danach ist der Compiler mit lcc aufrufbar. RELEASE NOTES Segmentierender C-Compiler lcc und Umgebung ============================================ Der segmentierende C-Compiler lcc ist das Kernstueck einer neuen C - Entwicklungsumgebung fuer den P8000, die es erlaubt, wesentlich komplexere C - Programme fuer den genannten Rechner zu compilieren. Des weiteren sind seit langem bekannte Fehler und Unzulaenglichkeiten in den verfuegbaren Compilern cc und scc beseitigt worden. A. TECHNISCHE CHARAKTERISTIK Die vorliegende erste Version ist folgendermassen charakterisiert: 1. Die maximale Anzahl der in einem Modul moeglichen Symbole betraegt 2739. 2. Die Symbole duerfen eine Laenge von maximal 126 Zeichen besitzen. 3. Der Preprozessor erlaubt eine Symbollaenge von 128 Zeichen. ( cpp - Variante des Lfa ). 4. Das Stacksegment hat eine Groesse von 64kByte. Zulaessig ist nur eine Benutzung von 64kByte - 256 Byte, da der Betriebssystemkern einen Sicherheitsbereich von 256Byte als Schutz vor Unterlauf anlegt. Ueber den Stack erfolgt grundsaetzlich die Parameteruebergabe. Eine Ausnahme bildet der Anschluss der Gleitkommaroutinen, die ueber Register ihre Parameter bekommen. Diese Parameterkonventionen fuehren zur Incompatibilitaet mit den Objektmoduln, die mit dem scc gebildet worden sind. 5. Die Gleitkommaoperationen sind durch interne Funktionsrufe des Compilers realisiert, die fuer den C-Programmierer nicht sichtbar sind. 6. Die Gleitkomma-Arithmethik ist entsprechend des C-Standards im IEEE-Standard implementiert. Alle Gleitkommaoperationen werden in double-Format ausgefuert. 7. Die Systemrufe haben die Funktionalitaet, wie sie im WEGA-Programmierhandbuch Teil 2 Sektion 2 beschrieben ist. 8. In der Bibliothek befinden sich die Routinen entsprechend des System V Release 1 Standards. 9. Die Basis-Typen besitzen die folgenden Laengen in Bit: char 8 int 16 long 32 pointer 32 float 32 double 64 Die Differenz von 2 Zeigern ist 16bit- Integer, da diese Differenz nur sinnvoll innerhalb eines Segmentes ist. Das entspricht dem X/Open - Standard. 10. Datenobjekte muessen einzeln in ihrer Groesse unter 64k Byte bleiben. Die Groesse des Befehlsteils einer Uebersetzungseinheit (verarbeitbarer Modul) darf 64kByte nicht ueberschreiten. 11. Registervariablen sind in 4 16bit - Registern platzierbar. Die Zuordnung erfolgt von Register r11 abwaerts bis Register r8. Folgende Zuordnungen sind moeglich: a) 4 x int b) 1 x long + 2 x int c) 2 x long 12. Felder duerfen mit maximal 5 Dimensionen benutzt werden. 13. Die temporaeren Files stehen unter /tmp/lctmxxxxxx . 14. Die Laenge von Zeichenkettenkonstanten wird lediglich vom Preprozessor begrenzt. 15. Die ASCCII - Tabelle darf 64kByte je Uebersetzungseinheit nicht ueberschreiten. B. PFADE UND AUFRUFKONVENTIONEN Die Komponenten des C-Compilers sind unter dem Verzeichnis /z/LCC installiert. Das Verzeichnis /z/LCC/bin enthaelt den Compilertreiber lcc, den Lader lld sowie den Assembler cas. Im Verzeichnis /z/LCC/lib sind die verschiedenen Compiler- paesse , der Preprozessor lcpp, der erste Compilerpass ccom, sowie der Optimierer lcopt enthalten. Des weiteren befinden sich dort der Startup-Code lcrt0.c und die Library Llibc.a . Das Verzeichnis /z/LCC/include enthaelt die include-Files, die als erstes vom C-Preprozessor eingezogen werden. An- schliessend wird das Verzeichnis /usr/include durchsucht. Folgende Compileroptionen werden unterstuetzt: -c -Dname -Dname=def -E -Idir -O -P -S -Uname (Vergleiche Beschreibung der Compileroptionen fuer CC im WEGA- Programmierhandbuch Teil 1/1.) Der vom lcc benutzte Verbinder ist die angepasste Version des Verbinders gld von WEGA. Die fuer ihn zulaessigen Optionen sind im Programmierhandbuch beschrieben. Mit diesem Verbinder ist es nicht moeglich, Objekte partiell zu verbinden. C. AUTOREN Dr. Baerbel Buendig Antje Schirmeister Otbert Froelich Dr. Thomas Zaenker