Mausverwöhntes C: Megamax-C-Compiler mit neuem Outfit

Nachdem wir im letzten Monat die neueste Version des Mark-V Williams-Entwicklungssystems unter die Lupe nahmen, steht dieses Mal ein Kandidat auf dem Teststand, auf den die ST-Gemeinde bereits seit letztem Herbst wartet: Megamax Laser C.

Bereits auf der Düsseldorfer Atari-Messe im September 1987 durfte das Publikum einen ersten Blick auf das noch unfertige Programm werfen. Nachdem das amerikanische Produkt auf der anderen Seite des Atlantiks bereits seit Februar verkauft wird, stellte uns nun der deutsche Distributor Application Systems ein Testexemplar zur Verfügung.

Bei der Installation des Systems wenig Neues Der Megamax-Ordner muß noch immer im Rootdirectory des Laufwerks liegen. Dies wird Festplattenbesitzer nicht unbedingt begeistern. Ansonsten blieb kaum ein Stein auf dem anderen. Die Megamax-Shell hat nunmehr einen Umfang von 170 KByte und ist mit neun Drop Down-Menüs mehr denn je Dreh-und Angelpunkt des Systems.

Fest in der Shell eingebaut ist der Editor, der sich in seiner Bedienung eng an die Macintosh-Benutzerführung hält. Bedienungskomfort und Geschwindigkeit sollten jeden Programmierer zufriedenstellen. Apple hat sich bei seinen »User Interface Guidelines« schon einiges überlegt, zum Beispiel:

Weniger gefällt uns das Scrollen: Statt um einzelne Zeilen verschiebt sich der Bildausschnitt stets um eine halbe Bildschirmseite.

Die Verwaltung von residenten Programmen nutzt den Speicher besser aus

Alle weiteren Programmkomponenten lassen sich resident im Speicher halten. Das ist insbesondere auf STs ohne Festplatte aber mit 1 MByte RAM praktisch, da keine RAM-Disk notwendig ist. Auf diese Weise entfallen nicht nur die Ladezeiten, sondern es sind alle verwendeten Programme tatsächlich auch nur einmal im Speicher vorhanden.

Besonders stolz dürfen die Megamax-Entwickler auf die intelligente Speicherverwaltung der Shell sein. Der gesamte verfügbare Speicherplatz hilft mit, die Massenspeicherzugriffe zu puffern. Einmal gelesene Dateien, zum Beispiel Header-Files oder Bibliotheken, bleiben gleich im Speicher. Auch neu angelegte Dateien befinden sich zunächst nur im Puffer und erst beim Verlassen der Shell gelangen sie in die externen Speicher

Damit reduzieren sich bei ausreichendem Speicher die Disketten- oder Festplattenzugriffe auf Null. Wer auf Nummer sicher gehen will, schaltet alle resident geladenen Programme auf »WRITE-THROUGH«. Dann werden alle Dateien sofort gesichert. Doch es besteht eigentlich kein Grund zur Beunruhigung: Da die Pufferung auf Datei-Ebene und nicht auf BIOS-Ebene geschieht, können relevante Daten nicht verloren gehen, sofern Sie im Editor »Autosave« aktivieren. Wen stört schon eine fehlende Objektdatei, wenn der Quelltext noch vorhanden ist.

Dieser tiefe Eingriff in die Dateiverwaltung von GEMDOS war allerdings nur durch Nutzung einiger nicht-doku-mentierter und daher auch nicht-fester Adressen durchzuführen. Deshalb liegt ein Konfigurationsprogramm bei, das zur Zeit das »alte« TOS und das Blitter-TOS kennt Je nach ROM-Version verwendet die Shell die richtigen Adressen.

Eine nützliche Shell-Funktion ist der Editor für Environment-Variable, die nicht nur der Compiler nutzt. Auch den von der Shell gestarteten Programmen stehen diese Variablen zur Verfügung.

Alle Ausgaben von Compiler, Linker und den anderen Utilities erfolgen im STDIO-Fenster. Das hat nicht nur den angenehmen Nebeneffekt, daß der Scroll-Balken auch langst verschwundene Mitteilungen nochmal auf den Mom-tor holt, sondern daß Sre hier auch normale Shell-Kommandos eintippen. Komfortabler als mit diesem Bildschirmeditor, in dem ein Kommandointerpreter integriert ist, geht es kaum.

