Ich habe die Möglichkeit bekommen, an der Universität zu arbeiten und beim Hacken von javac
aus dem OpenJDK. Das Ziel ist es, benutzerdefinierten Quellcode (für "unsere" Programmiersprache in Kombination mit antlr) zu lesen und nicht Java-Bytecode auszuschreiben - der Compiler sollte LLVM-Assemblercode ausgeben. Das wäre meine Aufgabe, aber das Projekt ist so riesig, dass ich nicht weiß, wo oder wie ich anfangen soll zu verstehen, was da vor sich geht. Mir wurde gesagt, ich solle versuchen, den Code zu debuggen und ihn Schritt für Schritt durchzugehen, aber ich würde gerne wissen, ob es irgendeine gute Dokumentation in freier Wildbahn gibt, die mir einen kurzen Durchbruch gibt, um zu verstehen, welche Teile die wichtigsten sind.
Antwort
Zu viele Anzeigen?Sie haben "myprogram.myprogrlang" in "myprogram.llvm" umgewandelt.
Ich sehe nicht die Notwendigkeit, javac zu verwenden / zu hacken. Ich denke, Sie wollen die Compiler-Tools von Java / openjdk verwenden, aber ich denke, das macht nur Ihre Aufgabe schwieriger, anstatt Ihnen zu helfen.
Mein Vorschlag ist, nehmen Sie antlr, lernen, wie es funktioniert, ein Programm in Ihrer Programmiersprache zu parsen, wie ein AST zu generieren, und dann drehen, dass AST-Daten in der LLVM-Bytecode oder Assembler.
In diesem Fall brauchen Sie kein Java.
Also:
[1] Lernen Sie ANTLR-Grammatiken/Regeln für Ihre Programmiersprache
[2] LLVM Bytecode / Assembler lernen
[3] Lernen Sie, wie man die ANTLR-Datenausgabe in LLVM-Dateneingabe umwandelt.