Hallo Liste, ich spiele zur Zeit mit dem Gedanken, einen Mikropozessor zu bauen (mit einem FPGA). Da der gcc schon eine Menge Optimierungen macht, moechte ich keinen eigenen Compiler dafuer schreiben. Ich habe mich auf wikipedia und gnu.org schon ein bischen eingelesen, bin aber auf der Suche nach einer Einfuehrung mit einem Titel wie "Creating a gcc compiler for your own instruction set" oder "gcc internals". Gibt es ein solches Buch, oder muss ich mich mit Richard Stallmanns Dokumentation auskommen ?
Gruss
Frank
On Wednesday 20 June 2007 13:38:15 Frank Gerlach wrote:
Ich habe mich auf wikipedia und gnu.org schon ein bischen eingelesen, bin aber auf der Suche nach einer Einfuehrung mit einem Titel wie "Creating a gcc compiler for your own instruction set" oder "gcc internals".
Vermutlich landet man mehr Treffer, wenn man die GCC-eigenen Bezeichnungen verwendet: "frontend" (für die Sprache), "backend" (für die Architektur).
Gibt es ein solches Buch, oder muss ich mich mit Richard Stallmanns Dokumentation auskommen ?
http://rtg.informatik.tu-chemnitz.de/docs/vortraege/def-da-jpar.pdf
Es könnte auch spannend sein, die XML-Ausgabe des Parsebaums weiter zu verarbeiten (GCCXML).
Josef
P.S. Das Thema klingt interessant. Hättest du Interesse, es auf dem LIT vorzustellen und dabei vielleicht ein paar Mitstreiter zu gewinnen?
Josef Spillner wrote:
On Wednesday 20 June 2007 13:38:15 Frank Gerlach wrote:
Ich habe mich auf wikipedia und gnu.org schon ein bischen eingelesen, bin aber auf der Suche nach einer Einfuehrung mit einem Titel wie "Creating a gcc compiler for your own instruction set" oder "gcc internals".
Vermutlich landet man mehr Treffer, wenn man die GCC-eigenen Bezeichnungen verwendet: "frontend" (für die Sprache), "backend" (für die Architektur).
„porting“ scheint mir auch ein gutes Stichwort zu sein. Das brachte mich u.a. auf
http://archiv.tu-chemnitz.de/pub/2004/0107/index.html
(ungelesen) vielleicht hilfts weiter.
Tobias
Am Mittwoch, den 20.06.2007, 13:38 +0200 schrieb Frank Gerlach:
Hallo,
Ich habe mich auf wikipedia und gnu.org schon ein bischen eingelesen,
Wikipedia fand ich ganz gut um sich mal einen Überblick zu verschaffen, Compilerbau ist allerdings ein nichttriviales Thema der Informatik.
"Creating a gcc compiler for your own instruction set"
Als Standardwerk gibt es das sogenannte "Drachenbuch" von Aho, Seti, Lahm, Ullmann. Addison Wesley - Pearson. Neue Auflage Herbst 2006, ISBN-13: 978-0-321-49169-5. Der Buchhandel neben Karstadt brauchte 3 Tage zur Lieferung und wollte 83 Euronen von mir. Ältere Ausgeben gibt es in de Uni-Bibliothek bzw. HTW-Bibliothek.
Bei Amazon mal "Compilerconstruction" eingeben, liefert einiges zu Tage. Vieles ist dann schon schwere Kost. Z.B. ist http://www.amazon.de/Engineering-Compiler-Keith-D-Cooper/dp/1558606998/ref=p... kein Einsteigerbuch. Und ttp://www.amazon.de/Optimizing-Compilers-Architectures-Dependence-based-Approach/dp/1558602860/ref=sr_1_19/303-4946535-3829800?ie=UTF8&s=books-intl-de&qid=1182349322&sr=8-19 ebenfalls nicht.
"gcc internals"
Beschrieb im 3er-gcc vorallem die RTL-Language. Jetzt ist vor allem "gimple" ein Dialekt einer Zwischensprachen dazugekommen. Hier geht es vor allem um maschinen- und Sprachunabhängige Optimierungen.
Eine 3.5-Entwicklerversion hatte es mit Optimierungen mal zu gut gemeint und Zählvariablen in Schleifen "wegoptimiert". Fazit: suboptimal ;-)
Für dich ist warscheinlich das Schlagwort "backend" relevant, allerdings musst du genau hinsehe, der aktuelle gcc hat mit einem 3-er gcc bis auf den Namen nichts mehr gemein. Das ist _komplett_ neuer Code.
Gibt es ein solches Buch, oder muss ich mich mit Richard Stallmanns Dokumentation auskommen ?
Vielleicht das: http://gcc.gnu.org/projects/documentation.html#RTL
Jan
Am Mittwoch, den 20.06.2007, 16:31 +0200 schrieb Jan Rakelmann:
Nachtrag:
"backend"
unter http://www.cs.princeton.edu/software/lcc findet man einen kleinen ANSI-C-Compiler welcher als Architekturen Mips 3000, Sparc und i386 macht. Der komplette Compiler ist sehr schön beschrieben.
Solche Dinge wie "-Wstack-protector" kennt der natürlich nicht.
Danach kannst du ja das Backend-Wissen auf den gcc loslassen...
Jan
lug-dd@mailman.schlittermann.de