Eigenen Compiler schreiben
-
Hallo!
Ich wuerde sehr gerne meine eigene Programmiersprache entwickeln. Nichts grosses - nur so zum Spass. Ein Interpreter waere ja kein groesseres Problem (hab ich vor einigen Jahre sogar mal gemacht) - aber wie erstelle ich einen Compiler, der den Code zu einer ausfuehrbaren EXE macht? Gibts da irgendwelche Seiten mit mehr Infos?
Das ganze will ich uebrigens in C++ unter Windows schreiben.
Ich hoffe, ich hab das richtige Forum erwischt.
-
-
Nunja, du musst eben die möglichen Assembler-Mnemonics generieren, und möglichst sinnvoll zusammensetzen. Die kannst du dann durch einen bereits fertigen Assembler jagen (gibt welche, die du als "Backend" für Compiler nutzen darfst), oder du generierst direkt die Maschinencodes. Dann obliegt dir aber auch die Generierung des PE-Headers etc.
-
Der Artikel ist lesenswert.
Wenn du daran scheiterst, daß du keinen Assembler für die Zielplattform findest, und dir die Unterschiede der Architekturen zur Last fallen, kannst du auch einfach C-Code erzeugen. Mit ein bißchen Vorsicht wird der dann auch recht schnell laufen, und C-Compiler gibt's bekanntlich überall.
-
Tip:
der D front-end implementierung bittet einen sehr gut zu verstehenden
Lexer und Parser und ist in c++ implementiert.
-
volkard schrieb:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-194608.html
kommt bei mir "Das gewählte Thema oder der Beitrag existiert nicht."
-
Lexer und Parser schrieb:
der D front-end implementierung bittet einen sehr gut zu verstehenden
Der OP hat ja schon einen Interpreter, also ist anzunehmen, dass er bereits ein Frontend hat. Jetzt braucht er ein Backend. Darüber findet man im Netz aber nicht so viel, glaube ich, zumindest was "richtigen" Assembler- bzw. Maschinencode angeht.
Bleibt C (oder C--) als Backend.
-
supertux schrieb:
volkard schrieb:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-194608.html
kommt bei mir "Das gewählte Thema oder der Beitrag existiert nicht."
-
@ruediger
Sehr interessanter Artikel. Habe den mal kurz etwas ueberflogen. Nur wo eigne ich mir am besten die Assembler-Kenntnisse an? Wuerde das sehr gerne lernen.
Sieht alles in einem nicht besonders kompliziert aus - bis auf den Assembler-Code.
-
Das hier dürfte auch ganz interessant sein:
-
man kann auch die eigene sprache in eine andere (wie zb. C++) überführen. das ist für den anfang womöglich sinnvoller als nebenbei auch noch x86er assembler zu lernen.
viel wichtiger ist doch erstmal überhaupt zu verstehen, wie grammatiken, lexer und parser funktionieren. da gibts auch reichlich tools wie lex/yacc etc. samt tutorials.