Je sais que les iPhones (et iPads) fonctionnent sur des processeurs ARM, qui sont petit-endian par défaut (et iOS sur lui-même est petit-endian selon la page Wikipedia); cependant, les processeurs ARM auraient la capacité de basculer entre petit-boutien et gros-boutiste. Est-ce possible et comment cela fonctionne-t-il?
10
Réponses:
même si vous pensez que vous n'avez pas besoin de connaître l'endianité que quelqu'un pourrait faire. Pas besoin d'expliquer pourquoi quelqu'un n'en a pas besoin car vous ne connaissez peut-être pas le contexte. La question n'est pas "ai-je besoin de connaître l'endianité" mais plutôt "est-ce gros ou petit endian". Alors concentrez-vous sur le sujet s'il vous plaît!
Cela dit, c'est probablement la meilleure pratique si nous ne réinventons pas la roue et nous appuyons uniquement sur les macros qu'Apple prévoit pour cela. La raison en est qu'ils ont passé un certain temps à optimiser ces macros et ont fait en sorte que cela fonctionne bien avec le simulateur ainsi que sur Mac, iPhone et tous leurs systèmes d'exploitation et matériel.
Si vous creusez ce qui se passe lorsque vous appelez,
CFSwapInt16BigToHost
vous pouvez voir des commentaires suggérant que ces macros produisent probablement le meilleur code machine que vous pouvez obtenir à l'aide de l'optimisation du compilateur:la source
L'endianité n'est pas quelque chose avec laquelle les utilisateurs finaux ont une réelle interaction - mais voici un résumé de 10000 pieds de ce que cela signifie pour les utilisateurs des produits Apple.
En un mot - l'endianité d'un processeur interne est la même que la direction d'écriture d'une langue. Lorsque vous regardez les lettres d'un texte anglais, nous acceptons tous de commencer en haut à gauche et de lire d'abord à droite puis en bas. D'autres langues commencent à droite et lisent à gauche et certaines lisent même d'abord avant de se déplacer à gauche ou à droite .
Cela n'a pas vraiment d'importance pour un utilisateur si les bits dans une représentation interne d'une adresse ou d'un numéro sont stockés en petit endian ou en big endian. En fait, OS X sur Mac adhère à une représentation big-endian et iOS adhère à l'ordre little-endian . Ce fait ne signifie en aucun cas que les deux appareils ne peuvent pas fonctionner correctement ensemble. Cela fonctionne car cette représentation ne se produit qu'en interne et ne nous est pas exposée en tant qu'utilisateur.
la source