.PL 72 .HM 2 .FM 2 Bericht: Vergleicè voî C-Compilerî unteò CP/M Bearbeiter: Andreas Israel Technische Universitaet Karl-Marx-Stadt Sektion Informatik SG 11 REI 86 Karl-Marx-Stadt, 1. Februar 1987 Gliederung 1® Aufgabenstellunç unä Voraussetzungen 2® Diå Benchmark-Programme 3® Diå Testphase 4® Testergebnisse 4.1® Uebersetzungszeit 4.2® Laufzeit 4.3® Codegroesse 4.4® Sprachumfang 4.5. Bibliotheken 4.6. Anwenderfreundlichkeit und Testhilfsmittel 5® Abschliessendå Bemerkungen 6. Literatur Anhanç Aº Quelltextå deò Testprogramme Anhanç Bº Testergebnisså iî Tabellenform .PA Š1® Aufgabenstellunç unä Voraussetzungen Meinå  Aufgabå waò es¬  diå unó zuò Verfuegunç stehendeî  C-Compileò fueò 8-Bit-Rechneò unteò CP/M-kompatibleî Betriebssystemeî zõ  verglei chen®  Zuò  Verfuegunç standeî eiî Pà 171µ unä diå Betriebssystemå SCP¬ CP/Á unä einå abgeruestetå CP/M-Versioî miô 52k-Byteó fueò Anwenderpro grammå (TPA)® Folgendå C-Compileò standeî miò zuò Verfuegung: (1© Aztec-C-Compileò Version 1.05 (2© BÄ Software-C-Compileò Versioî 1.50 (3© SuperSoft-C-Compileò Versioî 1.2 (4© BUMA-C-Compileò Cà 1520 Version 1.2 Iî /1¯ isô deò vollå Lieferumfanç voî (1)-(3© beschrieben® Praktiscè isô folgendeó vorhanden: (1)º Compiler¬ Assembler¬ Linker¬ Bibliothekar¬ Bibliothekeî unä Hea derfiles (2)º Compiler¬ Linker¬ Bibliothekar¬ Bibliotheken¬ Headerfiles¬ Quell textå  deò Bibliotheksfunktioneî fueò diå long- unä float-Arithme tik¬  Debuggeò unä dazugehoerigeò Linker¬ einå kurzå Dokumentatioî zuí Compiler¬  Linkeò unä Bibliothekaò einschliesslicè eineò Kurz beschreibunç  deò Bibliotheksfunktioneî unä einå Dokumentatioî zuí Debugger (3)º Compiler¬ Assembler¬ Linker¬ Bibliotheken¬ Quelltextå deò Biblio theken¬ Headerfileó unä einå umfangreichå Dokumentation (4)º Compiler¬ Assembler¬ Linker¬ Bibliotheken¬ eiî Headerfilå unä einå umfangreichå Dokumentation. Deò Debuggeò voî (2© waò fueò eineî groessereî TPA-Bereicè generierô aló  unteò SCÐ zuò Verfuegunç steht®  Somiô entschlosó  icè  mich¬  diå Compileò  unteò  CP/Á  zõ testen®  Leideò funktioniertå aucè  hieò  (4© nicht® Gluecklicherweiså erhielô icè nocè rechtzeitiç einå abgeruestetå CP/M-Version¬  sï dasó icè dieseî Compileò miô einbezieheî  konnte. ((4© benoetigô eineî TPA-Bereicè voî 52k-Bytes.) Beé deò Uebersetzungszeiô isô damiô (4© nichô benachteiligt¬  dá diå verwendeteî  Diskettenformatå  beideò Betriebssystemå  ií  wesentlicheî (physischå  Sektorlaenge©  nichô voneinandeò abweichen®  (4© waò  sogaò leichô bevorteilt¬  dá diå Testprogrammå fueò dieseî Compileò auæ eineò Diskettå  miô  groessereò physischeò  Sektorlaengå  gespeicherô  waren® (Trotzalledeí waò dieseò Compileò deò langsamstå iî deò Uebersetzung.) Eó  waò  ií Rahmeî dieseò Arbeiô nichô moeglich¬  deî volleî  bezie hungsweiså  deî jeweiló implementierteî Sprachumfanç  zõ  ueberpruefen® Zuí  grosseî  Teiì  musó icè micè auæ diå Angabeî  iî  deî  vorhandeneî Dokumentationeî  unä  auæ diå Angabeî iî /1¯ unä  /2¯  verlassen® Deò Vergleicè wurdå nacè folgendeî Punkteî durchgefuehrt: - Uebersetzungszeit - Laufzeiô - Groesså deó erzeugteî Codes - Sprachumfang - Kompatibilitaet der Bibliotheken - Anwenderfreundlichkeit und Testhilfsmittel .PA Š2® Diå Benchmark-Programme Ií folgendeî werdeî diå 2³ Programmå beschrieben¬  diå zuí Tesô  deò Compileò  verwendeô wurden®  Einigå dieseò Programmå sinä /1¯ odeò  /2¯ entnommeî bzw® aî diå dorô aufgefuehrteî Programmå angelehnt® Beé alleî Programmeî  befindeô  sicè aí Anfanç unä aí Endå deò  Berechnungeî  eiî printf-Aufruf¬ damiô diå reinå Bearbeitungszeiô ií Hauptspeicheò gemes seî werdeî kann® Diå Programmå wurdeî allå auæ ihrå Funktionsfaehigkeiô miô  deî Compilerî voî BÄ Softwarå unä Azteã getestet®  Diå zuí  Testeî noetigeî  printf-Aufrufå  wurdeî durcè Kommentarå anschliessenä  ausge klammert¬  damiô diå Ein- unä Ausgabå zuí Terminaì unä diå unterschied lichå  Geschwindigkeiô deò printf-Funktioneî nichô diå  Ergebnisså  be einflusst. Hanoi Dieseó  Programí berechneô diå Zugreihenfolgå beií Probleí  deó  Turmeó voî  Hanoi®  Hieò wirä deò sog®  Overheaä beé Funktionsaufrufeî unä deò Parameteruebergabå (4 Parameter© getestet. Fib Dieseó Programí berechneô einå Fibonaccizahì rekursiv®  Ií  Unterschieä zõ  Hanoé wirä hieò nuò eiî Parameteò uebergeben¬  sï dasó ií Vergleicè beideò Programmå diå Verteilunç deó Overheadó auæ diå  Funktionsverbin dunç unä diå Parameteruebergabå sichtbaò wird. Sieâ unä Siebl Dieó isô eineò deò Standardbenchmarkó (siehå /1/)® Eó werdeî Primzahleî nacè  deò Methodå deó Siebeó voî Eratosthenes berechnet®  Hieò wirä diå Effizienú  voî Schleifeî getestet®  Diå Variantå siebì dienô analoç  zõ mamultì (s®  u.© dazu¬  Unterschiedå ií Behandelî globaleò unä  lokaleò Variableî festzustellen. Quicë unä Quickr Sortiereî voî 500° Integerzahleî nacè deí Quicksortprinzip®  Diå Zahleî wurdeî wiå aucè iî deî folgendeî Programmeî zuí Sortiereî bzw® Arbeiteî miô  Matrizeî durcè eineî Zufallsgeneratoò erzeugt®  Hieò werdeî  vielå Dingå  iî  ihreí Zusammenspieì  getestetº  Funktionsaufruæ  (rekursiv)¬ while- unä for-Schleifen¬  if-Konstruktioneî unä Feldzugriffe® Diå Ver sioî  quickò dienô analoç zõ mamultr¬  strò unä pointerò (s®  u.©  zuí Testeî deò Vorteile¬ diå durcè register-Variableî erreichô werden. Bubble Sortiereî voî 50° Integerzahleî nacè deí Bubblesortprinzip® Hieò treteî Schleifeî  unä Feldzugriffå auf®  Desweitereî wirä dieseó Programí  be nutzt¬ uí diå Ausgabegeschwindigkeiô mitteló printæ zõ testen. Mamult¬ Mamultl¬ Mamultò unä Mamultf Hieò  werdeî zweé Matrizeî (40*4° bzw®  beé Mamultæ 20*20©  miteinandeò multipliziert®  Hieò werdeî Schleifeî (³ ineinandeò verschachteltå for- Schleifen© unä Zugriffå zõ zweidimensionaleî Felderî getestet. Damen Dieseó Programí berechneô diå Anzahì deò Loesungeî deó 8-Damenproblems® Eó  wurdå  hieò auæ jeglichå Schleifenkonstruktioî unä  Rekursioî  ver zichtet®  Dadurcè  werdeî Unterschiedå iî deò Aufloesunç voî  Schleifeî unä  Funktionsaufrufeî  ausgeschalteô unä somiô deò "normale¢ Codå  ge testet. .PA ŠBinbauí unä Binbaum1 Hieò wirä diå Arbeiô miô Zeigerî unä Struktureî getestet® 250° Integer zahleî werdeî iî eineî binaereî Bauí einsortierô unä wiedeò ausgegeben® Dieó geschiehô rekursiv®  Diå Variantå Binbaum± miô 100° Zahleî  musstå miô  aufgenommeî werden¬  dá deò Linkeò daó voí SuperSofô Compileò  er zeugtå Programí miô 250° Zahleî nichô verbindeî konnte. Pointeò unä Pointerr Hieò  wirä diå Arbeiô miô Pointerî getestet®  Gleichzeitiç dienô eó aló Testprogramí fueò diå Verwendunç voî Registervariablen. Stò unä Strr Eó wirä diå Laengå eineò Zeichenkettå bestimmt®  Dieó geschiehô wiå beé Pointeò unä Pointerò zuí Testeî deò Registervariablen® Ií Gegensatú zuí vorangegangeneî Testprogramí isô hieò diå Registervariablå eiî formaleò Parameter. Long1¬ float± unä double1 Dieså Programmå dieneî zuí Testeî deò Geschwindigkeiô deò Long-¬ Float- unä  Doublearithmetik¬  soweiô dieså miô implementierô sind®  Fueò  diå Floatarithmetië  waò  aucè Mamultæ vorgesehen¬  waó leideò  beé  BUMA-à nichô ordnungsgemaesó lief. Size1¬ Size2¬ Size³ unä Size4 Dieså Programmå dieneî zuí Testeî deò gepufferteî Ein- unä Ausgabå (deò sog®  Standard-E/A-Bibliothek)® Leideò siehô dieseó Programí fueò jedeî Compileò anderó aus. Dummy Dieseó Programí enthaelô nuò zweé printf-Aufrufe®  Damiô solì diå Code groesså  deò Laufzeitumgebunç unä deò standardmaessiç (durcè printæ  u® ae.© eingebundeneî Bibliotheksfunktioneî bestimmô werden¬ uí aucè unge faehò  diå  Groesså deó tatsaechlicè erzeugteî Codeó fueò daó  entspre chendå  Probleí ermittelî zõ koennen®  Damiô wirä aucè  diå  ungefaehrå unterå Grenzå deò Groesså eineó Programmeó festgestellt. 3® Diå Testphase Zõ  alleî C-Compilerî wurdå eiî Kommandofilå angelegt¬  welcheó danî miô deí SUBM-Kommandï abgearbeiteô wurde® Uí deî Einflusó deò Zeit¬ diå dieseó Kommandï fueò diå Aufbereitunç deó Kommandofileó braucht¬ gerinç zõ  halten¬  wurdå  diå Messunç begonnen¬  wenî diå  Kommandozeilå  zuí Aufruæ deó Compileró auæ deí Bildschirí stand®  Diå Pauseî zwischeî deî einzelneî  Aufrufeî lageî beé ca®  ² Sekunden®  Desweitereî haengô  diå Uebersetzungszeiô aucè voí Auslastungsgraä unä deò Verteilunç deò frei eî Bloeckå auæ deò Diskettå aâ (Schwankungeî voî µ Sekundeî sinä durch auó moeglich)®  Damiô isô eó nichô sinnvoll¬ diå Messergebnisså genaueò aló ± Sekundå anzugeben®  Diå Messungeî konnteî auó Zeitgruendeî  nichô mehrfacè ausgefuehrô werden¬  dá diå Uebersetzungs- unä Laufzeiteî fueò allå Programmå prï Compileò schoî uebeò ² Stundeî ergeben. Diå  Groesså deó verbundeneî Fileó haengô starë voí Umfanç deò Lauf zeitumgebunç  unä voî deò Anzahì unä Groesså deò  jeweiló  eingefuegteî Bibliotheksfunktioneî ab®  Hierzõ musó erwaehnô werden¬ dasó zuí Super Soft-C-Compileò  keinå Bibliothek¬  sonderî nuò diå uebersetzteî  Funk tionspaketå  deò  Bibliotheksfunktioneî vorhandeî waren¬  welchå  beií Linkeî fasô allå benoetigô wurden¬  uí entstandenå externå  Bezugnahmeî aufzuloesen®  Eiî Bibliothekaò o®  ae® stanä hieò nichô zuò Verfuegung® Damiô  isô  diå Codegroesså deò voî dieseí Compileò  uebersetzteî  Pro grammå derartiç grosó (siehå Anhanç B). Š Beim Uebersetzen der Testprogramme traten folgende Probleme auf: Azteã C: Dá keinå Beschreibunç vorhandeî ist¬ musstå icè micè auæ diå Angabeî iî  /1¯ verlassen®  Hieò tauchtå nuò diå Fragå auf¬  oâ maî wiå beé  BÄ Softwarå à deî Optimizeò expliziô einschalteî muss®  Icè vermutå  aber¬ dasó dieó nichô noetiç ist. BD Software C: Hieò  musó  fueò  diå Optimierunç zusaetzlicè eiî  Flaç  beií  Aufruæ angegebeî werden®  Dá diå Uebersetzungszeiô hieò sehò gerinç ist¬  habå icè allå Programmå sowohì miô aló aucè ohnå Optimierunç uebersetzô  unä abgearbeitet®  Diå  Uebersetzungszeiô blieâ erstaunlicherweiså  gleich® Diå Programmå wurdeî minimaì groesseò abeò aucè uí einigeó schneller. SuperSoft C: Bezueglicè  deò  Optimierunç seé hieò erwaehnt¬  dasó siå  standard maessiç eingeschalteô ist¬  abeò aucè ausgeschalteô werdeî  kann®  Allå Messungeî  wurdeî  miô Optimierunç durchgefuehrt®  Worauæ schoî iî  deò Dokumentatioî  hingewieseî war¬  traô aucè beé einigeî Programmeî  auf¬ naemlicè  Namenskonfliktå ií erzeugteî Assemblercodå zwischeî  globaleî Variableî  unä  reservierteî Schluesselwoerterî  deó  Assembleró  (bei spielsweiså beé globaleî Variableî á unä b)®  Eiî weitereó Probleí traô beé  beií  Programí  sizå  auf®   Dieó  stuerztå  undefinierô  ab®  Diå Fehlersuche ergab, dass dies in der Funktion fopen geschah. BUMA C: Dieseò  Compileò  enttaeuschtå total®  Obwohì iî  deò  Dokumentatioî vollå  Kompatibilitaeô  zõ UNIX-à /3¯ versprocheî  wurde¬  funktionierô schoî  eiî  grosseò Teiì deò Bibliotheksfunktioneî  etwaó  anderó  odeò heissô  aucè  anders®  Eiî Beispieì dafueò isô printf®  Eó heissô  hieò putfmô  unä  deò Aufbaõ deò Formatzeichenkettå  isô  anders®  Iî  eineò neuereî  Versioî  deò  Laufzeitbibliotheë heissô dieså  Funktioî  jetzô printf¬  aí  Aufbaõ  deò Formatzeichenkettå haô sicè  abeò  nichtó  ge aendert. Programme¬  diå globalå Variableî enthielten¬ liefeî nicht¬ dá dieså Variableî ií Assemblertexô aló exterî aufgefuehrô wurdeî unä deò Linkeò dieó nichô aufloeseî konnte®  Einzigå Abhilfeº  Initialisierunç deò ex terneî  Variablen®  Beé grosseî Felderî ginç dadurcè diå Uebersetzungs zeiô erheblicè iî diå Hoehe¬  dá diå temporaereî Fileó unä daó  Assemb ler- unä  Objektfilå entsprechenä grosó ausfielen®  Ií Beispielprogramí sinä sicheò nichô grundloó allå globaleî Variableî  initialisiert¬  ob wohì  lauô Beschreibunç globalå Variablå standardmaessiç miô Nulì  ini tialisierô werden. Beé  deî  beideî Quicksort-Programmeî wurdå waehrenä deó Laufeó  diå zuí Schlusó auszugebendå Zeichenkettå zerstoert® Beé Mamultæ gerieô daó Programí iî einå endloså Schleife® Eingebautå Testó ergaben¬ dasó schoî nocè deí ersteî Durchlauæ durcè diå aeusserå Schleifå diå  Laufvariablå eineî voelliç undefinierteî Werô hatte. Daó  Programí size´ liefertå nichô diå richtigå Filegroesse¬  arbei tetå alsï undefiniert®  Diå Fehlersuchå ergab¬ dasó diå Funktioneî fueò diå gepuffertå Ein- unä Ausgabå daó Fileendå erkennen¬ sobalä eiî CTRL- Ú gefundeî wird®  Fueò Textfileó muesstå eó damiô richtiç funktioniereî unä  sogaò exaktå Wertå liefern®  Diå tatsaechlicheî Wertå wicheî  abeò voî  deò auæ vollå 128-Byte-Bloeckå gerundeteî Groesså uî mehò aló  12¸ Bytes ab. .PA Š4. Ergebnisse 4.1. Uebersetzungszeit: Hieò  isô  eindeutiç deò Compileò voî BÄ Softwarå  aí  besten®  Dieó liegô  daran¬  dasó deò gesamtå Quelltexô iî deî Hauptspeicheò  geladeî unä uebersetzô wird® Diå 2® Phaså deó Compileró wirä nachgeladen¬ wobeé diå  Dateî (einå Arô Zwischencode© ií Hauptspeicheò  verbleiben®  Damiô entfalleî zeitraubendå Diskettenzugriffe¬  waó sicè natuerlicè deutlicè bemerkbaò macht® Damiô isô zwaò diå Quellfilegroesså begrenzt¬ dieó isô abeò nichô problematisch¬  dá mehrerå Quellfileó einzelî uebersetzô unä danî miô deí Linkeò verbundeî werdeî koennen®  Einå weiterå Zeiteinspa runç  wirä  dadurcè erreicht¬  dasó soforô Objektcodå erzeugô wirä  unä somiô deò Assemblerlauæ gesparô wird®  Deò Linkeò isô aucè deò schnell ste¬ dafueò abeò wenigeò leistungsfaehig. Aló  zweitschnellsteò (drei- bió fuenfmaì langsameò aló deò Compileò voî  BÄ  Software© erwieó sicè deò  Aztec-Compiler¬  danacè  folgô  deò SuperSoft-Compileò  unä deò langsamstå isô deò  BUMA-Compiler¬  welcheò sechs- bió fuenfzehnmaì langsameò aló deò voî BÄ Softwarå ist. 4.2. Laufzeit: Hieò  musó natuerlicè etwaó detailierteò auæ diå einzelneî  Testpro grammå eingegangeî werden®  Auó deî Ergebnisseî deò Programmå hanoé unä fiâ  folgt¬  dasó  deò Overheaä beií Funktionsaufruæ beé  SuperSofô  aí geringsteî ist¬ unmittelbaò gefolgô voî BÄ Softwarå unä BUMA® Azteã isô hieò  aí langsamsten®  Diå Parameteruebergabå isô beé BUMÁ aí  schnell sten¬  gefolgô  voî BÄ Softwarå unä SuperSoft®  Azteã laessô sicè  hieò schweò einbezieheî iî deî letzteî Vergleich¬  dá eò beé beideî Program meî starë voî deî andereî dreé Compilerî abweicht. Ií  allgemeineî  erzeugeî  BÄ Softwarå unä  BUMA-à diå  schnellereî Programme®  Azteã unä SuperSoft-à liegeî hieò ungefaehò gleicè unä sinä nichô wesentlicè langsameò aló diå andereî zwei®  Interessanô sinä hieò diå  Programmå fueò diå Matrixmultiplikation¬  dá hieò zweidimensionalå Feldeò auftreten®  Hieò erzeugô SuperSofô deî schnellsteî Code¬  unmit telbaò  gefolgô voî BÄ Software®  Aztec-à liegô ungefaehò  ií  gleicheî Abstanä  wiå beé deî andereî Programmeî dahinter®  BUMA-à isô  erstaun licherweiså dreimaì langsameò aló diå ersteî zwei. Interessanô isô aucè deò Geschwindigkeitsgewinî durcè diå Verwendunç voî  Registervariablen®  BÄ Softwarå unterstuetzô keinå  Registervaria blen®  Beé  deî andereî Compilerî sinä beé komplexereî Funktioneî  (diå aucè  nocè  miô andereî Variableî operieren© wiå iî  mamulô  unä  quicë geringå  Verbesserungeî zõ sehen®  Beé kurzeî Funktionen¬  diå fasô nuò miô eineò Variableî arbeiteî (pointeò unä str© isô beé Azteã unä BUMA-à einå grosså Verbesserunç (fasô nuò diå halbå Zeiô wirä benoetigt)¬  beé SuperSofô  allerdingó keinå Verbesserunç zõ sehen®  (Vielleichô  akzep tierô SuperSofô keinå Zeigeò aló Registervariablen.) Daó Programí zuí Testeî deò gepufferteî Ein- unä Ausgabå lieæ leideò beé  SuperSoft-à nicht®  Beé BUMA-à gaâ eó einigå  Schwierigkeiteî  (s® o.)® Hieò sinä Azteã unä BÄ Software-à gleicè schnell¬ BUMÁ brauchô diå doppeltå Zeit® .PA Š4.3. Codegroesse: Diå relativå Codegroesså (Groesså deó erzeugteî Programmcodes© liegô beé alleî Compilerî iî etwá gleich®  Dá diå Groesså nuò iî volleî CP/M- Sektoreî (jeweiló 12¸ Bytes© bestimmô werdeî konnte¬  isô einå genauerå Aussagå nichô moeglich. Interessanô  isô diå absolutå Codegroesse®  Miô dummù isô diå  unge faehrå Minimalgroesså fueò Programme¬ diå Dateî mitteló printæ ausgebeî (waó ií allgemeineî deò Falì ist© angegeben® Aztec¬ SuperSofô unä BUMA- à bringeî nichtinitialisiertå globalå Variableî miô ií Filå unteò (beé BUMÁ  isô dieså Aussagå nichô ganú korrekt¬  abeò dá eò  nichtinitiali siertå  globalå Variableî nichô verarbeitet¬  musó eò hieò  miô  aufge fuehrô werden)® Damiô steigô diå absolutå Filegroesså betraechtlich® Dá wiå  obeî erwaehnô zõ SuperSofô keinå voí Linkeò verarbeitbarå  Biblio theë  zuò Verfuegunç steht¬  mussteî allå Funktioneî zusammeí verbundeî werden®  Damiô isô diå Groesså seineó Codeó verstaendlich®  Deî  zweit groessteî  Codå erzeugô SuperSoft¬  danacè kommô Azteã unä zuí  Schlusó (miô deò absoluô geringsteî Codegroesse© BÄ Software-C. Diå Unterschiedå beé deò relativeî Groesså beé hanoé sinä dadurcè zõ erklaeren¬  dasó  hieò  diå Bibliotheksfunktioî scanæ unä diå  voî  ihò benoetigteî Funktioneî eingebundeî wurden¬  dereî Groesså beé BÄ  Soft warå wesentlicè kleineò ausfaellô aló beé Azteã unä BUMA-C®  Beé Super Sofô  sinä  sowiesï  allå Funktioneî geladen¬  somiô isô  diå  relativå Codegroesså hieò aí geringsten. 4.4. Sprachumfang: Aztec-C: Aztec-à akzeptierô lauô /1¯ diå vollå Sprachå à (siehå  /3/)®  Lauô /1¯ solì diå Initialisierunç eineó Zeigeró miô eineò Zeichenkettå nichô funktionieren®    Dieó    konntå   nichô   bestaetigô   werden®    Einå Einschraenkung wurde festgestellt. Es sind keine Bitfelder moeglich. BD Software-C: Folgende Abweichungen existieren laut Dokumentation: - keine Typen short int, long int, float und double (Fuer long und float steht je ein Funktionenpaket zur Verfuegung.) - keine explizit deklarierbaren Speicherklassen - keine statischen und Registervariablen - die Komplexitaet von Deklarationen ist beschraenkt - keine Initialisierung moeglich - kein Blockkonzept - externå Variableî muesseî iî alleî Files¬ diå dieså verwendeî wollen¬ in gleicher Reihenfolge und Anzahl definiert werden - sizeof beschraenkt (nicht auf Felder anwendbar) - && und || sind gleichrangig - keine Bitfelder - kein typedef - Beschraenkungen bei switch bzgl. Marken und Fallanzahl - #if beschraenkt - keine Casts (Erzwingen einer Typumwandlung) .PA ŠSuperSoft C: Folgende Abweichungen existieren laut Dokumentation: - kein typedef - keine Bitfelder - statiã  arbeiteô  nichô korrektº  lokalå  static-Variableî  verliereî ihren Wert beim Verlassen der Funktion - long¬  float¬  doublå  bzw®  lonç  floaô  koenneî  iî  Vereinbarungeî verwendeô werden®  Fueò diå Arbeiô miô solcheî Variableî stehô jå eiî Pakeô voî Funktioneî bereit®  Einzigå Operatioî miô dieseî  Variableî ist das Bestimmen ihrer Adresse. - kein parametrisiertes #define und #if - iî Felddeklarationeî sinä nuò begrenztå Ausdrueckå moeglich¬ spezielì kein sizeof und keine geklammerten Ausdruecke - keine Casts - die Makrosubstitution verlaeuft etwas anders als im Standard-C BUMA-C: Lauô  Beschreibunç  existiereî  keinå Abweichungeî  voí  Standard-C® Sogaò  diå  iî  deò  Beschreibunç  nichô  erwaehnteî  Bitfeldeò  werdeî akzeptiert®  Damiô  isô  dieseò Compileò deò  einzige¬  deò  diå  vollå Sprache C verarbeitet. 4.5. Bibliotheken: Aztec-à isô deò einzigå Compiler¬  desseî Bibliotheksfunktioneî volì zõ UNIX-à (siehå /3/© kompatibeì sinä (/1/). BÄ Software-à haô keinå zõ UNIX-à kompatiblå  Bibliothek®  Insbeson derå weicheî read¬  write¬ creaô unä fopeî ab® Diå Bibliotheë isô nichô sehò umfangreich. Diå SuperSoft-C-Bibliotheë isô iî Bezuç auæ maschinennahå E/Á (open¬ close©  unä gepuffertå E/Á (fopen© nichô kompatibel®  Hieò sinä jeweiló leichtå Aenderungeî noetig® Diå Bibliotheë enthaelô vielå UNIX-kompati blå Funktionen. BUMA-à haô keinå zõ UNIX-à kompatiblå Bibliothek®  Wiå  schoî  obeî erwaehnt¬  sinä  diå Funktionsnameî anderó unä diå Wirkunç weichô  aucè voî deî UNIX-C-Funktioneî aâ (insbesonderå creat¬  open¬  fopen¬ getfmô (scanf)¬ putfmô (printf© u® ae.). 4.6. Anwenderfreundlichkeit und Testhilfsmittel: Mitteló SUBÍ kanî jeweiló eiî entsprechendeó Kommandofilå fueò Stan dardfaellå  bereitgestellô werden®  Damiô treteî keinå groessereî  Pro blemå beé mehrpaessigeî Compilerî (SuperSofô unä voò alleí BUMA-C© auf® Beé  Azteã  unä BÄ Software-à isô eiî Bibliothekaò zuò  Verwaltunç  voî Bibliothekeî  vorhanden¬  beé  SuperSoft-à kanî  deò  CP/M-Bibliothekaò LIB8° verwendeô werden® Gleicheó muesstå aucè beé BUMA-à moeglicè sein¬ allerdingó  isô  iî deò Beschreibunç dazõ  nichtó  erwaehnt®  Eventuelì lasseî sicè Bibliothekeî aucè miô entsprechendeî Linkerî aufbauen. .PA Š Aló  einzigeò  Compileò  haô BÄ Software-à eineî  Debugger®  Dieseò symbolischå Debuggeò isô aí Quelltexô orientiert®  Eó lasseî sicè waeh renä deó Programmlaufeó allå Variableî unä ihrå Wertå anzeigeî unä aucè veraendern® Unterbrechungspunktå koenneî auæ Quelltextzeileî unä Anwei sungeî bezogeî gesetzô werden®  Damiô wirä diå Programmentwicklunç  unä besonderó diå Fehlersuchå guô unterstuetzt. Zuò    Anwenderfreundlichkeiô    gehoerô    aucè   diå    Arô    deò Fehlermitteilungen®  Beé BÄ Software¬  SuperSofô unä BUMA-à erfolgô diå Ausgabå deó Filenamenó (ausseò BÄ Software)¬ deò Zeilennummeò unä eineó Fehlertextes®  Beé Azteã erfolgô diå Ausschrifô analog¬  nuò dasó statô deó Texteó einå Fehlernummeò ausgegebeî wird¬ sï dasó maî ersô iî eineò Tabellå  nacè deí Fehlertexô sucheî muss®  Beé Azteã unä SuperSofô wirä ausserdeí  diå  fehlerhaftå  Zeilå  unä  darunteò  eiî  Pfeiì  aî   deò fehlerhafteî   Stellå   ausgegeben®   Hieò  isô  somiô  SuperSofô   deò komfortabelste. 5. Abschliessende Bemerkungen Eó  isô schwer¬  hieò zõ sagen¬  dieseò odeò jeneò Compileò seé  deò Beste®  Eigentlicè  habeî allå ihrå Vor- unä Nachteile®  Maî musó hieò nacè  deí spezielleî Anwendungszwecë fragen®  Fueò diå  Portierunç  voî Softwarå  waerå  sicheò  BUMA-à aí besteî geeignet¬  dá  eò  diå  vollå Sprachå akzeptiert®  Dazõ muesstå abeò ersô einmaì deò Fehler¬  deò beé globaleî  Variableî auftritt¬  beseitigô werden®  Ausserdeí muesstå ihí einå  zõ  UNIX-à kompatiblå Bibliotheë aî diå  Seitå  gestellô  werden® Ausserdeí  scheinô dieseò Compileò beé deò Codeerzeugunç nocè Fehleò zõ machen (s. o.). Somiô  isô fueò Frageî deò Portierunç voî Softwarå zuò Zeiô nuò  deò Aztec-Compileò zõ empfehlen® Beií SuperSoft-Compileò muesseî diå Quell textå ersô modifizierô werden¬  besonderó bzgl®  deò Ein- unä  Ausgabe® Ausserdeí  isô diå Tatsache¬  dasó keinå parametrisierteî #define'ó unä #if'ó moeglicè sind¬ einå starkå Beeintraechtigunç deò Portabilitaet. Gehô eó darum¬  einå einzelnå Aufgabå zõ loesen¬  isô miô Sicherheiô aucè  deò  BÄ  Software-Compileò  zõ  empfehlen¬   wenî  maî  miô   deî Einschraenkungeî   diå   Aufgabå  trotzdeí  loeseî   kann®   Fueò   diå Programmentwicklunç  unä -testunç isô eò wegeî seineò  Geschwindigkeiô beim Uebersetzen und durch den Debugger am besten geeignet. .PA Š6® Literatur /1/ Christopher O. Kern. Five C Compilers for CP/M-80 Byte 8/1983, S. 110 ff. /2/ Christopher O. Kern. Another Look at CP/M-80 C Compilers Byte 6/1984, S. 301 ff. /3/ Brian W. Kernighan, Dennis M. Ritchie. The C Programming Language (Englewood Cliffs, NJ: Prentice-Hall Inc.), 1978.