Das leistungsfähige UNIX Make, mit dem sich das Kompilieren und Linken auch umfangreicher Programme auf einen einzigen Tastendruck reduziert, rundet die Shell ab. Um die Shell auch wirklich erst am Ende einer Sitzung verlassen zu müssen, stehen alle grundlegenden Dateioperationen über eine Dialogbox zur Verfügung.

Trotz des gewaltigen Umfangs der Shell bleiben Wünsche offen. So sind beispielsweise Compilerschalter nur beim Start des Compilers über das STDIO-Fenster oder durch Anpassen der Make-Datei zu setzen. Außerdem ist den Entwicklern ein leicht gestörtes Verhältnis zu GEM vorzuwerfen:

Ob mit oder ohne umfangreicher Shell - Kernpunkt eines C-Entwicklungspakets ist nach wie vor der Compiler.

Bei Laser C handelt es sich leider noch um einen Compiler der »alten« Generation, der nur einige der ANSI-Erweiterungen kennt. Dazu gehören beispielsweise der Funktionstyp »void«, Aufzählungstypen, Structure-Passing und Mehrbyte-Zeichenkonstanten (»long a = ’XARGh). Es fehlen leider die Function-Prototypes, die man schon seit geraumer Zeit von Lattice-C kennt, und die natürlich auch der ANSI-C-Compiler »Turbo-C« verarbeitet. Gegenüber der alten Compilerversion ist die berüchtigte 32-KByte-Grenze weggefallen, die es verhinderte, Datenobjekte von mehr als 32 KByte Größe anzusprechen. Damit wurde auch die »overlay«-Direktive überflüssig. Grund für diese Einschränkungen war die durchgängige Verwendung der PC-relativen Adressierung, die besonders bei Platzsparern und Geschwindigkeits-Liebhabern gut ankam. Der neue Compiler arbeitet nur noch mit absoluter Adressierung, was die Programme länger und langsamer macht. Vielleicht wäre hier ein Compiler-Switch oder ein intelligenterer Compiler nützlicher gewesen.

Ausgaben von TOS-Applikationen erfolgen in das STDIO-Fenster

Statt dessen teilt man dem Compiler mit, welchen Code er beim »switch«-Befehl erzeugt (Sprungtabelle, Vergleichsbefehle oder binäre Suche). Das führt sicherlich in Extremfällen zu Geschwindigkeitsgewinn — irgendwie bleibt aber der Eindruck haften, daß hier viel Aufwand in ein vergleichsweise unwichtiges Detail geflossen ist. Weiterhin gibt es das Schlüsselwort »asm«, mit dem sich Assembler-Code direkt in das C-Programm einfügt.

In anderen Punkten geben wir gute Noten:

Unsere Benchmarkergebnisse zeigen ein weiteres Mal, mit wieviel Skepsis man beispielsweise den Dhrystone-Benchmark genießen muß. Trotz der um 20 Prozent schlechteren Wertung im Vergleich mit Mark-Williams-C ergeben unsere detaillierteren Tests, daß Laser C die Mehrzahl der Einzeltests für sich entscheidet. Besonders auffällig sind die guten Ergebnisse der Fließkommaroutinen (Laser C benutzt das Standard-IEEE-Format) und der trigonometrischen Funktionen. Der Floating-Point-Prozessor MC68881 kommt bislang nicht zum Einsatz. Application Systems kündigte hier bereits Abhilfe an.

Der Linker ist ein weiteres Beispiel dafür, daß man gut dabei fährt, von Anfang an auf Standards zu setzen. Der neue Megamax-Linker versteht sogar zwei Standardformate: das von UNIX und das von Digital Research. Damit kommuniziert er mit fast allen anderen Sprachen — nur nicht die mit dem alten Megamax-C.

Die mitgelieferten Bibliotheken enthalten das auf dem ST übliche: TOS-, GEM- und Line-A-Bindings, die Standard-C-Bibliotheken und einige Erweiterungen aus der UNIX-Welt. Der Startup-Code beherrscht nicht nur I/O-Umleitung, sondern auch die automatische Erkennung von Accessories — eigentlich keine Überraschung, tauchte dieses Verfahren doch auf den Toolbox-Disketten zum alten Megamax auf.

Eine Anzeige der gepufferten Dateien und Environment Variable hat es bisher nicht gegeben

