Ich bin Bootstrapping ein Programmiersprache Compiler auf LLVM. Momentan schreibe ich meistens einen Compiler für eine Teilmenge von C, die sich selbst kompiliert. Wenn ich damit fertig bin, werde ich meine Sprache weg von C booten und die Selbstkompilierung beibehalten, während ich fortfahre.Bootstrapping einer Sprache auf LLVM
Da der Compiler sich selbst kompiliert, müssen alle Features von C, die ich verwende, implementiert werden. Es ist also ein konstantes Gleichgewicht: Wenn ich zu viele Funktionen verwende, muss ich mehr implementieren, als ich möchte, aber wenn ich nicht genügend Funktionen implementiere, wird es schwierig sein, Code zu schreiben.
Ein solches Merkmal ist die LLVM-Bindungen. Das Generieren einer LLVM-Zwischendarstellung ohne die LLVM C-Bindungen ist schwierig. Wenn ich jedoch die LLVM-Bindungen verwende, muss ich sie wieder implementieren, wenn ich von C abzweige.
Ich habe hier einige Schwierigkeiten, also suche ich nach alternativen Lösungen. Irgendwelche Ideen?
Was Sie in Ihrem complier schreiben? C? Sie verwenden LLVM dann für die Kompilierung des Maschinencodes? –
Mein Compiler wird in die Teilmenge von C geschrieben, die er kompiliert. Entschuldigung, das habe ich nicht gut erklärt. Mein aktueller Plan ist, LLVM Zwischenrepräsentation in eine Datei zu schreiben und dann LLVM zu verwenden, um es zu kompilieren, aber das ist kompliziert, und ich suche nach einer saubereren Lösung. – Imagist
LLVM ist übrigens eine gute Wahl für das Backend. Ich hatte großes Glück damit. –