Endianness of iphones? -- iphone campo con ipad campo con ios camp apple Relacionados El problema

Endianness of iPhones?


10
vote

problema

Español

Sé que los iPhones (y iPads) se ejecutan en los procesadores de brazo, que son pequeños, endian de forma predeterminada (y los iOS en sí misma son pequeños de acuerdo con la página de Wikipedia); Sin embargo, los procesadores de brazo supuestamente tienen la capacidad de cambiar entre Little-Endian y Big-Endian. ¿Qué tan posible es esto y cómo funciona?

Original en ingles

I know iPhones (and iPads) run on ARM processors, which are little-endian by default (and iOS on itself is little-endian according to the Wikipedia page); however, ARM processors supposedly have the ability to switch between little-endian and big-endian. How possible is this and how does it work?

        
         
         

Lista de respuestas

6
 
vote

Incluso si crees que no necesitas saber que la endianness alguien podría hacer. No es necesario explicar por qué alguien no lo necesita porque puede no conocer el contexto. La pregunta no es "Necesito saber endianness", sino más bien "es grande o pequeño endian". ¡Así que concéntrate en el tema por favor!

Dicho esto, probablemente sea la mejor práctica si no reinventamos la rueda y simplemente confíe en las macros Apple proporciona para esto. La razón es porque han pasado bastante tiempo para optimizar estas macros y asegurarse de que funcione bien con el simulador, así como en Mac, iPhone y todo su sistema operativo y hardware.

