Hva er LLVM og hvorfor er det nyttig??
Flere miniprosjekter fungerer under LLVM-paraplyen. Mini-prosjektene omhandler hovedsakelig kompilatorteknologi. Det ser ut til å være forvirring angående LLVM-navngivning. Folk antar feilaktig at det er relatert til virtuelle maskiner. Det er ingen sammenheng. Begrepet LLVM står ikke for noe. Det er bare et navn som ble brukt i begynnelsen av prosjektet.
LLVM-prosjektet drives under "UIUC" BSD-Style lisens. Prosjektet stammer fra University of Illinois. Siden den har den fått popularitet, og den har blitt brukt til et stort utvalg av prosjekter. Det er spesielt populært i akademiske miljøer. Hovedmålet med prosjektet å gi SSA-basert statisk og dynamisk samling av forskjellige programmeringsspråk.
Her er miniprosjektet til LLVM:
- LLVM-kjerne: Kjernebibliotekene gir støtte for optimalisering og generering av kode for CPUer. LLVM IR (Intermediate Representation) gir grunnlaget for bibliotekene. Samfunnet har gjort en god jobb med å dokumentere LLVM Core. Så du kan enkelt bruke disse bibliotekene til å lage ditt nye programmeringsspråk eller opprette en port til en eksisterende kompilator. Hvis du ønsker å dra inn i disse områdene, er LLVM Core et godt sted å starte.
- Clang: Det er en kompilator som er tre ganger raskere enn GCC. Den retter seg mot C, C ++ og Objective-C. Clang-feilene og advarslene er lettere å forstå. Den har også et statisk analysatorverktøy. Selve det statiske analysatorverktøyet er bygget ved hjelp av Clang-kompilatoren.
- LLDB: Det er en feilsøking. Det er raskere og mer effektivt enn GDB. Feilsøkingsprogrammet er bygget med Clang og LLVM Core.
- libc ++ og libc ++ ABI: Bedre implementering av C ++ STD.
- kompilator-rt: Den gir støtte for lavnivåkode. Det har også kjøretidbiblioteker for dynamisk testing.
- OpenMP: Open Multi-Processing (OpenMP) er et API for å hjelpe med multitråding. Dette prosjektet støtter den opprinnelige kjøretiden for OpenMP som skal brukes med Clang.
- Polly: I LLVM-verdenen er det en løkke- og datalokaliseringsoptimering på høyt nivå. Det optimaliserer minnetilgangsmønstre for programmer.
- libclc: Et bibliotek for OpenCL.
- klee: Det er en symbolsk virtuell maskin. Du kan bruke klee til å krysse alle dynamiske baner i et program for å finne problemer. Maskinen kan produsere automatiserte testsaker.
- SIKKERHETSKODE: Det er en kompilator for C / C ++ for å garantere minnesikkerhet. Det er et flott verktøy for cybersikkerhetseksperter å utforske. Det kan hjelpe med å oppdage minnesikkerhetsfeil.
- lld: Det bygger en linker for å jobbe med Clang og LLVM.
LLVM har et rykte for å skape renere binærfiler enn GCC. LLVM har også eksterne prosjekter som kan brukes til å kompilere Python, Haskell, PHP, LUA, Ruby og andre språk. LLVM regnes som en allsidig, fleksibel og gjenbrukbar løsning. Så det blir stadig mer populært i utviklingssamfunnet. Den brukes som JIT-kompilatorer for innebygde språk. LLVM brukes også til superdatamaskiner. Den brede støtten fra utviklermiljøet gjør det til et robust verktøy.
Videre studier:
- http: // www.drdobbs.no / arkitektur-og-design / design-av-llvm / 240001128
- https: // llvm.org / docs / tutorial /
- http: // clang.llvm.org /
- http: // lldb.llvm.org /
- http: // libcxx.llvm.org /
- http: // libcxxabi.llvm.org /
- http: // kompilator-rt.llvm.org /
- http: // openmp.llvm.org /
- http: // polly.llvm.org /
- http: // libclc.llvm.org /
- http: // klee.github.io /
- http: // safecode.cs.illinois.edu /
- http: // lld.llvm.org /