Ich las hier und dort über llvm, die verwendet werden können, um den Schmerz der Cross-Plattform-Kompilierungen in C++ zu erleichtern, ich versuchte, die Dokumente zu lesen, aber ich verstand nicht, wie kann ich Ich habe versucht, die Dokumente zu lesen, aber ich habe nicht verstanden, wie ich es im wirklichen Leben Entwicklungsprobleme kann jemand bitte erklären Sie mir in einfachen Worten, wie kann ich es verwenden?
Antworten
Zu viele Anzeigen?Das Schlüsselkonzept von LLVM ist eine Low-Level-"Zwischen"-Darstellung (IR) Ihres Programms. Diese IR befindet sich etwa auf der Ebene von Assembler-Code, enthält aber mehr Informationen, um die Optimierung zu erleichtern.
Die Stärke von LLVM liegt in seiner Fähigkeit, die Kompilierung dieser Zwischendarstellung für eine bestimmte Zielmaschine aufzuschieben, bis kurz bevor der Code ausgeführt werden muss. Ein Just-in-Time (JIT)-Kompilierungsansatz kann für eine Anwendung verwendet werden, um den Code zu erzeugen, den sie benötigt, kurz bevor sie ihn braucht.
In vielen Fällen verfügen Sie zum Zeitpunkt der Ausführung des Programms über mehr Informationen als in der Zentrale, so dass das Programm erheblich optimiert werden kann.
Für den Anfang könnten Sie ein C++-Programm in eine einzige Zwischendarstellung kompilieren und es dann von dieser IR aus für mehrere Plattformen kompilieren.
Sie können auch die Kaleidoscope-Demo ausprobieren, die Sie durch die Erstellung einer neuen Sprache führt, ohne dass Sie tatsächlich einen Compiler schreiben müssen, sondern nur die IR.
In leistungskritischen Anwendungen kann die Anwendung im Wesentlichen ihren eigenen Code schreiben, den sie ausführen muss, kurz bevor sie ihn ausführen muss.
Warum gehst du nicht zum LLVM Website und sehen Sie sich dort die gesamte Dokumentation an. Sie erklären sehr detailliert, was LLVM ist und wie man es benutzt. Zum Beispiel haben sie eine Erste Schritte Seite.
Es ist wichtig zu beachten, dass eine Reihe von Informationen über das Ziel aus den System-Header-Dateien stammen, die Sie beim Kompilieren verwenden. LLVM nicht aufschieben Auflösung Dinge wie "Größe des Zeigers" oder "Byte-Layout", so dass, wenn Sie mit 64-Bit-Header für eine Little-Endian-Plattform kompilieren, können Sie nicht verwenden, dass LLVM-Quellcode zu einem 32-Bit-Big-Endian-Assembly-Ausgabe-Pater Ziel.
Es gibt ein gutes Kapitel in einem Buch, in dem alles gut erklärt wird: www.aosabook.org/en/llvm.html