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
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.
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.
¿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.
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.
Hay un buen capítulo de un libro que explica todo muy bien aquí: www.aosabook.org/en/llvm.html
- 1. ¿Qué es EGL y cómo puedo usarlo?
- 2. Magento XMLConnect ... ¿Qué es y cómo puedo usarlo?
- 3. ¿Qué es exactamente la instrucción PHI hace y cómo usarlo en LLVM
- 4. ¿Qué es LD_LIBRARY_PATH y cómo usarlo?
- 5. ¿Qué es .inc y por qué usarlo?
- 6. Parrot - ¿Puedo usarlo? ¿Y cómo?
- 7. ¿Qué es Request.InputStream y cuándo usarlo?
- 8. ¿Qué es ICustomTypeDescriptor y cuándo usarlo?
- 9. ¿Qué es __declspec y cuándo debo usarlo?
- 10. ¿Qué es MVVM, y deberíamos usarlo?
- 11. ¿Qué es JNI Graphics o cómo usarlo?
- 12. ¿Qué es strophe y cómo usarlo con JQuery?
- 13. python y ruby: ¿para qué usarlo?
- 14. ¿Qué es un MQ y por qué quiero usarlo?
- 15. ¿Para qué es <spring:bind>? ¿Cuándo usarlo y cuándo no usarlo?
- 16. ¿Qué es PDO y por qué debería usarlo?
- 17. ¿Qué es NHibernate y por qué debería usarlo?
- 18. ¿Qué es un archivo .pem y cómo usarlo?
- 19. ¿Qué es JAXB y por qué debería usarlo?
- 20. ¿Qué tan maduro es clojure-clr? ¿Puedo usarlo con Mono?
- 21. ¿Para qué sirve AppDelegate y cómo sé cuándo usarlo?
- 22. Qué cifra usar para multiplataforma
- 23. ¿Qué es un DSL y dónde debería usarlo?
- 24. ¿Qué es exactamente la API LLVM C++
- 25. ¿Qué es el bean scope y cuándo usarlo?
- 26. ¿Qué es un ÍNDICE ESPACIAL y cuándo debería usarlo?
- 27. ¿Qué es la delegación? ¿Cuándo querría usarlo?
- 28. ¿Qué es un MvcHtmlString y cuándo debería usarlo?
- 29. ¿Qué es un simulacro y cuándo deberías usarlo?
- 30. Explique qué es Amazon EC2, y ¿puedo usarlo como servicio de alojamiento web?
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. –