- Saya bertanya-tanya apakah endianness hanya tergantung pada CPU?
- Apakah itu tergantung pada perangkat keras lain, seperti memori, perangkat penyimpanan sekunder?
- Apakah itu tergantung pada OS? Kenapa masuk Wikipedia , apakah itu benar?
6
Jawaban:
Endianness adalah tentang data numerik ketika angka terlalu besar untuk muat dalam satu byte. Misalnya. Teks ASCII hanya byte dalam satu baris, tidak terkait dengan endianness.
Jika kita menempatkan sejumlah kecil suka 42 dalam integer 32-bit (4 byte), kita melihatnya dengan big endian (BE) hanya byte terakhir yang digunakan dan dengan little endian (LE) hanya byte pertama yang digunakan :
Arsitektur endianness adalah endianness CPU. RAM tidak melakukan matematika sehingga tidak peduli.
Perangkat seperti kartu suara benar-benar peduli (mis. Audio 16bit 44100kHz sebagian besar BE), tetapi begitu Sistem operasi (driver perangkat) tanggung jawab untuk memberi tahu CPU agar mungkin mengubah endianness sebelum mengirim ke kartu suara.
Dalam jaringan, sebagian besar semuanya adalah big endian , jadi OS harus memberitahu prosesor endian kecil swap byte bilangan bulat sebagai paket jaringan dibangun.
Sistem file hadir dalam kedua endianness. Misalnya. FAT32 adalah LE sehingga hanya arsitektur BE yang harus melakukan byte swapping ketika menggunakan FAT32.
Dalam pemrograman jaringan C Anda harus ingat untuk menggunakannya
htonl()
danntohl()
-fungsi untuk mengkonversi antara urutan host- (asli) dan byte jaringan. Ketika program dikompilasi pada sistem big endian, fungsinya tidak melakukan apa-apa. Pada sistem endian kecil mereka menukar urutan byte.Arsitektur endianness adalah hal tingkat byte. Urutan / penomoran bit sebagian besar tidak relevan ketika mempertimbangkan endianness arsitektur. TAPI itu selalu menyenangkan untuk diketahui :)
Secara kasar LSB (Least Significant Bit) pertama adalah LE of bit world dan MSB (Most Significant Bit) pertama adalah BE dari bit world.
Kebanyakan CPU dan serial bus tampaknya (secara mengejutkan) LSB bahkan pada sistem big endian seperti SPARC. Juga Ethernet adalah LSB meskipun byte sebagian besar berjalan dalam urutan big endian. Di sisi lain, mis. PPC adalah big endian dan MSB pertama.
sumber
CPU mengontrol endianness. Beberapa CPU dapat beralih antara big-endian dan little-endian. Arsitektur x86 / amd64 tidak memiliki fitur ini.
Endianness adalah hal yang tersirat dengan memuat dan menyimpan instruksi pada CPU. Data yang tidak muat dalam satu byte (0-255) perlu dibaca dan ditulis dalam serangkaian beberapa byte, dan jelas byte tersebut harus dibaca dan ditulis dalam urutan yang konsisten. Perancang CPU juga harus memilih urutan byte dari register dibaca dan ditulis. Urutan tidak penting jika data tidak pernah meninggalkan CPU atau RAM, tetapi ketika Anda masuk ke hal-hal seperti menulis data ke register I / O (yang mungkin tidak mengharapkan urutan yang sama) dan sektor disk (di mana sistem lain mungkin membaca data ) itu menjadi penting dan standar eksternal diperlukan. Standar ini biasanya merupakan bagian dari spesifikasi perangkat keras atau spesifikasi format file. Setiap programmer / desain yang bernilai, akan mendesain format kegigihan untuk memperhitungkan hal ini, pemrograman yang buruk atau pemrograman yang mengasumsikan segala sesuatu akan selalu dibaca pada satu arsitektur dapat mengungkapkan kesalahan.
Sebuah OS sangat berurusan dengan register I / O dan sektor disk sehingga # 2 berlaku di sini. Satu area yang sangat penting yang membutuhkan standar umum antara semua CPU adalah implementasi sistem file. Itu sebabnya ada yang terpisah
mips
danmipsel
membangun Debian dan apa yang tidak.sumber
Endianness adalah urutan dimana prosesor meletakkan bit-bit angka biner. RAM tidak peduli dengan data pesanan apa yang disimpan, juga hard drive (karena mereka tidak mengambil tindakan sendiri terhadap isi datastream, hanya menjalankan arahan dari prosesor / chipset di mana meletakkannya.) Sistem Operasi dapat dibangun untuk bekerja dengan kedua endianness (misalnya Mac OS X.)
sumber
Endianness tidak selalu tergantung pada CPU. Misalnya Ethernet dan sebagian besar protokol tingkat rendah TCP / IP adalah endian besar, terlepas dari CPU dan mudah-mudahan, mesin berbasis x86 masih dapat terhubung ke Internet. Demikian pula, OS yang berjalan pada CPU endian besar akan membaca FAT32 yang menggunakan sistem file endian kecil atau menggunakan kartu PCI endian kecil, dan sebagainya.
sumber