Saya tahu iPhone (dan iPad) berjalan pada prosesor ARM, yang secara default adalah little-endian (dan iOS sendiri adalah little-endian menurut halaman Wikipedia); namun, prosesor ARM konon memiliki kemampuan untuk beralih antara little-endian dan big-endian. Seberapa mungkin ini dan bagaimana cara kerjanya?
10
Jawaban:
bahkan jika Anda berpikir Anda tidak perlu mengetahui endianness yang mungkin dilakukan seseorang. Tidak perlu menjelaskan mengapa seseorang tidak membutuhkannya karena Anda mungkin tidak tahu konteksnya. Pertanyaannya bukan "apakah saya perlu tahu endianness" melainkan "apakah endian besar atau kecil". Jadi, berkonsentrasilah pada subjek!
Setelah mengatakan bahwa mungkin itu adalah praktik terbaik jika kita tidak menemukan kembali roda dan hanya mengandalkan makro yang disediakan Apple untuk ini. Alasannya adalah karena mereka telah menghabiskan cukup banyak waktu untuk mengoptimalkan makro ini dan memastikan bahwa itu berfungsi baik dengan simulator maupun pada Mac, iPhone dan semua OS dan perangkat keras mereka.
Jika Anda menggali apa yang terjadi ketika Anda memohon
CFSwapInt16BigToHost
Anda mungkin dapat melihat komentar yang menyarankan makro ini memproduksi mungkin kode mesin terbaik yang bisa Anda dapatkan dengan bantuan optimisasi kompiler:sumber
Endianness bukanlah sesuatu yang berinteraksi dengan pengguna akhir - tetapi di sini ada ringkasan 10.000 kaki tentang apa artinya ini bagi pengguna produk Apple.
Singkatnya - endianness untuk prosesor internal sama dengan arah penulisan untuk suatu bahasa. Ketika Anda melihat huruf-huruf teks bahasa Inggris, kita semua sepakat untuk memulai dari kiri atas dan membaca dulu lalu turun. Bahasa lain mulai dari kanan dan membaca ke kiri dan beberapa bahkan membaca dulu sebelum pindah ke kiri atau ke kanan .
Tidak terlalu penting bagi pengguna jika bit dalam representasi internal suatu alamat atau nomor disimpan sedikit endian atau big endian. Bahkan OS X pada Mac mematuhi representasi big-endian dan iOS mematuhi pemesanan little-endian . Fakta ini tidak berarti bahwa kedua perangkat tidak dapat bekerja bersama dengan benar. Ini berfungsi karena representasi ini hanya terjadi secara internal dan tidak terkena kami sebagai pengguna.
sumber