puede LLVM IR (Representación intermedia) ser utilizado para crear multiplataforma (iphone y Android) ARM ejecutables?

Estoy buscando en los medios posibles de crear eficientemente una aplicación orientada a Android y iPhone desde la misma base de código, ya sea en C / C ++ / C # / Objective-C o Java (utilizando VMKit).

LLVM parece prometedor, sin embargo estoy un poco confundido acerca de los problemas de compatibilidad que rodean las diferentes implementaciones de la CPU ARM, principalmente desde el aspecto de cómo los gráficos y el código de sonido son "resueltos" por chipsets subyacentes (es decir, tengo que codificar a chips ARM específicos o ¿una API de nivel superior, como OpenGL, es suficiente?).

Conozco un poco sobre varios productos de Cross Dev (es decir, Airplay SDK, MoSync (GPL-GCC), Unity3d, XMLVM, etc.), pero lo que realmente me gustaría hacer es escribir en Java o utilizar un motor C / C ++ , emiten LLVM IR y crean ejecutables ARM compatibles, si es posible.

Disculpas si alguno de los anteriores es vago.

Gracias

Rico

    3 Solutions collect form web for “puede LLVM IR (Representación intermedia) ser utilizado para crear multiplataforma (iphone y Android) ARM ejecutables?”

    El compilador no es el problema. Para desarrollar para ambos es necesario crear una capa de abstracción que le permita escribir una sola aplicación en esa capa. Luego tiene dos implementaciones de la capa de abstracción, una que hace api llamadas de Android y una que hace llamadas api de iPhone. No hay nada que el compilador pueda hacer para ayudarte.

    Donde LLVM IR puede ser interesante en su portabilidad es para programas como:

     int a, b;
    
     a = 7;
     b = a-4;
    

    Compilar a IR luego tomar el mismo IR y generar ensamblador para todos los diferentes tipos de procesador y examinar las diferencias.

    En el caso de aplicaciones reales que, por ejemplo, necesitan escribir un píxel en una pantalla, los registros, tamaños de la pantalla y toda una serie de otras diferencias existen, y esas diferencias no están expuestas entre el IR y el ensamblador, sino que están expuestas en el programa C principal y las llamadas api definidas por la biblioteca de plataformas, por lo que tienes que resolver el problema en C no IR o ensamblador.

    LLVM no es diferente de cualquier otro compilador en el sentido que usted necesita, así que me temo que la respuesta es no.

    El IR de LLVM es en términos del profano un código "parcialmente compilado", y se puede utilizar, diga, para compilar el resto en el dispositivo final. Por ejemplo, si tiene una aplicación gráficamente intensiva, puede enviar partes de ella en IR, luego compilar en el dispositivo para obtener el máximo rendimiento del hardware específico.

    Para lo que quieras, necesitas usar uno de los productos que mencionaste, o tener interfaces de usuario nativas (usando Cocoa / VMKit), pero posible compartir el código de datos / lógica en la aplicación

    Para el desarrollo legal de la tienda de aplicaciones estándar para dispositivos OS de stock, ni el sonido ni el código de gráficos de una aplicación tienen nada que ver con los chipsets subyacentes o con la arquitectura de la CPU ARM específica. El sonido y los gráficos (y todas las demás E / S del usuario) son abstraídos por cada OS a través de API dependientes de la plataforma y vínculos de la biblioteca. Puede codificar las API completamente diferentes de cada plataforma o utilizar una capa de abstracción en la parte superior, como Unity, et. Alabama.

    LLVM puede permitirle optimizar de código intermedio a código de máquina para ciertas diferencias en las arquitecturas de ARM (armv6, armv7, soporte de fp, etc.), pero solamente en código autónomo que no hace ninguna IO del usuario, o de otra manera requiere cualquier nivel más alto interfaz para el sistema operativo.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.