LLVM

kompilaatorite tagaosa paljude programmeerimiskeelte jaoks From Wikipedia, the free encyclopedia

Remove ads

LLVM on kompilaatorite ja tööriistaahelate tehnoloogiate kogumik,[2] millega on võimalik ehitada kompilaatori eesosa mistahes programmeerimiskeelele ja tagaosa mistahes käsustikuarhitektuurile. LLVM on ehitatud keelest sõltumatule vahekeelele (ingl intermediate representation või IR), mis on platvormist sõltumatu kõrgetasemeline assemblerkeel, mida saab optimeerida erinevate transformatsioonidega üle mitme läbikäimise.[3] Nimi "LLVM" tähendas algselt madalatasemelist virtuaalmasinat (ingl Low Level Virtual Machine), kuid projekti arenedes ei olnud nimi enam asjakohane ning lühend ei ole enam ametlikult tähenduslik.[4]

Quick facts Autor, Arendaja ...

LLVM on kirjutatud C++ keeles ja on disainitud kompilatsiooni-, linkimis-, käitus- ja ooteajaliseks optimeerimiseks. Algselt loodud C ja C++ koodi kompileerimise jaoks, on LLVM-i keelest sõltumatu disain lubanud tekkida eesosadel paljude teiste keelte jaoks (sealhulgas keeled, mis ei kasuta LLVM-i, aga võivad kompileerida programme LLVM-i IR koodi): ActionScript, Ada, C# .NETi jaoks,[5][6][7] Common Lisp, PicoLisp, Crystal, CUDA, D, Delphi, Dylan, Forth,[8] Fortran, FreeBASIC, Free Pascal, Halide, Haskell, Java baitkoodi, Julia, Kotlin, LabVIEW keel G,[9][10] Lua, Objective-C, OpenCL,[11] PostgreSQLi SQL ja PLpgSQL,[12] Ruby,[13] Rust,[14] Scala,[15][16] Swift, Xojo ja Zig.

Remove ads

Ülevaade

LLVM suudab pakkuda terve kompilaatorsüsteemi keskosa, võttes vahekeelekoodi (IR) kompilaatorist ja väljastades optimeeritud IR-i. Seda uut IR-i on võimalik konverteerida ja linkida masinast sõltuvasse assemblerkoodi mõne soovitud platvormi jaoks. LLVM suudab vastu võtta GCC kompilaatori vahekoodi, mis lubab LLVM-i kasutada läbi GCC paljude eesosade. GCC-ga on võimalik LLVM-i ehitada alatest GCC versioonist 7.5.[17]

LLVM suudab genereerida lükandkoodi[a] (asukohast sõltumatut masinakoodi) kompilatsiooniajal või linkimisajal. LLVM suudab genereerida binaarset masinkoodi isegi käitusajal.

LLVM toetab keelest sõltumatut käsustikku ja tüübisüsteemi.[3] Väärtus iga muutuja taga (mida kutsutakse "tüübitud registriks") määratakse üks kord ja selle väärtust pole võimalik muuta. See teeb lihtsaks analüüsida sõltuvusi muutujate vahel.

Remove ads

Märkused

  1. "lükand-". Eesti Keele Instituut. Vaadatud 8. detsember 2023.

Viited

Välislingid

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads