Sé que los iPhones (y iPads) se ejecutan en procesadores ARM, que son little-endian por defecto (y iOS en sí mismo es little-endian según la página de Wikipedia); sin embargo, los procesadores ARM supuestamente tienen la capacidad de cambiar entre little-endian y big-endian. ¿Qué tan posible es esto y cómo funciona?
10
Respuestas:
incluso si crees que no necesitas saber la resistencia que alguien podría tener. No es necesario explicar por qué alguien no lo necesita porque es posible que usted no conozca el contexto. La pregunta no es "¿necesito saber endianness" sino "es endian grande o pequeño". ¡Así que concéntrate en el tema por favor!
Habiendo dicho eso, probablemente sea la mejor práctica si no reinventamos la rueda y solo confiamos en las macros que Apple proporciona para esto. La razón es porque han dedicado bastante tiempo a optimizar estas macros y se han asegurado de que funcione bien con el simulador, así como en Mac, iPhone y todos sus sistemas operativos y hardware.
Si profundiza en lo que sucede cuando invoca
CFSwapInt16BigToHost
, puede ver comentarios que sugieren que estas macros están produciendo probablemente el mejor código de máquina que puede obtener con la ayuda de la optimización del compilador:fuente
Endianness no es algo con lo que los usuarios finales tengan una interacción real, pero aquí hay un resumen de 10,000 pies de lo que esto significa para los usuarios de productos Apple.
En pocas palabras, la resistencia para un procesador interno es lo mismo que la dirección de escritura de un idioma. Cuando miras las letras de un texto en inglés, todos estamos de acuerdo en comenzar en la parte superior izquierda y leer primero a la derecha y luego hacia abajo. Otros idiomas comienzan a la derecha y se leen a la izquierda y algunos incluso leen primero antes de moverse hacia la izquierda o hacia la derecha .
Realmente no le importa a un usuario si los bits en una representación interna de una dirección o número se almacenan little endian o big endian. De hecho, OS X en una Mac se adhiere a una representación big-endian e iOS se adhiere a los pedidos little-endian . Este hecho no significa de ninguna manera que los dos dispositivos no puedan funcionar juntos correctamente. Esto funciona porque esta representación solo ocurre internamente y no se expone a nosotros como usuarios.
fuente