Я знаю, что айфоны (и айпады) работают на процессорах ARM, которые по умолчанию имеют порядок с прямым порядком байтов (и, согласно странице Википедии, iOS сама по себе имеет младший порядок); однако у процессоров ARM есть возможность переключения между порядками байтов и байтов. Насколько это возможно и как это работает?
10
Ответы:
даже если вы думаете, что вам не нужно знать порядок байтов, который кто-то может сделать. Не нужно объяснять, почему кому-то это не нужно, потому что вы можете не знать контекст. Вопрос не в том, «нужно ли мне знать порядок байтов», а в том, «это порядок байтов». Поэтому сконцентрируйтесь на теме, пожалуйста!
Сказав, что, вероятно, это лучшая практика, если мы не изобретаем колесо и просто полагаемся на макросы, которые Apple предоставляет для этого. Причина в том, что они потратили довольно много времени на оптимизацию этих макросов и убедились, что они хорошо работают с симулятором, а также с Mac, iPhone и всеми их операционными и аппаратными средствами.
Если вы поймете, что происходит при вызове,
CFSwapInt16BigToHost
вы можете увидеть комментарии, которые предполагают, что эти макросы производят, вероятно, лучший машинный код, который вы можете получить с помощью оптимизации компилятора:источник
Endianness - это не то, с чем конечные пользователи реально взаимодействуют, но вот краткое описание того, что это означает для пользователей продуктов Apple.
В двух словах - порядковый номер для внутреннего процессора совпадает с направлением письма для языка. Когда вы смотрите на буквы английского текста, мы все согласны начать с левого верхнего угла и читать сначала справа, а затем вниз. Другие языки начинаются справа и читаются слева, а некоторые даже читают сначала, прежде чем двигаться влево или вправо .
Для пользователя не имеет большого значения, хранятся ли биты во внутреннем представлении адреса или числа с прямым или прямым порядком байтов. Фактически OS X на Mac придерживается представления с прямым порядком байтов, а iOS придерживается порядка с прямым порядком байтов . Этот факт никоим образом не означает, что два устройства не могут работать вместе должным образом. Это работает, потому что это представление происходит только изнутри и не раскрывается нам как пользователям.
источник