Wiem, że iPhone'y (i iPady) działają na procesorach ARM, które domyślnie są little-endian (a sam system iOS jest little-endian zgodnie ze stroną Wikipedii); jednak procesory ARM podobno mają zdolność przełączania między little-endian i big-endian. Jak to możliwe i jak to działa?
10
Odpowiedzi:
nawet jeśli uważasz, że nie musisz znać endianizmu, który ktoś może zrobić. Nie musisz wyjaśniać, dlaczego ktoś tego nie potrzebuje, ponieważ możesz nie znać kontekstu. Pytanie nie brzmi „czy muszę znać endianizm”, ale raczej „czy to duży czy mały endian”. Proszę więc skoncentrować się na temacie!
Powiedziawszy, że to prawdopodobnie najlepsza praktyka, jeśli nie wynajdujemy koła na nowo i polegamy tylko na makrach, które Apple to zapewnia. Powodem jest to, że spędzili sporo czasu na optymalizacji tych makr i upewnili się, że działa dobrze z symulatorem, a także na Macu, iPhonie i całym ich systemie operacyjnym i sprzęcie.
Jeśli odkryjesz, co się dzieje podczas wywoływania
CFSwapInt16BigToHost
, możesz zobaczyć komentarze sugerujące, że te makra produkują prawdopodobnie najlepszy kod maszynowy, jaki można uzyskać za pomocą optymalizacji kompilatora:źródło
Endianness nie jest czymś, z czym użytkownicy końcowi mają jakąkolwiek rzeczywistą interakcję - ale oto podsumowanie 10 000 stóp, co to oznacza dla użytkowników produktów Apple.
W skrócie - endianowość wewnętrznego procesora jest taka sama jak kierunek pisania dla języka. Kiedy patrzysz na litery tekstu w języku angielskim, wszyscy zgadzamy się zacząć od lewego górnego rogu i przeczytać najpierw prawo, a potem dół. Inne języki zaczynają się po prawej stronie i czytają w lewo, a niektóre nawet czytają najpierw przed przejściem w lewo lub w prawo .
Dla użytkownika tak naprawdę nie ma znaczenia, czy bity w wewnętrznej reprezentacji adresu lub liczby są przechowywane w małej lub dużej. W rzeczywistości OS X na Macu jest zgodny z reprezentacją big-endian, a iOS jest zgodny z porządkowaniem little-endian . Ten fakt w żaden sposób nie oznacza, że oba urządzenia nie mogą ze sobą poprawnie współpracować. Działa to, ponieważ ta reprezentacja odbywa się tylko wewnętrznie i nie jest ujawniana nam jako użytkownikom.
źródło