Low Level Virtual Machine
Low Level Virtual Machine (LLVM) är en infrastruktur för kompilering. LLVM är skrivet i C++ och är designat för att utföra optimeringar vid kompilering, länkning, och körning av program, oberoende av programspråk. Trots att LLVM från början var skrivet för C och C++ så har den språkoberoende designen lett fram till frontends till flera olika språk, så som D, Objective-C[1], Java bytekod[2], Haskell[3] och Fortran[1] för att nämna några.
Beskrivning
[redigera | redigera wikitext]LLVM fungerar som en backend för en kompilator. Dess input är ett program representerat på en så kallad intermediate form från kompilatorn, och har som output en optimerad version av inputen, men kan också användas för att generera maskinkod som kan användas vid länkning av en binär. LLVM accepterar även program i den form GCC använder internt, och kan således användas till flera av de kompilatorer som innefattas i GCC-projektet. LLVM kan antingen kompilera koden statiskt (likt GCC), eller låta en JIT-kompilator kompilera koden vid körning (likt Java).
LLVM har en språkoberoende uppsättning instruktioner och ett typsystem. Varje instruktion skrivs i SSA, vilket underlättar analys och optimering av program. Typsystemet innehåller några primitiva typer så som float
och int
, och fem typer härledda från de primitiva; pekare, fält, vektorer, structar och funktioner. Tillsammans kan dessa representera samtliga datatyper i ursprungsspråket. Till exempel kan en C++-klass representeras som en kombination av structar, funktioner och arrayer med funktionspekare.
Källor
[redigera | redigera wikitext]- Den här artikeln är helt eller delvis baserad på material från engelskspråkiga Wikipedia, tidigare version.