Objekt C: Sozobon C und GNUShell

Viele ATARI-Programmierer haben sicher schon Erfahrung mit Sozobon C sammelt. Sozobon C ist genauso wie GCC ein Freeware Produkt. Sozobon C ist zwar qualitativ weniger hochwertig als der GCC der Free Software Foundation, es ist aber wesentlich besser auf den ATARI angepaßt. Die Installation von Sozobon C ist verglichen mit GCC ziemlich einfach, besonders wenn man auf die Installation einer Shell verzichtet und statt dessen ein Produkt wie "GNUSHELL.PRG" (Sharewaregebühr DM 20,-) verwendet. Genau genommen ist GNUShell gar keine Shell, sondern eine universelles IDE (integrated development environment), das normalerweise auf GNU GCC angepaßt ist, sich aber ebenso in wenigen Minuten an jeden anderen C Compiler anpassen lässt. Die GNUShell entspricht dabei in etwa der des Turbo C für ATARI.

Die GNUShell bietet uns im wesentlichen folgendes:

Setzen der Umgebungsvariablen unter GNUShell

Die im "Environment"-Dialog vorgestellten Einstellungen entsprechen einem Sozobon-Ordner "SC" auf Laufwerk C. Weil Sozobon C einige weitere Environment-Variablen benötigt, können in der Dialogbox noch alle Einstellungen gesetzt werden. Die Datei "GNUSHELL.INF" muss mittels eines Texteditors wie folgt erweitert werden:

% &GCC-EXEC-PREFIX=c:\sc\bin\ &GNUINC=c:\sc\include &GXXINC=c:\sc\inciude &GNULIB=c:\sc\Iib &TMPDIR=c:\scratch &UNIXMODE=.,/d &PATH=c:\sc\bin &INCLUDEDIR=c:\sc\include &LIBDIR=c:\sc\Iib &LDFLAGS=-lolib

Der große Vorteil der GNUShell besteht aber vor allem darin, dass kein neues UNIX-Dateisystem (MiNT) oder eine Shell wie Mupfel einzurichten sind. Sozobon C benötigt ebenfalls keine langen Dateinamen, womit sich GNUShell und Sozobon C gut kombinieren lassen. Warum aber sollte man nun Sozobon C anstelle von GNU GCC verwenden? Dafür spricht vor allem der Speicherverbrauch. Angeblich soll Sozobon C sogar auf unaufgerüsteten 520ST Rechnern laufen, 1 MB RAM sollte man aber wegen Object C mindestens parat haben. Wer jetzt behauptet, er habe ja 4 MB RAM in seinem Rechner und könne so auch gut GCC verwenden, der sollte berücksichtigen, dass es sich gerade bei ATARI Rechnern sehr lohnt, die Include- und Library-Ordner in die RAM-Disk zu verlagern. Weil GCC aber bereits 3,5 MB RAM benötigt, wäre hierfür kein Platz. Verglichen mit dem alten GCC 1.5.4 bietet Sozobon mit der FastGEM Bibliothek auch eine bessere und sogar MagiC-kompatible GEM-Schnittstelle. Neuere GCC-Versionen (aktuell ist 2.7.2) lassen sich zwar unter MiNT installieren, die Installation auf normalen ATARis ist aber nicht gerade problemlos. Der "Object C"-Hersteller CPR hat aufgrund dieser Überiegungen den Object C Compiler auf die Bedürfnisse von Sozobon C angepaßt und eine neue Compileroption "-g2" eingeführt, die Sozobon-kompatible C Quelldateien erzeugt und eine Reihe anspruchsvollerer Makros für Sozobon C auflöst. Die Anpassung war nötig, weil Sozobon C verglichen mit anderen ANSI-C Compilern oder C++ Compilern den ANSI-Standard nicht ganz erfüllt. Es gibt zwar eine Reihe frei erhältlicher Präprozessoren für Sozobon C, jedoch würde hiermit die Überset- zungsgeschwindigkeit verringert und neue Abhängigkeiten geschaffen.

Nachteile

Natürlich ist auch mit Sozobon C nicht alles perfekt. Beispielsweise kann die Verwendung bestimmter Makro-Schachtelungen zur Erzeugung unzulässiger Assembler-Befehle führen.

Diese seltenen Fälle werden allerdings vom Assembler erkannt, und man kann den C bzw. Object C Quellkode dann entsprechend ändern,. Für die -mlong Option zur Verwendung von langen 32-bit int Typen sollen nicht alle Bibliotheken verfügbar sein (man arbeitet also mit den ohnehin schnelleren 16- Bit Bibliotheken und verwendet bei Bedarf 'long' Typen im eigenen Quelldateien). Der Optimizer (C Compiler-Option '-0') erzeugt fehlerhafte Programme, was vermutlich mit der verstärkten Register- Verwendung für Funktionsparameter und den verwendeten Bibliotheken zusammenhängt.

Wahrscheinlich muss bei der Anwendung des Optimizers also einiges beachtet werden. Man sollte den Optimizer also erst einmal vergessen, zumal die Object C Laufzeitbibliothek ohne Optimizer übersetzt wurde. Zusätzlich beschränkt die Laufzeitbibliothek des Sozobon C die Speicheranforderungsfunktion "malloc()" auf maximal 32 Blöcke je 64 KB, was die Menge an verfügbaren Objekten innerhalb Object C natürlich auf etwa 1,5 MB beschränkt. Object C Laufzeitbibliotheken des Release 3.0 werden diese Grenze dann aufheben. Wer nicht über einen Zugriff auf das WWW und somit auf die Object C Homepage verfügt, kann sich die kostenlosen Komponenten Sozobon C, Object C 2.5.1 und GNUShell auch bei "Seidel Softwareservice" bestellen. Bitte verlangen Sie dort das SDK mit Sozobon C und Object C (SDK + Up- date = 79 DM). Da der "Seidel Softwareservice" für seine aktuellen SDK Updates CD-Rs verwendet, sollte es keine Lieferprobleme geben. Weil bisher kein zufriedenstellendes Object C System für ATARI verfügbar war, kann leider erst jetzt mit der Portierung der OCC GUI Bibliothek begonnen werden.

Der demnächst startende OCC-Kurs greift der Verfügbarkeit also etwas vor. In die ersten OCC- Kursteilen werden also eine Mischung aus allgemeinem Basiswissen und kleinen Object C Methoden sein, die sich auch als TTP oder TOS Programm implementieren lassen. Der Object C Reiease 3.0 (Mitte/Ende nächsten Jahres erhältlich) wird dann in eingeschränkter Form (eingeschränkter Komfort, uneingeschränkte Funktionalität) kostenlos aus dem WWW bzw. über den "Seidel Softwareservice" auf CD zu beziehen sein. Die ATARI-only Vollversion mit GUI Builder, Debugger, Browser und weiteren Entwicklungstools wird voraussichtlich für 198 DM über CPR vertrieben werden. Das Paket inklusive Mangrove Manager wird voraussichtlich für 278 DM angeboten werden. Informationen zum Mangrove Manager befinden sich auf der Object C Homepage. Das Cross Platform Paket mit einem freien Update und Mangrove Manager wird dann wie das bislang erhältliche Release OC2 für 798,- DM vertrieben werden - für Compiler und Bibliotheken von 12 Plattformen ein angemessener Preis.

Systemvoraussetzungen

ATARI-Programmierer werden jetzt vielleicht befürchten, ihr 68000er ATARI mit 4 MB RAM sei mit diesem Entwicklungssystem der Version 3.0 (Codename OC3) dann überfordert. Bei der Entwicklung des 3.0 Release wird jedoch eine neue Technik "Incremental Compiling" zum Einsatz kommen, bei der ähnlich dem "incremerital Linking" sehr viel Übersetzungszeit gespart wird. Incremental Compiling für C/C++ wird derzeit nur vom MS Visual C++ 4.0 (mit etwa 900 DM ziemlich teuer) unterstützt und sorgt dafür, dass der C Compiler im Durchschnitt nur etwa jede fünfte Datei wirklich übersetzen muss. Das bedeutet, dass ab Object C 3.0 auch jeder an dem Object C Entwicklungsprozeß beteiligte C Compiler wesentlich weniger zu übersetzen haben wird. Das Entwicklungssystem wird natürlich auf OCC basieren und lässt sich deshalb auch auf Monochrom-Modus mit oder ohne Hintergrund- Bildaufbau schalten, wodurch der Speicherbedarf für Browser etc. auf ein 4 MB ATARI System beschränkt bleiben kann. Grund für den Entschluss, in jedem Fall auch ein ATARI-basiertes Entwicklungssystem dieser Leistungsstärke anzubieten, waren gute Produkteinführung und Kooperation mit dem ATARI Inside Magazin, Entdeckung von Sozobon und GNUShell, geringer Speicherverbrauch von Sozobon C und Verfügbarkeit einer MagiC-fähigen GEM-Bibliothek.


Andreas Guthke
Aus: ST-Computer 12 / 1997, Seite 33

Links

Copyright-Bestimmungen: siehe Über diese Seite