2016-11-25 4 views
4

Warum bevorzugen Menschen LLVM IR und wie genau unterscheidet es sich von der GCC IR? Ist die Zielabhängigkeit hier ein Faktor?Wie unterscheidet sich GCC IR von LLVM IR?

Ich bin ein kompletter Neuling für Compiler, und war nicht in der Lage, etwas Relevantes zu finden, selbst nach vielen Stunden der Suche nach einer Antwort. Alle Einsichten wären hilfreich.

+1

Der größte praktische Unterschied ist, dass für LLVM eine modulare API verfügbar ist. Und für GCC haben Entwickler alles in ihrer Macht stehende getan, um sicherzustellen, dass eine solche API nicht verfügbar gemacht werden kann. Aus diesem Grund ist LLVM eine Lösung, wenn Sie möchten, dass ein IR eingesteckt wird. –

Antwort

5

Sie sind nicht dass anders - beide sind ziemlich Standard CFG + Drei-Adressen-Code (zumindest, wenn wir über die Mitte-Ende sprechen und berühren nicht den codegen Teil). Aber LLVM IR ist wohl besser strukturiert, besser definiert, weniger fest an die Compiler-Implementierung gebunden und hat eine bessere C++ API im Vergleich zum Gimple von GCC. Dies ermöglicht eine einfachere Verarbeitung, Transformation und Analyse, wodurch es heutzutage sowohl für den Compiler als auch für andere verwandte Tools zur Wahl steht.

Verwandte Themen