LLVM
LLVM és una infraestructura de compilació per millorar l'optimització de programes de diversos llenguatges de programació.
Tipus | compilador |
---|---|
Versió inicial | 24 octubre 2003 |
Versió estable | |
Llicència | Llicència Open Source NCSA/Universitat d'Illinois Apache License v2.0 with LLVM Exceptions (en) |
Característiques tècniques | |
Sistema operatiu | multiplataforma, NetBSD, FreeBSD, OpenBSD, Linux, Minix 3, Microsoft Windows i illumos |
Escrit en | C++, C i Llenguatge assemblador |
Equip | |
Desenvolupador(s) | Chris Lattner, Craig Topper (en) i Simon Pilgrim (en) |
Dissenyador | Vikram Adve (en) i Chris Lattner |
Més informació | |
Lloc web | llvm.org (anglès) |
Blog | Blog oficial |
Free Software Directory | LLVM |
Id. Subreddit | LLVM |
| |
El propòsit inicial era perfeccionar el rerefons del compilador GCC, però el seu èxit, l'ha fet abastar altres àrees del compilador. Des del 2007 té el seu propi frontal de compilació per a C i C++, anomenat Clang. Dins el projecte de LLVM també s'hi inclou el depurador LLDB.
El projecte va començar l'any 2000 a la Universitat d'Illinois a Urbana-Champaign sota la direcció de Chris Lattner.
L'any 2005 Apple va formar un grup de treball per incorporar LLVM a les seves plataformes de desenvolupament.
Actualment Apple és el principal patrocinador del desenvolupament de LLVM.
Originalment, el nom LLVM eren les inicials de Low Level Virtual Machine, és a dir «Màquina Virtual de Baix Nivell» en anglès. Aquest nom però, s'ha deixat d'utilitzar perquè el projecte no té gaire relació amb el que actualment s'entén per màquina virtual en el món de la informàtica.
Extensions i formats
modifica- .ll
- llenguatge d'assemblador de llvm[1]
- .bc
- codi intermedi bitcode[2]
Comandes bàsiques
modificaVegeu comandes[3]
des de lleng. d'alt nivell
modifica- llvm-gcc
- frontal de compilació gcc, sortida a codi intermedi (-c) o assemblador (-S) o codi nadiu
- llvm-g++
- frontal de compilació g++, sortida com a l'anterior
des de codi intermedi (bitcode)
modifica- lli
- executa codi intermedi directament mitjançant compilació al vol (ang: Just-In-Time)
- opt
- optimitzador de bitcode amb sortida bitcode
- llvm-dis
- desassemblador per a l'arquitectura actual
- llc
- converteix codi intermedi a assemblador per a una determinada arquitectura
- llvm-link
- muntador de mòduls bitcode. Genera un bitcode amb tots els mòduls.
- llvm-ld
- muntador de mòduls bitcode equivalent a ld.[4] Genera un executable.
- llvm-ar
- archiva com ar[5] els fitxers de codi intermedi
- llvm-nm
- llista la taula de símbols
- llvm-extract
- extreu una funció
des d'assemblador
modifica- llvm-as
- assemblador amb sortida a codi intermedi
Realitzar optimitzacions en temps de relligat (anomenat en anglès "Link Time Optimizations"[6] o amb les sigles LTO) requereix la col·laboració del relligador del sistema.[7]
La darrera versió de GNU Binutils incorpora un relligador (en ang.: linker) alternatiu anomenat GOLD[8] que admet endollables per facilitar optimitzacions externes en temps de relligat.
- Gold, antigament present al paquet binutils-gold, està incorporat actualment al paquet binutils de GNU.
Referències
modifica- ↑ Llenguatge Assemblador LLVM (anglès)
- ↑ Format Bitcode de LLVM (anglès)
- ↑ Llista de Comandes LLVM (anglès)
- ↑ comanda ld de Unix
- ↑ comanda ar de Unix
- ↑ GNU - wiki sobre LTO (Link Time Optimization)(anglès)
- ↑ 7,0 7,1 Endollable LLVM per al relligador GNU Gold(anglès)
- ↑ GNU binutils(anglès)
- ↑ Optimitzacions LLVM en temps de relligat a Ubuntu Karmic (anglès)
Enllaços externs
modifica- LLVM - Web oficial (anglès)
- Frontals per a Fortran i Ada Arxivat 2010-06-12 a Wayback Machine. (anglès)
- Altres projectes LLVM per a més llenguatges i programari (anglès)
- Apple.Desenvolupadors - LLVM-GCC al Mac (anglès)