Portable C Compiler

Portable C Compiler
Basisdaten

Entwickler PCC Team
Aktuelle Version 1.1.0
(10. Dezember 2014)
Betriebssystem UNIX, OpenBSD, NetBSD, GNU/Linux, u. a.
Programmier­sprache C
Kategorie Compiler
Lizenz BSD
pcc-Website

Der Portable C Compiler (auch als pcc und pccm – portable C compiler machine – bekannt) ist einer der ersten Compiler für die Programmiersprache C. Er wurde ab Mitte der 1970er Jahre[1] von Stephen C. Johnson, Angestellter der Bell Labs, entwickelt und basiert in Teilen auf Arbeiten von Alan Snyder aus dem Jahre 1973.[2][3]

Geschichte

pcc war für seine Zeit prägend, da er einer der ersten Compiler war, die einfach angepasst werden konnten, um Maschinencode für verschiedene Architekturen zu erzeugen. Zu Beginn der 1980er basierte die Mehrheit der C-Compiler auf pcc;[4] die Lebensdauer von pcc war überaus lang – so wurde er 1990 noch mit 4.3BSD-Reno ausgeliefert – bis schließlich mit Auslieferung von 4.4BSD auf den GNU C Compiler umgestellt wurde.

Die wesentlichen Eigenschaften und auch maßgeblich für den Erfolg von pcc sind Plattformunabhängigkeit und gute Möglichkeiten des Debuggens:

  • Das maßgebliche Design des Compilers wurde so ausgelegt, dass nur wenige Teile seiner Quellen maschinenspezifisch waren.
  • Er ist sehr unempfindlich gegenüber Syntaxfehlern und erstellt keine ungültigen Programme.
  • Er isoliert maschinenspezifische Programmteile, die manuell in Assembler des jeweiligen Zieles programmiert werden können.
  • Bereits der erste Compilerdurchlauf war selbstoptimierend.

Alle diese Eigenschaften waren zur damaligen Zeit völlig neu; der erste C-Compiler (geschrieben von Dennis Ritchie) nutzte rekursiven Abstieg, war stark an die Architektur der PDP-11 gebunden und benötigte einen weiteren, maschinenspezifischen Durchlauf zur Optimierung des zu erzeugenden Codes. Im Gegensatz dazu stand Johnsons Multi-Pass-Compiler, der Speicherzugriffe der erzeugten Programmteile analysierte und Code erzeugte, der ein Minimum an Speicherzugriffen aufwies.

Spätere Entwicklung

Noch nach der Jahrtausendwende erlebte pcc eine Art Renaissance. Basierend auf den Arbeiten von S. C. Johnson entwickelt ein Team unter Führung von Anders Magnusson den Compiler weiter und ersetzte dabei einen Großteil des Codes; pcc unterstützt mittlerweile C99 und steht unter der BSD-Lizenz. Größere Aufmerksamkeit fanden diese Bemühungen damals bei den Entwicklern von OpenBSD, die den bisher verwendeten GNU C Compiler vor allem aus Gründen der Qualitätssicherung und lizenzrechtlicher Bedenken ersetzen wollten.[5]

Literatur

Einzelnachweise

  1. Stephen C. Johnson: A portable compiler: theory and practice. 1978, doi:10.1145/512760.512771
  2. A. Snyder: A portable compiler for the language C. (Memento des Originals vom 5. September 2006 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.lcs.mit.edu 1975
  3. Stephen C. Johnson: A Tour Through the Portable C Compiler. 1981
  4. Dennis M. Ritchie: The Development of the C Language.
  5. Jem Matzan: More on OpenBSD's new compiler. (Memento vom 17. Oktober 2007 im Internet Archive) The Jem Report, 15. Oktober 2007