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