ios - seguimiento - ¿Hay alguna indicación sobre qué plataformas de Apple permiten el ensamblaje en línea?
no puedo desactivar limitar seguimiento (1)
En cualquier plataforma ARM (iOS, watchOS, tvOS), si proporciona un archivo de código de bits / asm mixto, SOLO (ver detalles a continuación) puede compilarse para la misma arquitectura que el asm incorporado. Esto significa que también puede enviar una aplicación binaria completa dirigida a esa arquitectura; no hay absolutamente ninguna ventaja en enviar código de bits (y, por lo tanto, no hay razón para que Apple lo permita).
Según los documentos de Apple, el código de bits se requiere para watchOS y tvOS, y por lo tanto el ensamblaje en línea está deshabilitado.
Nota: Para las aplicaciones de iOS, el código de bits es el predeterminado, pero opcional. Para las aplicaciones watchOS y tvOS, se requiere bitcode. Si proporciona código de bits, todas las aplicaciones y marcos del paquete de aplicaciones (todos los objetivos en el proyecto) deben incluir el código de bits. Después de distribuir su aplicación utilizando iTunes Connect, puede descargar el archivo dSYMs para la compilación, que se describe en Visualización e importación de bloqueos en la ventana Dispositivos.
En X86 , un archivo que contiene una mezcla de bitcode y X86 ASM se puede compilar en una aplicación de 64 bits. No es obvio que esto sea algo sensato, ya que presumiblemente el ensamblador hecho a mano es la sección de rendimiento crítico, pero puede funcionar.
Lo mismo no es cierto en ARM. El caso X86 funciona porque el conjunto de instrucciones X86 es un subconjunto puro de X86_64, lo que significa que cualquier ensamblador X86 es un ensamblador X86_64 válido. En ARM, un procesador de 64 bits debe ejecutarse en un estado de 32 bits para ejecutar un código de 32 bits. No puede mezclar ensamblajes de 32 y 64 bits en la misma aplicación, según los documentos ARM (consulte Cambio del estado de ejecución)
... En la práctica, esto significa que no puede tener una aplicación mixta de 32 y 64 bits, porque no hay una forma directa de llamar entre ellos.
Esto significa que si proporciona una mezcla de bitcode más inline asm que apunta a la arquitectura ARCH de ARM, prácticamente lo único que puede hacer la AppStore (al menos en la actualidad) es compilar su código de bit para ARCH, que le da (digamos) un total de 32 bits. Aplicación que se ejecuta en un procesador de 64 bits. ¿Cuál es el punto de? Sería mucho más sencillo cargar un ejecutable normal de 32 bits sin código de bits en primer lugar.
He estado tratando de descifrar durante un tiempo el estado del ensamblaje en línea en las distintas plataformas desde que Apple anunció el código de bits.
A partir de ahora (Xcode 7.1.1) esto es lo que observo:
- OSX - permitido (espero que siempre lo sea)
- iOS: permitido, incluso con código de bits (el ensamblaje en línea se coloca en el código de bits) con confirmación probable
- watchOS: no permitido (no compilará, el ensamblaje en línea tiene un error deshabilitado)
- tvOS - permitido
Sin embargo, estas son conclusiones dudosas ya que no tengo aplicaciones en todos los mercados para verificar esto.
He visto algunas publicaciones de bibliotecas de código abierto y aplicaciones que rechazarán las aplicaciones de iOS cuando contengan ensamblado en línea y código de bits. He visto algunos mensajes en los que tvOS es similar a watchOS y no te permiten usar ensamblaje en línea (¿tal vez arreglado en el último Xcode?)
¿Hay alguna referencia sólida de Apple o ... EN CUALQUIER LUGAR en cuanto a en qué plataformas puedo usar el ensamblaje en línea?