Obwohl kein Debugger enthalten ist, gibt es drei verschiedene Wege zur Fehlersuche:

Bei einem Programmabsturz oder einer Unterbrechung mit < Control Delete > lassen Sie sich die Kette der aufrufenden Prozeduren zeigen. Es läßt sich aber auch ein externer Debugger verwenden. Daneben ist noch eine spezielle »Debug«-Library, die man statt der Standardbibliotheken hinzulinkt, vorhanden. Starten so gelinkte Programme, findet man sich in einem kommandogesteuerten Debugger wieder. Dabei ist das Anzeigen von Variableninhalten nicht die einzige Funktion. Durch Setzen eines Breakpoints auf eine Prozedur erscheinen zum Beispiel die übergebenen Parameter. Da der Debugger einen eigenen Bildschirm für Textausgaben benutzt, lassen sich auch Grafikapplikationen de-buggen. Teile der Debug-Library gehören als Quelltext zum Lieferumfang. Die Dokumentation dazu erläutert, wie eigene Datentypen und Befehle den Debugger erweitern — eine Fundgrube für den erfahreneren Programmierer.

Was auf dem ST als Entwicklungssystem durchgehen will, muß auch ein »Resource Construction Set« anbieten. Laser C bietet eine leicht aktualisierte Fassung des bereits vom alten Compiler bekannten Programms »MMRCP«, das zwar seinen Zweck erfüllt, aber gegenüber den Konkurrenten von Digital Research und Kuma nicht besonders gut abschneidet.

Zum Test lag uns nur das englische Handbuch vor, das nicht nur durch das gelungene Layout (TeX läßt grüßen) beeindruckt. Auf über 600 Seiten sind alle wichtigen Informationen zu Programmen und Bibliotheken zusammengestellt, obwohl man im Zweifelsfall nicht auf Sekundärliteratur verzichten kann.

Benchmarkvergleich der beiden C-Compiler

——— Mark Williams Megamax Laser
Intmath short 0.8150 0.8450
Intmath long 2.0600 2.6800
Realmath short 18.4750 20.9950
Realmath long 18.2950 14.4900
Trlglog short 25.7100 13.9050
Triglog long 25.6950 13.4950
For 0.9250 0.8200
Loop 0.8250 0.9700
Repeat 0.8250 0.8150
While 0.9250 0.8150
ArrayAccess 1.3900 1.1750
RecordAccess 1.0300 0.9700
RecordArray 0.6050 0-5300
WriteToFile 18.6400 31.3450
ReadFromFlle 53-8400 7.0050
Pass Parameters 40.5550 37.8l.5O
Pass Structures 1.8950 3.5600
Convers ions 32.4450 3.3150
Strings 0.4000 0.4200
Dhrystone 1.1 1087 (Register) 853 (Register)
1020 821

In einigen Punkten fehlte ein wenig die Aktualität — sogar das Blitter-TOS war den Autoren offenbar unbekannt.

Die aus Heidelberg gelieferte Version bietet einen Vorgeschmack auf den zu erwartenden Support: Für die Probleme mit den 4-MByte-Computern liegt ein vorläufiger Patch bei, eine ausführliche Readme-Datei gibt Tips für die Anpassung alter Quelltexte.

Fazit: Was dem UNIX-Freak sein Mark-Williams-Compiler, ist dem GEM-Fan das neue Laser C. Dabei bietet Laser C mit seiner Shell und dem Make-Utility auch den Traditionalisten eine komfortable Arbeitsumgebung. Einziger Haken: Im Vergleich zu Turbo-C hinkt Laser C hinter dem aktuellen Stand der C-Entwicklung her. (uh)

Bezugsquelle: Application Systems Heidelberg, Englerstr. 3, 6900 Heidelberg 1

Wertung

Produktname: Megamax Laser C
Preis: 398 Mark
Hersteller: Megamax Inc.

Stärken:

□ leistungsstarke grafische Benutzeroberfläche □ ausgeklügelte Speicher-verwaltung □ schnelle FP-Routinen

Schwächen:

□ kein ANSI-Standard □ Code langsamer und größer als beim Vorgänger

Fazit: Schneller Compiler nach dem alten C-Standard mit komfortabler Benutzerführung


Gereon Steffens Julian F. Reschke
Aus: ST-Magazin 10 / 1988, Seite 62

Links

Copyright-Bestimmungen: siehe Über diese Seite