2009-05-12 12 views
6

Estaba leyendo aquí y allá sobre llvm que se puede utilizar para aliviar el dolor de las compilaciones multiplataforma en C++, estaba tratando de leer los documentos, pero no lo hice no entiendo cómo puedo usarlo en problemas de desarrollo de la vida real ¿alguien puede explicarme en palabras simples cómo puedo usarlo?LLVM ¿Qué es y cómo puedo usarlo para compilaciones multiplataforma

Respuesta

6

El concepto clave de LLVM es una representación "intermedia" (IR) de bajo nivel de su programa. Este IR está aproximadamente al nivel de código de ensamblador, pero contiene más información para facilitar la optimización.

La potencia de LLVM proviene de su capacidad de diferir la compilación de esta representación intermedia en una máquina de destino específica hasta justo antes de que se ejecute el código. Se puede utilizar un enfoque de compilación justo a tiempo (JIT) para que una aplicación produzca el código que necesita justo antes de que lo necesite.

En muchos casos, tiene más información en el momento en que se ejecuta el programa que en la oficina central, por lo que el programa puede ser mucho más optimizado.

Para comenzar, puede compilar un programa C++ en una única representación intermedia, luego compilarlo en múltiples plataformas desde ese IR.

También puede probar la demostración de Kaleidoscope, que le guiará en la creación de un nuevo idioma sin tener que escribir un compilador, simplemente escriba el IR.

En aplicaciones de rendimiento crítico, la aplicación puede escribir esencialmente su propio código que necesita para ejecutarse, justo antes de que necesite ejecutarlo.

+1

También puede compilar los binarios, así, no se ven obligados a utilizar el método de ejecución JIT. Hasta ahora, tiene un puñado de back-end, recién comencé a usarlo y, hasta ahora, es fácil de usar como un compilador cruzado ARM. Es fácil unir los módulos individuales y optimizar el programa en su conjunto. –

1

LLVM es, como su nombre lo dice, una máquina virtual de bajo nivel que tiene un generador de código. Si desea compilar, puede usar gcc front end o clang, que es un compilador c/C++ para LLVM que todavía está en proceso.

2

¿Por qué no va al sitio web LLVM y echa un vistazo a toda la documentación allí. Explican en gran detalle qué es LLVM y cómo usarlo. Por ejemplo, tienen una página Getting Started.

1

Es importante tener en cuenta que un montón de información sobre el objetivo proviene de los archivos de encabezado del sistema que utiliza al compilar. LLVM no difiere la resolución de elementos como "tamaño de puntero" o "diseño de bytes", por lo que si compila encabezados de 64 bits para una plataforma little-endian, no puede usar ese código fuente LLVM para apuntar a un ensamblado big-endian de 32 bits salida pater.

Cuestiones relacionadas