LLVM

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
LLVM
software
Tip Compilator
Dezvoltator LLVM Developer Group, Universitatea din Illinois (Urbana-Champaign)
Data primei versiuni 24 octombrie 2003
Ultima versiune 11.0.0 (12 octombrie 2020 ; acum 10 luni )
Sistem de operare Multiplatform
Limba Asamblare
C.
C ++
Licență Licență Open Source a Universității din Illinois
( licență gratuită )
Site-ul web llvm.org

LLVM (anterior un acronim pentru mașină virtuală de nivel scăzut ) este o infrastructură de construcție, scrisă în C ++ , concepută pentru optimizarea programelor la compilare, conectare, runtime și timp de neutilizare. Proiectul LLVM a fost demarat în 2000 la Universitatea din Illinois.

LLVM acceptă în prezent compilarea de programe în C , C ++ , Objective C , Ada , Rust , Julia și Fortran , utilizând front-end-uri derivate din versiunile 4.0.1. și 4.2 din compilatorul GNU Compiler Collection (GCC). Un front-end alternativ pentru limbaje de programare de tip C este în prezent în curs de dezvoltare sub numele de clang .

Folosind LLVM, programatorul poate crea o mașină virtuală pentru limbile care o necesită (cum ar fi Java ), un compilator pentru o anumită arhitectură și un software de optimizare a codului independent de tipul de limbaj utilizat sau de platformă. Reprezentarea intermediară LLVM (IR) este independentă atât de limbaj, cât și de arhitectură; intervine între codul sursă într-un limbaj dat și un generator de cod pentru o arhitectură specifică. LLVM include suport pentru optimizarea codului inter-procedural și atât compilatoare statice, cât și compilatoare just-in-time .

Are mai multe componente care se ocupă de diferitele etape de dezvoltare; printre acestea, menționăm frontend-urile pentru limbajele bytecode Java , CIL , Python , Julia . Compilatorul LLVM just-in-time este capabil să optimizeze părți ale programului în timpul rulării și, prin urmare, este util în cazurile în care doriți să evaluați eficiența unei singure funcții. Datorită acestei particularități, este utilizat în conducta OpenGL Mac OS X Leopard pentru a suporta unele caracteristici care nu sunt prezente la nivel hardware.

Este compilatorul implicit al ID- ului Xcode începând cu versiunea 4.2.

Reprezentarea codului

LLVM folosește propriul set de instrucțiuni independent de limbajele de programare. Majoritatea instrucțiunilor au un formular similar cu codul cu trei adrese . Fiecare afirmație este structurată astfel încât să atribuie o valoare unei variabile date o singură dată: aceasta ajută la simplificarea analizei dependențelor între variabile.

Orice formă de modificare a tipului unei variabile sau a unui obiect se face prin utilizarea instrucțiunii cast . LLVM folosește tipuri esențiale, cum ar fi numere întregi, și 5 tipuri derivate: pointer , matrice , vectori , structuri și funcții . Aceste tipuri pot fi utilizate pentru a reprezenta construcții mai complexe aparținând limbajelor de programare la nivel înalt. De exemplu, o clasă în C ++ poate fi reprezentată printr-o combinație de structuri, funcții și tablouri.

Licență

LLVM și clang sunt disponibile public sub Licența Open Source a Universității din Illinois [1] , o licență compatibilă cu GPL .

Elemente conexe

Alte proiecte

linkuri externe

Software gratuit Free Software Portal : accesați intrările Wikipedia care se ocupă de software gratuit