Frage

Hat Erfahrung jemand mit LLVM , llvm-gcc oder Clang ?

Die ganze Idee hinter llvm scheint mir sehr interessant und ich bin daran interessiert, zu sehen, wie er ausführt. Ich will nur nicht, eine ganze Menge Zeit in Anspruch Dump in die Werkzeuge heraus versuchen, wenn die Werkzeuge für die Produktion nicht bereit sind.

Wenn Sie Erfahrung mit den Werkzeugen haben, was denken Sie von ihnen? Welche größere Einschränkungen haben Sie gestoßen? Was sind die größten Vorteile?

Vielen Dank!

War es hilfreich?

Lösung

Ich habe ein anfängliches Spiel um mit LLVM und arbeite durch dieses Tutorial hat links ich sehr, sehr aufgeregt über es ist Potenzial; die Idee, dass ich es verwenden, um eine JIT in einer App mit relativer Leichtigkeit zu bauen hat mich begeistert.

Ich habe nicht tief genug gegangen Lage sein, jede Art von nützlicher Meinung bieten auf seine Grenzen, Stabilität, Leistung und ähnliches. Ich verstehe, dass es in jeder Hinsicht gut ist, aber das ist rein Hörensagen.

Andere Tipps

Ich kann nicht sagen, genug gute Dinge über LLVM. Es ist so einfach, mit im Vergleich zu anderen Compiler Projekten zu arbeiten, ich ausgesehen haben. Ich bin kein Compiler Kerl, aber wenn ich mit einem gewissen Einschränkung von LLVM frustriert oder Klappern es ist in der Regel recht einfach zu tauchen und verändern.

Wir (Nate Begeman, ich und ein paar andere) schrieb das PPC-Backend ohne wirkliche Erfahrung in der Compiler-Design, aber es sah einfach genug, dass Nicht-Experten ihr nähern könnte. Wir waren ziemlich vertraut mit PPC Montage, aber es war immer noch ziemlich unglaublich wir es geschafft, LLVM-gcc zu bekommen PPC-Code in ein paar Wochen von unserer Freizeit ausgibt. Auf jeden Fall eines der befriedigendsten Hallo Welt ich je zusammengestellt haben.

Ich habe für viele Monate auf und ab jetzt mit LLVM gespielt. Ich schrieb zwei OCaml Journal Artikel über die Verwendung von LLVM aus der OCaml Programmiersprache. Das ist besonders interessant, weil die OCaml Sprache zum Schreiben von Compilern ideal ist und hat eine Fülle von leistungsfähigen und ausgereiften Tool und Bibliotheken für das Parsen und so weiter.

Insgesamt meine Erfahrung war äußerst positiv. LLVM tut, was es auf dem Zinn sagt und ist sehr einfach zu bedienen. Die Leistung des generierten Codes ist hervorragend. Eines der Programme, die ich schrieb, war ein einfaches kleines Brainf * ck-Compiler, der einige der am schnellsten ausführbaren Dateien von jedem Compiler I getestet (einschließlich GCC).

erzeugt

Ich habe nur zwei gripes mit LLVM. Erstens verwendet es () abbrechen, wenn etwas schief geht, anstatt eine Ausnahme zu heben. Dies war eine bewusste Designentscheidung von ihren Autoren, die alle Verwendungen von Ausnahmen von LLVM zu entfernen streben, aber es macht es unmöglich, Backtraces von OCaml zu erhalten, wenn versucht, einen Compiler zu debuggen, die LLVM verwendet: Ihr Programm stirbt nur mit einer Text Erklärung von LLVM aber keine Ahnung, wo der Fehler aufgetreten ist in der Quelle. Zweitens kompilierte Bibliothek LLVM ist monströs groß (20Mb). Ich nehme an, dies auf das aufblasen zurückzuführen ist von C ++ entstanden, aber es macht Kompilation quälend langsam.

EDIT: Meine Arbeit auf LLVM gipfelte in der Schaffung eines leistungsfähigen High-Level-Garbage Collection virtuellen Maschine. Kostenloser Download hier und überprüfen Sie die entsprechenden Benchmarks (wow!). @ Alex:. Ich werde diese BF Compiler so schnell wie möglich für Sie irgendwo aufstehen

Sie haben gefragt, über Werkzeuge und ich möchte erwähnen, dass es LLVM-Plugin für Eclipse CDT (für Windows, Linux und Mac). Es integriert LLVM schön zu IDE und der Benutzer muss nichts über LLVM wissen. Build-Taste drückt, ist genug .bc und ausführbare Dateien (und Zwischendateien auf dem Hintergrund nicht sichtbar für den Anwender) zu erzeugen.

Die neueste Version ist über offizielle Eclipse-Update-Website zur Verfügung: http://download.eclipse.org/releases / mars

Es ist unter Programmiersprachen und trägt den Namen "C / C ++ LLVM-Compiler Familie baut Support".

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top