Ich arbeite zur Zeit in einer Programmiersprache für Haustiere (zu Lernzwecken) und habe im letzten Jahr eine Menge Forschung betrieben, und ich denke, es ist Zeit, endlich anzufangen Modellierung der Konzepte einer solchen Sprache. Zuallererst möchte ich, dass es zu einer Zwischenform wie JVM oder .NET-Bytecode kompiliert wird, wobei das Ziel eine Multiplattform-/Architekturkompatibilität ist. Zweitens möchte ich, dass es schnell ist (ich habe auch viele andere Dinge im Sinn, aber es ist nicht der Zweck dieses Themas, diese zu diskutieren).LLVM als virtuelle Maschine verwenden - multiplatform und multiarchitecture coding
Die besten Optionen, die mir in den Sinn kamen, waren: Compile zu JVM-Bytecode und verwenden OpenJDK als Laufzeitumgebung, Compile zu .NET-Bytecode und verwenden Mono als Laufzeitumgebung, Compile zu LLVM IR und verwenden LLVM als Laufzeitumgebung .
Wie Sie sich vielleicht vorgestellt haben, habe ich LLVM gewählt. Warum? weil es blitzschnell ist. Ich habe einen kleinen Benchmark mit dem C++ N-Body-Code gemacht, und erreichte 7s in meinem Rechner mit lli jitted IR, im Gegensatz zu 27s mit clan nativem kompilierten Code (ich weiß, dass clang zuerst IR dann Maschinencode macht).
Also, hier ist meine Frage: Gibt es eine weitervertreibbare Version des LLVM-Basis-Toolset (ich brauche nur lli), dass ich verwenden kann? Oder muss ich meine eigenen zusammenstellen? Wenn Letzteres, können Sie mir irgendwelche Hinweise zur Verfügung stellen, wie man es macht? Wenn ich es wirklich tun muss, denke ich daran, sie von meinem Rechner (Intel Mac) zu kompilieren und einige Installer zu erstellen (zB .msi für Windows, .rpm und .deb für populäre Linux Distributionen und .pkg für Macs). Denken Sie daran, ich brauche nur eine minimale Teilmenge von LLVM, so dass diese Teilmenge in der Lage ist, sich wie eine VM zu verhalten, indem Sie "lli" verwenden. Die eigentliche Frage ist, wie man LLVM als typische virtuelle Maschine einsetzen kann.
Das LLVM-Projekt hat eine permissive Lizenz; Es klingt, als müssten Sie nur die ** Core Libraries ** verteilen. –
@RobertHarvey Das ist, was ich dachte, kaufen Ich habe keine Ahnung, wo ich anfangen soll. – Salvia
Es versteht sich von selbst, dass Sie die Dokumentation sowieso lesen müssen, und da Sie Ihre Entscheidung bereits getroffen haben ... bin ich begeistert, selbst mit LLVM zu arbeiten; Leider habe ich die Dokumentation noch nicht gelesen. –