Zum Forum
Passwort vergessen?
Noch keinen Account?
lexikon
Hauptseite
Zufälliger Artikel
Diskussion
Diskussion : GNU Compiler Collection
Links
Forum
Portale
Reisen
Versicherung
Inhaltsverzeichnis
Hauptmenü
Home
Editorial
Bildung
E-Learning
Fremdsprachen
Magazin
Wissen
Wörterbücher
Enzyklopädien
Expertendienste
Wissenswertes
Praktische Ratgeber
--------------------------
Biologie
Chemie
Computer
Film/ Theater
Geografie
Geschichte
Jura
Kunst
Literatur
Mathematik
Medizin
Musik
Philosophie
Physik/ Astronomie
Politik
Psychologie
Religionen
Sport
Umwelt
Wirtschaft
Reisen
Lexikon
Versicherung
Suchen
Schnellsuche
Suchmaschinen
Metasuchmaschinen
Webkataloge
News
Treffpunkt
Chat
Forum
Suche
Schnellsuche
Sitemap
Kontakt
Impressum
GNU Compiler Collection
Stichpunkte
Allgemein
GCC ist eine Abkürzung aus dem IT-Bereich für eine Sammlung von Programmen mit der ursprünglichen Bedeutung GNU C Compiler
hat GCC (Großbuchstaben) inzwischen die Bedeutung GNU Compiler Collection (engl. für GNU Compilersammlung)
Da GCC inzwischen aber mehr als nur einen C-Compiler beinhaltet
"Verbergen") 1 Überblick 2 Struktur 2.1 Frontends 2.2 Backend 3 Siehe auch 4 Weblinks [Bearbeiten]
Die Bezeichnung gcc (Kleinbuchstaben) steht immer noch für den C-Compiler. Inhaltsverzeichnis showTocToggle("Anzeigen"
Überblick
Die Sammlung enthält Compiler für die Programmiersprachen C
Objective-C
Java
Fortran
C++
Treelang und Ada
Die Compiler-Sammlung unterliegt den Bedingungen der GPL
Sie gehört zum Handwerkzeug jedes Computerbenutzers
quelloffene Software selber kompiliert
der seine freie
Die erste öffentliche Version (0.9) des GCC wurde am 22
März 1987 von Richard Stallman für das GNU-Projekt freigegeben (Version 1.0 erschien am 23
Mai desselben Jahres) und wird heute von Programmierern auf der ganzen Welt weiterentwickelt
Die Erweiterung des C-Compilerpakets zur Compiler-Collection erfolgte im Rahmen des EGCS-Projektes
das eine Weile parallel zum GCC existierte und schließlich zum offiziellen GCC wurde
GCC ist ein umfangreiches Projekt
Es besteht aus über 25.000 Dateien mit über 2
1 Millionen Zeilen Code
darunter GNU/Linux
NextStep
Mac OS X
und BeOS
BSD
GCC wird von einer Reihe von Systemen als Standard-Compiler benutzt
Er wurde auf mehr Systeme und Rechnerarchitekturen portiert als jeder andere Compiler und bietet sich besonders für Betriebssysteme an
die auf verschiedenen Hardware-Plattformen laufen sollen
einige Plattformen offiziell als primäre und andere als sekundäre Evaluationsplattformen zu bezeichnen
Das GCC-Projekt entschied sich
Vor jeder Veröffentlichung einer neuen Version werden insbesondere diese beiden Gruppen getestet
für die GCC Programme erzeugen kann
Zu den Prozessoren
unter Red Hat Linux) ARM-Architektur (sekundär
sekundär unter Linux) SuperH Sun SPARC (primär unter Solaris
gehören (primäre und sekundäre Evaluationsplattformen sind markiert): Alpha (primär
unter Linux) H8/300 S/370
S/390 x86 und x86-64 (primär unter Linux und FreeBSD) IA-64 "Itanium" Motorola 68000 Motorola 88000 MIPS-Architektur (primär unter IRIX) PA-RISC (primär unter HP-UX) PDP-11 PowerPC (primär unter AIX
sekundär unter Linux) VAX Dazu kommen noch eine Reihe von Prozessoren aus dem embedded-Bereich
wie z.B
DSP16xx
NS32K
C4x
M32R
ROMP
MCORE
und Xtensa. [Bearbeiten]
Motorolas 68HC11
IP2000
MN10200
CRIS
A29K
ARC
FR-V
Intel i960
MN10300
Stormy16
FR-30
V850
MMIX
D30V
Struktur
Das externe Interface des GCC entspricht dem eines Standard-Unix-Compilers
Der Benutzer ruft ein Hauptprogramm mit dem Namen gcc auf
den entsprechenden Sprach-Compiler aufruft
die in den Eingabedateien vorliegende Programmiersprache feststellt
das Kommandozeilen-Argumente interpretiert
um ein komplettes Programm zu erhalten
dem Assembler dessen Ausgabe übergibt und zum Schluss evtl. den Linker aufruft
das Quellcode entgegen nimmt und Assemblersprache produziert
Jeder Sprach-Compiler ist ein separates Programm
Alle haben eine vergleichbare interne Struktur: Ein sprachabhängiges Frontend parst die Sprache und erzeugt einen abstrakten Syntaxbaum
das den Baum in GCCs Register Transfer Language (RTL) überführt
verschiedene Codeoptimierungen durchführt und zum Schluss Assemblersprache erzeugt
der an ein Backend übergeben wird
Der dazu verwendete Algorithmus basiert auf Arbeiten von Jack Davidson und Chris Fraser zum Pattern Matching
Fast alle Bestandteile des GCC sind in C geschrieben
das zum größten Teil in Ada geschrieben ist. [Bearbeiten]
Eine Ausnahme bildet das Ada-Frontend
Frontends
Frontends müssen Bäume produzieren
die vom Backend verarbeitet werden können
bleibt ihnen überlassen
Wie sie dies erreichen
andere verwenden handgeschriebene
Einige Parser benutzen Yacc-ähnliche Grammatiken
rekursive Parser
Bis vor kurzem war die Baumrepräsentation des Programms nicht völlig vom Zielprozessor unabhängig
Die Bedeutung eines Baums konnte für unterschiedliche Sprachfrontends unterschiedlich sein
und Frontends konnten ihren eigenen Baumcode zur Verfügung stellen
wurden zwei neue Formen von sprachunabhängigen Bäumen eingeführt
Mit dem Tree-SSA-Projekt
das in die neue Version GCC 4.0 integriert wird
Diese neuen Baumformate wurden GENERIC und GIMPLE getauft
indem ein temporärer sprachabhängiger Baum nach GENERIC konvertiert wird
Parsing wird nun durchgeführt
von der ausgehend eine Reihe neuer sprach- und architekturunabhängiger Optimierungen durchgeführt werden können
Der so genannte "Gimplifier" überführt diese komplexe Form in die SSA-basierte GIMPLE-Form
Optimierung an Bäumen passt eigentlich nicht in das Schema von "Frontend" und "Backend"
da sie nicht sprachabhängig ist und kein Parsen beinhaltet
Die GCC-Entwickler haben diesem Teil des Compilers daher den Namen "Middleend" gegeben
Zu den gegenwärtig am SSA-Baum durchgeführten Optimierungen gehören Dead Code Elimination
Sparse Conditional Constant Propagation
und Scalar replacement of Aggregates
Global Value Numbering
Partial Redundancy Elimination
wie sie der Intel-Compiler anbietet
Array-basierende Optimierungen wie zum Beispiel automatische Vektorisierung
werden gegenwärtig entwickelt. [Bearbeiten]
Backend
Wortgröße und Aufrufkonventionen definiert werden
mit denen zum Beispiel die Endianness
Das Verhalten des GCC-Backends wird teilweise durch Präprozessor-Makros und architekturspezifische Funktionen bestimmt
Unter Verwendung dieser Informationen generiert das Backend die Register Transfer Language (RTL)
Obwohl GCCs RTL dem Namen nach prozessorunabhängig ist
ist die Sequenz an abstrakten Instruktionen daher bereits an das Ziel angepasst
Die Art und Anzahl der vom GCC an der RTL durchgeführten Optimierungen werden mit jeder Compiler-Version weiterentwickelt
Seit der kürzlichen Einführung globalen SSA-basierten Optimierungen an GIMPLE-Bäumen haben die RTL-Optimierungen leicht an Bedeutung verloren
da in der RTL-Repräsentation des Programms weit weniger der für viele Optimierungen wichtigen High-Level-Informationen enthalten sind
wobei Daten aus Strukturen verwendet werden
die den Befehlssatz des Ziels beschreiben
In einer "Reload"-Phase werden abstrakte Pseudo-Register durch echte Maschinenregister ersetzt
Diese Phase ist recht kompliziert
da die verschiedenen Eigenheiten der jeweiligen Zielarchitektur hier besonders berücksichtigt werden müssen
Die letzte Phase ist relativ unspektakulär
die die Instruktionen spezifizieren. [Bearbeiten]
Aus der bereits recht maschinennahen Umsetzung der RTL wird Assemblercode generiert
indem die Namen von Registern und Adressen in Strings umgesetzt werden
Siehe auch
GCC XML Node Introspector Plattformunabhängigkeit Free Software Foundation GNU LLVM DISTCC CCACHE MinGW Cygwin OpenWatcom [Bearbeiten]
Weblinks
gcc.gnu.org - Die offizielle GCC-Startseite Kurzanleitung für den GCC (http://www.lcs-chemie.de/c_comp.htm) Dieser Artikel basiert auf einer Übersetzung des Artikels en:GNU Compiler Collection aus der englischen Wikipedia
Version vom 31
Juli 2004 en:GNU Compiler Collection eo:GCC es:GCC fr:GNU compiler collection ja:GNUコンパイラコレクション pl:Gcc ru:GCC
Dieser Artikel basiert auf dem Artikel
GNU Compiler Collection
aus der freien Enzyklopädie
wikipedia
und steht unter der
GNU Lizenz für freie Dokumentation
. In der wikipedia ist eine
Liste der Autoren
verfügbar.
Transrapid
Europäische Union
Überhangmandat
Rahmenrassel
Vinca rosea
Ländervorwahl
Wirksamkeit
Medizinische Wirksamkeit
[ Zurück ]
Inhalt Lexikon:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
1
2
3
4
5
6
7
8
9
Chat
|
Lexikon
|
Reisen
|
Versicherung
|
Forum
|
Kontakt