Forum: FPGA, VHDL & Co. Compiler schreiben/anpassen? (FPGA-CPU-Thread)


von AooA (Gast)


Lesenswert?

Es gibt ja aktuell die Diskussion über die FPGA-CPU. Dort könnte man 
einerseits eine bestehende Architektur nutzen, andererseits aber auch 
etwas neues entwickeln.

Einen eigenen Assembler zu bauen, dürfte machbar sein. Aber wie baut man 
sich am besten einen C-Compiler? Soweit ich weiss, gibt es ein paar 
freie Projekte, die an eigene Sprachen angepasst werden könnten. Welche 
eignen sich besonders? Wie sieht es aufwandmässig aus?

Selber schreiben wäre natürlich das andere. Ich habe allerdings gewisse 
Zweifel, ob man in vernünftiger Zeit einen vollständigen und 
fehlerfreien Compiler hinkriegt...

von (prx) A. K. (prx)


Lesenswert?

AooA schrieb:

> Soweit ich weiss, gibt es ein paar
> freie Projekte, die an eigene Sprachen angepasst werden könnten.

Willst du nun einen bestehenden C Compiler eine neue Programmiersprache 
E anpassen? Oder willst du ihn an eine neue Zielarchitektur anpassen? 
Ist nicht ganz die gleiche Sache.

> Selber schreiben wäre natürlich das andere. Ich habe allerdings gewisse
> Zweifel, ob man in vernünftiger Zeit einen vollständigen und
> fehlerfreien Compiler hinkriegt...

Letzteres sicherlich nicht, denn das hat für die üblichen 
Programmiersprachen wohl noch nie jemand geschafft.

Andererseits gibt es Compiler, die etwas übersichtlicher sind als der 
recht grosse GNU Compiler. Ich habe meine Erfahrungen mit dem Portable C 
Compiler gemacht. Der ist nicht mehr ganz neu (70er) und war längere 
Zeit in der Versenkung verschwunden, ist aber mittlerweile renoviert. 
Der ist recht einfach aufgebaut und leicht an registerorientierte 
Maschinen anpassbar (Stack- oder Akkumaschinen mag er nicht so).

von dito (Gast)


Lesenswert?

Schau dir mal das LLVM-Compiler-Framework an. Könnte für dich 
interessant sein.

von AooA (Gast)


Lesenswert?

A. K. schrieb:
> Willst du nun einen bestehenden C Compiler eine neue Programmiersprache
> E anpassen? Oder willst du ihn an eine neue Zielarchitektur anpassen?
> Ist nicht ganz die gleiche Sache.

Da hab ich mich verschrieben. Natürlich meine ich Architektur ;-)

von AooA (Gast)


Lesenswert?

Der Portable C Compiler sieht ziemlich interessant aus. Allerdings habe 
ich keine Ahnung, wie aufwendig die Portierung tatsächlich sein wird. 
Kann jemand etwas dazu sagen?

von Fpgakuechle K. (Gast)


Lesenswert?

Es gibt zum Thema Compilerbau dieses Standardwerk (das "Drachenbuch"):
http://www.amazon.de/Compilers-Principles-Techniques-Access-Gradiance/dp/0321547985/ref=sr_1_6?ie=UTF8&qid=1291896210&sr=8-6

Wie brauchbar ist das für einen CPU-designer?

MfG,

von Hisar (Gast)


Lesenswert?

Drachenbuch habe ich gelesen, das Buch geneignet zu Grundlage, in der 
Praxis kan man nicht anfangen, wenn due ein neue Sprache, Parser 
schreiben willst ANTLR (www.antlr.org) hilft viel.

von (prx) A. K. (prx)


Lesenswert?

AooA schrieb:

> Der Portable C Compiler sieht ziemlich interessant aus. Allerdings habe
> ich keine Ahnung, wie aufwendig die Portierung tatsächlich sein wird.
> Kann jemand etwas dazu sagen?

Schwer zu sagen ohne deinen Kopf aufzuschrauben und reinzusehen. ;-)

Ich das hatte jedenfalls gemacht, wobei ich aufgrund völlig unpassender 
Zielarchitektur (Transputer, d.h. Stack-Architektur) den kompletten 
Codegenerator ersetzte. Bei passender Zielarchitektur ist das eher eine 
Frage, wie lange man braucht um Prinzip der Maschinenspezifikation und 
dessen Details zu verstehen, als eine des Codings. Zumal dieser Compiler 
ziemlich klein ist.

von (prx) A. K. (prx)


Lesenswert?

Fpga Kuechle schrieb:

> Wie brauchbar ist das für einen CPU-designer?

Ungefähr so sinnvoll wie der Tietze-Schenk für einen Compilerbauer. ;-)

Der Drachentöter ist das Standardwerk für Compilerbau. Vor allem, wenn 
man den Compiler komplett selbst bauen will. So konnte man beim 
C++-Compiler von Walter Bright (Zortech, Symantec, Digital Mars) die 
Optimierungsstrategien ziemlich eins zu eins den entsprechenden Kapiteln 
vom Drachentöter zuordnen.

Wenn du den PCC um eine Zielarchitektur bereichern willst, dann ist er 
hingegen nicht zwingend erforderlich.

von (prx) A. K. (prx)


Lesenswert?

PS: Zum PCC gibt es zudem eine Rarität: Einen Text, der dessen 
Arbeitsweise beschreibt. Der ist zwar so alt wie der Compiler selbst und 
damit nicht mehr ganz auf der Höhe der aktuellen Version, aber nach dem 
zu urteilen, was ich vom Code der aktuellen Version gesehen habe, ist 
das kein grosses Problem.

von lil' joe (Gast)


Lesenswert?

dito schrieb:
> Schau dir mal das LLVM-Compiler-Framework an. Könnte für dich
> interessant sein.

Dem kann ich mich nur anschließen. LLVM ist recht einfach anzupassen und 
man bekommt sehr viel Codeoptimierung gratis dazu. :3

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.