LLVM Sisällysluettelo Historia | LLVM-pohjaiset kääntäjät | Alustatuki | Lähteet | Aiheesta muualla | Navigointivalikkollvm.orgInfobox OKLLVM Language Reference ManualBuilding the kernel with clangLLVM Compiler OverviewApple's other open secret: the LLVM CompilerLLVM projektin viralliset sivutLinux Foundationin projektilaajentamalla

Ohjelmointikielen kääntäjät


engl.ohjelmointikielten kääntäjienoptimointejaBSD-lisenssinkonekieleksiohjelmointikielenengl.debuggerista2003Illinois'n yliopistossaAppleMac OS XiOSSonyPlayStation 4MicrosoftVisual StudiossaLinux-jakelutGCC:lleLinux-ytimenGoogleFreeBSDCC++Objective-CApplenXcodeJavaScriptWebAssemblyselaimienHTML5:nInternet ArchivenJSMESSDOSBoxRust





















LLVM
Kehittäjä
LLVM-projekti
Kehityshistoria
Vakaa versio
8.0.0 (20. maaliskuuta 2019)[1]
Tiedot
Ohjelmistotyyppi
Ohjelmointikielen kääntäjä
Alusta
alustariippumaton
Lisenssi
BSD-lisenssi
Aiheesta muualla
Verkkosivu
llvm.org
Infobox OK

LLVM (alkuaan engl. Low Level Virtual Machine) on eräs ohjelmointikielten kääntäjien kehittämiseen tarkoitetuista infrastruktuureista. LLVM-järjestelmän avulla ohjelmakoodille voidaan suorittaa erilaisia optimointeja – käännöksen, linkityksen, ajon tai ohjelman joutenolon aikana. LLVM on julkaistu BSD-lisenssin muunnoksella (University of Illinois/NCSA Open Source License).


LLVM toteuttaa kääntäjien toiminnan keski- ja loppuosan, eli toimenpiteet jotka ovat lähes samoja kaikkien konekieleksi käännettävien ohjelmien osalta. LLVM:n päälle voidaan rakentaa käännösprosessin ”etupää”, eli ohjelmointikielen tulkinta. Kääntäjäohjelma kutsuu LLVM-kirjastoa, joka tuottaa IR-välikielen (engl. Intermediate Representation).[2] LLVM-infrastruktuuri optimoi välikielen. Loppuvaiheessa välikieli muunnetaan kohdejärjestelmän konekieleksi.


Lyhenne LLVM tarkoitti alun pitäen ”Low Level Virtual Machine”, mutta projektin kasvaessa nimestä luovuttiin ja lyhenne ei nykyisin tarkoita mitään. LLVM on ”kattoprojekti”, jota käytetään keskeisistä komponenteista: välikielestä (LLVM IF) ja sen käsittelystä, debuggerista (LLDB[3]) ja LLVM:n omasta C++-kirjastosta (libc++[4]).




Sisällysluettelo





  • 1 Historia


  • 2 LLVM-pohjaiset kääntäjät

    • 2.1 Clang


    • 2.2 DragonEgg


    • 2.3 Emscripten


    • 2.4 Rust



  • 3 Alustatuki


  • 4 Lähteet


  • 5 Aiheesta muualla




Historia |


LLVM-projekti alkoi vuonna 2003 Illinois'n yliopistossa (Urbana–Champaign).


Nykyisin suurin LLVM:n kehittäjä on Apple; LLVM-järjestelmä onkin keskeinen komponentti uusimpien Mac OS X- ja iOS-järjestelmien kehitystyökaluissa. Myös Sony käyttää LLVM:ää PlayStation 4 -kehitysympäristössä. Microsoft tarjoaa Clang-kääntäjän optiona Visual Studiossa.


Monet Linux-jakelut tukevat LLVM:ää, useimmiten rinnakkaisena vaihtoehtona GCC:lle. Useimmat Linux-jakelut eivät ole siirtyneet GCC:stä Clang-kääntäjään, koska Linux-ytimen kääntäminen vaatii käytännössä GCC:n. Google tukee Clang-kääntäjän kehittämistä Linux-ytimen käännökseen vaihtoehtona GCC:lle.[5] Vastaavasti esimerkiksi FreeBSD käyttää monilla alustoilla Clangia pääasiallisena kääntäjänään.



LLVM-pohjaiset kääntäjät |


LLVM oli aluksi suunniteltu GCC:n loppuvaiheiden korvaajaksi, joten monia GCC-pohjaisia kääntäjien etupäitä on muunnettu LLVM-pohjaisiksi. Monia kääntäjiä on kehitetty tukemaan suoraan LLVM-infrastruktuuria.



