10 votos

Peso del iphone?

Sé el iphone (y ipad), se ejecutan en procesadores ARM, que son "little-endian" por defecto (y iOS en sí es little-endian, de acuerdo a la página de la Wikipedia); sin embargo, los procesadores ARM que supuestamente tiene la capacidad de cambiar entre little-endian y big endian. Qué tan posible es esto y cómo funciona?

6voto

trudnai Puntos 21

incluso si usted piensa que usted no necesita saber el peso que alguien podría hacer. No hay necesidad de explicar por qué alguien no la necesita porque puede que no conoce el contexto. La pregunta no es "¿necesito saber el endianness", sino "es big o little endian". Así que concéntrate en el tema por favor!

Habiendo dicho eso, probablemente, es la mejor práctica si no re-inventar la rueda, y sólo se basan en los macros Apple ofrece para ello. La razón es porque tienen a pasar bastante tiempo para optimizar estas macros y asegurarse de que funciona bien con el simulador, así como en Mac, iPhone y todos los de su sistema operativo' y hardware.

Si se examina lo que sucede cuando se invoca CFSwapInt16BigToHost usted puede ver los comentarios que sugiere que estas macros están produciendo probablemente el mejor código de máquina que se 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;
}

3voto

Oskar Puntos 1242

"Endian" no es algo que los usuarios finales tienen una verdadera interacción con el - pero aquí es una de 10,000 pies de resumen de lo que esto significa para los usuarios de productos de Apple.

En una cáscara de nuez - peso de un procesador interno es la misma que la dirección de escritura de una lengua. Cuando usted mira las letras de un texto en inglés, todos estamos de acuerdo en que para empezar en la parte superior izquierda y lea primero a la derecha y luego hacia abajo. Otros idiomas inicio de la derecha y leer a la izquierda y algunos, incluso, leer primero antes de moverse a la izquierda o a la derecha.

No importa realmente a un usuario si los bits en una representación interna de una dirección o número se almacena little endian o big endian. De hecho OS X en un Mac se adhiere a un big-endian representación y iOS se adhiere a little-endian pedido. Este hecho no quiere decir que los dos dispositivos no pueden trabajar juntos correctamente. Esto funciona porque esta representación sólo sucede internamente y no se exponen a nosotros como usuarios.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X