Mi az LLVM és miért hasznos?
Több mini projekt működik az LLVM égisze alatt. A mini projektek főként fordító technológiákkal foglalkoznak. Úgy tűnik, hogy van némi zavar az LLVM elnevezéssel kapcsolatban. Az emberek tévesen feltételezik, hogy a virtuális gépekhez kapcsolódik. Nincs kapcsolat. Az LLVM kifejezés nem jelent semmit. Ez csak egy név, amelyet a projekt elején használtak.
Az LLVM projekt az „UIUC” BSD-Style licenc alatt működik. A projekt az Illinoisi Egyetemen indult. Azóta népszerűségre tett szert, és sokféle projekthez használták. Különösen népszerű a tudományos körökben. A projekt fő célja SSA-alapú statikus és dinamikus összeállítás biztosítása a különböző programozási nyelvekről.
Íme az LLVM mini projektje:
- LLVM mag: Az alapvető könyvtárak optimalizáló és kódgeneráló támogatást nyújtanak a CPU-k számára. Az LLVM IR (Intermediate Representation) biztosítja az alapot a könyvtárak számára. A közösség jó munkát végzett az LLVM Core dokumentálásában. Így könnyedén felhasználhatja ezeket a könyvtárakat új programozási nyelvének létrehozásához, vagy egy meglévő fordító portjának létrehozásához. Ha ezekre a területekre szeretne kalandozni, akkor az LLVM Core jó kiindulópont.
- Csengés: Ez egy fordító, amely háromszor gyorsabb, mint a GCC. C, C ++ és C-objektumot célozza meg. A Clang hibákat és figyelmeztetéseket könnyebb megérteni. Statikus elemző eszközzel is rendelkezik. Maga a statikus elemző eszköz a Clang fordító segítségével épül fel.
- LLDB: Ez egy hibakereső. Gyorsabb és hatékonyabb, mint a GDB. A hibakereső a Clang és az LLVM Core segítségével készült.
- libc ++ és libc ++ ABI: A C ++ STD jobb megvalósítása.
- fordító-rt: Támogatja az alacsony szintű kódokat. Futásidejű könyvtárakkal is rendelkezik a dinamikus teszteléshez.
- OpenMP: Az Open Multi-Processing (OpenMP) egy API, amely segítséget nyújt a többszálas kezelésben. Ez a projekt támogatja az OpenMP natív futási idejét a Clang-nal együtt.
- Polly: Az LLVM világában ez egy magas szintű hurok- és adat-lokalizációs optimalizáló. Optimalizálja a programok memóriaelérési mintáit.
- libclc: Könyvtár az OpenCL számára.
- klee: Ez egy szimbolikus virtuális gép. A klee segítségével áthaladhat a program összes dinamikus útján, hogy problémákat találjon. A gép automatizált teszteseteket képes előállítani.
- BIZTONSÁGI KÓD: Ez egy fordító a C / C ++ számára, hogy garantálja a memória biztonságát. Remek eszköz a kiberbiztonsági szakértők számára a felfedezéshez. Segíthet a memóriabiztonsági hibák felderítésében.
- lld: Összekapcsolót épít a Clang-nal és az LLVM-mel való együttműködésre.
Az LLVM híresebb a bináris fájlok létrehozásában, mint a GCC. Az LLVM rendelkezik külső projektekkel is, amelyek felhasználhatók Python, Haskell, PHP, LUA, Ruby és más nyelvek fordításához. Az LLVM sokoldalú, rugalmas és újrafelhasználható megoldásnak számít. Tehát egyre népszerűbb a fejlesztői közösségben. JIT fordítóként használják beágyazott nyelvekhez. Az LLVM-et szuperszámítógépekhez is használják. A fejlesztői közösség széles körű támogatása robusztus eszközzé teszi.
A további vizsgálat:
- http: // www.drdobbs.com / architecture-and-design / the-design-of-llvm / 240001128
- https: // llvm.org / docs / tutorial /
- http: // csörög.llvm.org /
- http: // lldb.llvm.org /
- http: // libcxx.llvm.org /
- http: // libcxxabi.llvm.org /
- http: // fordító-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 /