Clang |


Clang on LLVM-projektin oma C/C++/Objective-C -kääntäjä etupää (front-end).


Clang on tuettu Applen Xcode kehitysympäristössä.[6][7]



DragonEgg |


GCC:lle on kehitetty laajennos nimeltä DragonEgg, jonka avulla GCC voi tuottaa LLVM-välikieltä. GCC:tä käytetään vain käännösprosessin etupäänä.



Emscripten |


Emscripten tuottaa LLVM:n avulla JavaScript-koodia WebAssembly-alustalle (aikaisemmin WebAssemblyn edeltäjälle asm.js). WebAssembly on uusimpien selaimien tukema JavaScript-laajennos, jonka avulla JavaScript-ohjelmat voivat toimia lähes yhtä tehokkaasti kuin natiivit ohjelmistot, ja voivat käyttää HTML5:n tarjoamia selainominaisuuksia, kuten 2D/3D-grafiikkaa ja ääntä. Emscriptenin avulla C- tai C++ -ohjelmistoja voidaan kääntää suoraan selaimissa toimiviksi. Monia C/C++ -kirjastoja on sovitettu toimivaksi Emscriptenin kanssa.


Laajamittaisimmat Emscripteniin pohjautuvat projekti ovat Internet Archiven tukemat JSMESS- ja DOSBox -projektit, joiden avulla erilaisia vanhoja ohjelmistoja ja pelejä voidaan emuloida suoraan selaimissa.



Rust |


Rust on ohjelmointikieli, jonka referenssikääntäjän (rustc) kehittäminen alkoi alusta alkaen LLVM:n päällä.



Alustatuki |


Tuettuja käyttöjärjestelmiä ovat:


  • Linux

  • Windows

  • Mac OS

  • iOS

Tuettuja suoritinarkkitehtuureja ovat:


  • ARM

  • x86

  • x86-64

  • MIPS


Lähteet |



  1. http://lists.llvm.org/pipermail/llvm-dev/2019-March/131157.html. Arvo on haettu Wikidatasta.


  2. LLVM Language Reference Manual llvm.org. Viitattu 16.2.2017.


  3. http://lldb.llvm.org


  4. https://libcxx.llvm.org


  5. Building the kernel with clang LWN.net. Viitattu 30.9.2017.


  6. LLVM Compiler Overview developer.apple.com. Viitattu 9.2.2017.


  7. Apple's other open secret: the LLVM Compiler appleinsider.com. Viitattu 9.2.2017.



Aiheesta muualla |



  • LLVM projektin viralliset sivut (englanniksi)


  • Linux Foundationin projekti (englanniksi)


Tämä tietotekniikkaan liittyvä artikkeli on tynkä. Voit auttaa Wikipediaa laajentamalla artikkelia.






Popular posts from this blog

Marja Vauras Lähteet | Aiheesta muualla | NavigointivalikkoMarja Vauras Turun yliopiston tutkimusportaalissaInfobox OKSuomalaisen Tiedeakatemian varsinaiset jäsenetKasvatustieteiden tiedekunnan dekaanit ja muu johtoMarja VaurasKoulutusvienti on kestävyys- ja ketteryyslaji (2.5.2017)laajentamallaWorldCat Identities0000 0001 0855 9405n86069603utb201588738523620927

Which is better: GPT or RelGAN for text generation?2019 Community Moderator ElectionWhat is the difference between TextGAN and LM for text generation?GANs (generative adversarial networks) possible for text as well?Generator loss not decreasing- text to image synthesisChoosing a right algorithm for template-based text generationHow should I format input and output for text generation with LSTMsGumbel Softmax vs Vanilla Softmax for GAN trainingWhich neural network to choose for classification from text/speech?NLP text autoencoder that generates text in poetic meterWhat is the interpretation of the expectation notation in the GAN formulation?What is the difference between TextGAN and LM for text generation?How to prepare the data for text generation task

Is this part of the description of the Archfey warlock's Misty Escape feature redundant?When is entropic ward considered “used”?How does the reaction timing work for Wrath of the Storm? Can it potentially prevent the damage from the triggering attack?Does the Dark Arts Archlich warlock patrons's Arcane Invisibility activate every time you cast a level 1+ spell?When attacking while invisible, when exactly does invisibility break?Can I cast Hellish Rebuke on my turn?Do I have to “pre-cast” a reaction spell in order for it to be triggered?What happens if a Player Misty Escapes into an Invisible CreatureCan a reaction interrupt multiattack?Does the Fiend-patron warlock's Hurl Through Hell feature dispel effects that require the target to be on the same plane as the caster?What are you allowed to do while using the Warlock's Eldritch Master feature?