Article View: comp.lang.modula2
Article #5049Re: Mocka - MOdula - 2 Compiler KArlsruhe
From: F.W.Schroeer
Date: Thu, 23 Nov 1989 16:47
Date: Thu, 23 Nov 1989 16:47
92 lines
4908 bytes
4908 bytes
Einige Anmerkungen zum Artikel von Klaus Moeller, Uni Oldenburg, bzgl. Mocka:
> Gibt es irgendwo noch Leute die den Modula -2 Compiler Karlsruhe (mocka)
> benutzen ?
Mocka wird an etwa 100 Universitaeten und Forschungsinstituten benutzt.
Er ist in zum Teil sehr grossen Projekten (einige 100 000 Zeilen Quellcode)
seit Jahren erfolgreich im Einsatz.
Neben der urspruenglichen MC680x0 Version gibt es inwzischen
Portierungen auf VAX, NS32000, 80386, Pyramid, Transputer und
MIPS (automatisch erstellt durch unseren Back End Generator BEG),
sowie eine maschinenunabhaengige Version, die C Source ausgibt
(sie kann sich selbst uebersetzen und liegt damit auch in C vor).
> Gibt es irgendwo jemand der schon ein neueres Release von dem Compiler
> bzw Debugger hat ?
Universitaeten und Forschungsinstitute koennen Mocka bei der
GMD Forschungsstelle Karlsruhe, D-7500 Karlsruhe, Haid-und-Neu-Str. 7,
beziehen. Eine kommerzielle Version (inkl. Support) ist von der Firma
2i Industrial Informatics, D-7800 Freiburg, Haierweg 20e, erhaeltlich.
2i hat einen runtime debugger fuer Mocka angekuendigt.
Der post mortem debugger Mdb wird nicht mehr vertrieben.
> Gibt es irgendwo Sourcen von dem Compiler ?
Die Compiler-Quellen sind leider nicht frei verfuegbar.
Die GMD schliesst aber Kooperationsvertraege mit Institutionen ab,
die den Compiler portieren oder etwa fuer experimentelle Zwecke
erweitern wollen.
> Welche Fehler habt ihr bereits gefunden ?
> Nach unseren Beobachtungen kann der Compiler
> 1. REAL Zahlen nicht richtig runden, aus 0.5 wird 0.49997$%^$^&
Dies war ein Fehler in einem der mitgelieferten IO Module (nicht im
Compiler), der inzwischen behoben ist.
> 2. Auf eine opake Typdefinition (z.B. TYPE List) die im Implementation
> Module als POINTER TO Typ2; (Typ2 = RECORD ...) und eine Prozedurdekla-
> ration mit PROCEDURE bla ( x : ARRAY OF List) reagiert er so dass er
> die ungleichen Parameterdefinitionen im DEFINITION und IMPLEMENTATION
> Modulen anmault.
Dieser Compiler-Fehler ist inzwischen beseitigt.
> 3. Auf Konstrukte der Form POINTER TO ARRAY OF POINTER TO ARRAY OF typ
> laesst sich nicht direkt zugreifen.
Auf solche Konstrukte laesst sich sehr wohl "direkt" zugreifen.
Voraussetzung ist natuerlich, dass Objekte, auf die Pointer verweisen,
tatsaechlich in der erwarteten Groesse allokiert sind.
Der Programm-Argument-Vektor argv etwa, dessen Typ in Modula durch
POINTER TO ARRAY OF POINTER TO ARRAY OF CHAR darstellbar ist,
wird von Unix nur fuer die beim Programmaufruf angebene Argumentzahl
und pro vorhandenem Argument nur fuer dessen tatsaechliche Laenge allokiert.
> 4. Mit FOREIGN Modules gibt es weitere seltsame Features. So laesst sich
> z.B. ein RECORD der in C las POINTER deklariert wurde in Modula mit
> VAR Parametern nachbilden. Mit *char als ARRAY Parameter in Modula geht
> das aber nicht.
FOREIGN Module bieten die Moeglichkeit, Aufrufe fremdsprachiger Prozeduren
gegen eine Spezifikation zu ueberpruefen. Diese Spezifikation kann von
Mocka allerdings nicht gegen ihre Implementierung (etwa in C) ueberprueft
werden. Daher muessen die Typen der Implementierung den Modula-Typen der
Spezifikation entsprechen. C kennt keine VAR-Parameter. Ein VAR-Parameter
vom Typ T entspricht in C einem Value-Parameter vom Typ (T *).
Man beachte, dass in C mit den Deklarationen
P(s) char *s; { s[0] = 'x'; }
Q(s) char *s; { s = "x"; }
char a[10];
ein Aufruf P(a) den Wert von a[0] aendert, ein Aufruf Q(a) jedoch nicht.
> Hat sich schonmal jemand aus Karlsruhe dazu geaeussert (moeglich einer
> von denen die dass Ding verbrochen haben) ?
Andere Institutionen, denen wir Mocka zur Verfuegung gestellt haben,
haben den Weg gewaehlt, uns praezise (und zutreffende) Fehlermeldungen
und Verbesserungsvorschlaege direkt zuzusenden.
Dies hat uns sehr bei der Wartung des Compilers geholfen.
F.W. Schroeer
----------------------------------------------------------------------------
F.W. Schroeer
GMD Forschungsstelle an der Universitaet Karlsruhe
D-7500 Karlruhe, Haid-und-Neu-Str. 7, FRG
schroeer@gmdka.UUCP
----------------------------------------------------------------------------
Technical Details
Message-ID:
<592@gmdka.UUCP>Path:
arc1-ca.pugleaf.net!gmdzi!unido!gmdka!schroeerReferences:
<1258@uniol.UUCP>Show Full Headers
Complete Article Headers
X-Google-Language: GERMAN,ASCII-7-bit X-Google-Thread: 1354df,b2c70f173e0eb88a X-Google-Attributes: gid1354df,public X-Google-Thread: f8c65,b2c70f173e0eb88a X-Google-Attributes: gidf8c65,public X-Google-ArrivalTime: 1989-11-23 12:32:11 PST Path: arc1-ca.pugleaf.net!gmdzi!unido!gmdka!schroeer From: schroeer@gmdka.UUCP (F.W.Schroeer) Newsgroups: comp.lang.modula2,dnet.comp.pcs Subject: Re: Mocka - MOdula - 2 Compiler KArlsruhe Keywords: mocka mdb Message-ID: <592@gmdka.UUCP> Date: 23 Nov 89 16:47:04 GMT References: <1258@uniol.UUCP> Distribution: dnet Organization: GMD Karlsruhe, W-Germany Lines: 92 Posted: Thu Nov 23 17:47:04 1989