Welche Vorteile und Nachteile hat die Verwendung von LLVM IR vs C für eine Zielsprache beim Schreiben eines Compilers? Ich weiß, dass beide verwendet werden, und ich stelle mir vor, dass der endgültige Maschinencode ähnlich wäre, wenn ich clang verwenden würde, um das C zu kompilieren. Was also sind andere Dinge zu beachten?
Ich habe LLVM IR für einige Compiler-Backends verwendet und habe mit Compilern gearbeitet, die C als Backend verwenden. Eine Sache, die ich gefunden habe, die dem LLVM IR einen Vorteil gab, ist, dass es getippt wird. Es ist schwierig, vollständig schlecht geformte Ausgaben zu erzeugen, ohne Fehler von den LLVM-Bibliotheken zu bekommen.
Es ist meiner Meinung nach auch einfacher, eine enge Korrelation zwischen dem Quellcode und dem IR für das Debugging zu halten.
Außerdem erhalten Sie alle coolen LLVM-Befehlszeilenwerkzeuge zur Analyse und Verarbeitung der IR, die Ihr Front-End aussendet.
LLVM Vorteile:
tcc
), aber es ist eine viel weniger robuste und portable Option. tcc
). LLVM Nachteile:
Architekturen und Betriebssysteme, für die es offensichtlich keine CLANG gibt oder für die es sich in einem experimentellen Zustand befindet.
C wird mehr akzeptiert, aber LLVM IR ermöglicht Ihnen, die LLVM-Engine mit einem Löffel zu versorgen. Nicht alle Pfade zu IR sind gleich.
Tags und Links llvm compiler-construction code-generation llvm-ir