EMZETT.
Login

LLVM

Kurz: LLVM ist ein Baukasten für Compiler: Viele Sprachen übersetzen in dieselbe Zwischendarstellung, und LLVM optimiert sie und erzeugt Maschinencode für viele Prozessoren.

Genauer: Statt für jede Sprache und jeden Prozessor einen eigenen kompletten Compiler zu bauen, trennt man Vorderseite (Sprache) und Rückseite (Prozessor) durch die gemeinsame LLVM-IR.

Im Detail

  • Aufbau: Frontend (zum Beispiel Clang für C/C++, rustc für Rust, Swift) → LLVM-IR → Optimierungsdurchläufe → Backend (x86, ARM, RISC-V, WebAssembly, GPU).
  • IR: Eine typisierte, einfache Zwischensprache in SSA-Form (jede Variable wird nur einmal zugewiesen), was Optimierungen erleichtert.
  • Optimierungen: Inlining, Schleifenoptimierung, Vektorisierung (SIMD), Konstantenfaltung.
  • Nebenprodukte: Clang-Tidy, Sanitizer (AddressSanitizer), der Debugger LLDB.
  • Vorteil: Neue Sprachen entstehen schneller, neue Prozessoren erhalten sofort viele Sprachen.
  • Ausblick: Alternativen wie GCC bleiben wichtig, und manche Sprachen nutzen eigene Backends (Go).

Siehe auch: Zwischendarstellung und Compiler-Optimierung