Si cava lo que está sucediendo cuando invoca abcdefghijklmnCFSwapInt16BigToHost 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:

  OS_INLINE uint16_t _OSSwapInt16(     uint16_t        data ) {   /* Reduces to 'rev16' with clang */   return (uint16_t)(data << 8 | data >> 8); }  OS_INLINE uint32_t _OSSwapInt32(     uint32_t        data ) { #if defined(__llvm__)   data = __builtin_bswap32(data); #else   /* This actually generates the best code */   data = (((data ^ (data >> 16 | (data << 16))) & 0xFF00FFFF) >> 8) ^ (data >> 8 | data << 24); #endif    return data; }   
 

even if you think you do not need to know the endianness someone might do. No need to explain why someone does not need it because you may do not know the context. The question is not "do I need to know endianness" but rather "is it big- or little endian". So concentrate on the subject please!

Having said that probably it is the best practice if we do not re-invent the wheel and just rely on the macros Apple provides for this. The reason is because they have spend quite some time to optimize these macros and made sure that works well with the simulator as well as on Mac, iPhone and all of their OS' and hardware.

If you dig down what is happening when you invoke CFSwapInt16BigToHost you may can see comments that suggests these macros are producing probably the best machine code you can get with the help of the compiler optimization:

OS_INLINE uint16_t _OSSwapInt16(     uint16_t        data ) {   /* Reduces to 'rev16' with clang */   return (uint16_t)(data << 8 | data >> 8); }  OS_INLINE uint32_t _OSSwapInt32(     uint32_t        data ) { #if defined(__llvm__)   data = __builtin_bswap32(data); #else   /* This actually generates the best code */   data = (((data ^ (data >> 16 | (data << 16))) & 0xFF00FFFF) >> 8) ^ (data >> 8 | data << 24); #endif    return data; } 
 
 
3
 
vote

Endianness no es algo que los usuarios finales tienen una interacción real con, pero aquí hay un resumen de 10,000 pies de lo que esto significa para los usuarios de los productos de Apple.

En pocas palabras, la endianesa para un procesador interno es el mismo que la dirección de escritura para un idioma. Cuando mira las letras de un texto en inglés, todos estamos de acuerdo en comenzar en la parte superior izquierda y leer la primera a la derecha y luego hacia abajo. Otros idiomas comienzan a la derecha y leen a la izquierda y Algunos incluso leen primero antes de moverse hacia la izquierda o hacia la derecha .

Realmente no importa a un usuario si los bits en una representación interna de una dirección o número se almacenan en el pequeño endian o en Big Endian. De hecho, os x en un Mac se adhiere a una representación de Big-Endian y iOS se adhiere a los pedidos pequeños endian . Este hecho no significa de ninguna manera que los dos dispositivos no puedan trabajar juntos. Esto funciona porque esta representación solo ocurre internamente y no se expone a nosotros como usuarios.

 

Endianness isn't something that end users have any real interaction with - but here is a 10,000 foot summary of what this means for users of Apple products.

In a nutshell - endianness for an internal processor is the same as the writing direction for a language. When you look at letters of an english text, we all agree to start on the top left and read first right then down. Other languages start on the right and read to the left and some even read down first before moving left or right.

It doesn't really matter to a user if the bits in an internal representation of an address or number gets stored little endian or big endian. In fact OS X on a Mac adheres to a big-endian representation and iOS adheres to little-endian ordering. This fact doesn't in any way mean that the two devices can't work together properly. This works because this representation only happens internally and doesn't get exposed to us as users.

 
 
 
 

Relacionados problema

2  ¿Es posible desbloquear un iPhone 4S CDMA (de Virgin Mobile) para usar otro sim en él?  ( Is it possible to unlock a cdma iphone 4s from virgin mobile to use another si ) 
Mi amigo tiene un iPhone 4S, se compró en los Estados Unidos de Virgin Mobile. Quiero hacer un desbloqueo de fábrica (desbloquear la SIM). Ya sé cómo Jailbrea...

2  El centro de control iOS 10 no cuenta con botones de música  ( Ios 10 control center does not feature music buttons ) 
Lo que faltan aquí son los controles de música << || >> . Ellos son en la pantalla de bloqueo antes de desbloquear el teléfono. Sin embargo, sucede muchas ...

0  El fondo de mi iPhone no aceptará toques. ¿Puedo arreglar eso?  ( The bottom of my iphone wont accept touches can i fix that ) 
Mi iPhone (1st Gen) ya no puede reconocer cuando lo toco en la parte inferior de la pantalla. La única forma en que esto me afecta es cuando tengo el teclado,...

2  La integración de WhatsApp en iOS 10 no funciona: "Tendrá que continuar en la aplicación"  ( Whatsapp integration on ios 10 does not work youll need to continue in the ap ) 
Estoy usando un iPhone 5S y acabo de actualizarme a iOS 10. Le permitió el soporte SIRI hacia WhatsApp en Configuración y GT; SIRI & GT; Soporte de la aplicac...

1  ¿Cómo elimino mi libreta de direcciones de correo electrónico de mi lista de contactos de iPhone 7?  ( How do i remove my email address book from my iphone 7 contact list ) 
Acabo de recibir un iPhone 7. Pero mi libreta de direcciones de correo electrónico se ha fusionado con la lista de contactos de mi número de teléfono. ¿Cómo e...

2  Fortnite para iOS reporta espacio insuficiente en mi iPhone  ( Fortnite for ios reports insufficient space on my iphone ) 
Acabo de descargar Fortnite para iOS y necesita 3.017 GB. Tengo 16GB, ¡pero todavía dice que no tengo suficiente espacio? Dice que solo tengo 2.435 GB de espa...

4  ¿Cómo puedo grabar video de la pantalla del iPhone sin jailbreaking el teléfono? [duplicar]  ( How can i record video of the iphone screen without jailbreaking the phone ) 
Esta pregunta ya tiene una respuesta aquí : ¿Cómo grabar la pantalla de iPhone / iPad en MacOS? ...

1  ¿Cómo exportar Memoji Avatar en MacOS Big Sur?  ( How to export memoji avatar in macos big sur ) 
Yo uso Memoji Avatar en mi iPhone X que aparece en mi Mac también (ejecutando Big Sur). Se muestra como el usuario Avatar. ¿Hay alguna manera de exportarl...

1  El receptor Wi-Fi de mi iPhone está muerto. ¿Hay alguna forma de conectarse a Internet en el teléfono a través de USB o Bluetooth?  ( My iphones wi fi receptor is dead is there a way to connect to internet on pho ) 
El botón de conexión Wi-Fi parece haberse grisado. La última vez que esto sucedió, el proveedor reemplazó el teléfono con un teléfono reformado, pero ya no es...

1  Juegos de iPhone 3G  ( Iphone 3g games ) 
Yo juego Tap Ranch, que a veces da puntos gratuitos para descargar aplicaciones gratuitas. He descargado todas las aplicaciones gratuitas y las he eliminado, ...

7  ¿Cómo muestro un indicador de batería porcentual en el iPhone?  ( How do i show a percentage battery indicator on the iphone ) 
¿Cómo muestro un indicador de porcentaje de la batería en el iPhone? ...

6  ¿Hay alguna manera de obtener una notificación emergente en mi iPhone o iPad cuando llegue el correo?  ( Is there any way to get a pop up notification on my iphone or ipad when mail arr ) 
Tengo gmail configurado para enviarme "verdaderos" notificaciones push (usando la configuración del servidor de Exchange). Así que mi correo llega en tiempo r...

2  iPhone 5 no puede restaurar incluso cuando se usa el modo DFU  ( Iphone 5 cant restore even when using dfu mode ) 
TENGO ESTE AT & AMP; T iPhone 5 compró en el extranjero por $ 800 más impuestos. Tan pronto como lo conseguí, intenté restaurarlo para evitar la pantalla de...

1  ¿Qué hace el elemento del menú "Sugerir", en iOS 5?  ( What does the suggest menu item do on ios 5 ) 
¿Qué hace el elemento del menú "Sugerir" | "? Me refiero a la que viene directamente después del elemento "Pasta". ...

1  Transferencia de contenidos de iPhone a iTunes  ( Transfer iphone contents to itunes ) 
¿Cómo transfiero los contenidos de mi iPhone a iTunes antes de obtener un nuevo iPhone? Quiero poder cargar todos mis contactos, mensajes de texto, fotos, etc...




© 2021 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos