Bayt sıralaması
İki ya da daha çok bayttan oluşan bir verinin (örneğin bir tam sayının) baytlarının bellekte hangi sırayla, hangi adrese yerleştirileceğini belirleyen düzene bayt sıralaması (İngilizce: endianness) denir.[1] Bayt adreslenebilir sistemlerde aynı veri farklı sıralamalarla saklanabildiğinden, farklı mimarideki bilgisayarlar veri alışverişinde aynı bayt sıralamasını varsaymazlarsa veriyi yanlış yorumlar.
Başlıca iki düzen vardır ve bunlara, verinin "hangi ucunun" en düşük adrese (başa) geldiğine göre ad verilir.
Terimin kökeni
[değiştir | kaynağı değiştir]Endian terimleri, Jonathan Swift'in 1726 tarihli Güliver'in Gezileri adlı yapıtından esinlenir: Lilliput ülkesinde haşlanmış yumurtanın hangi ucundan kırılacağı konusunda bitmek bilmez bir tartışma yaşanır; yumurtayı geniş ucundan kıranlar "büyük-uççular" (Big-Endians), sivri ucundan kıranlar "küçük-uççular" (Little-Endians) olarak anılır. Bilgisayar bilimci Danny Cohen, bu hicivli benzetmeyi bayt sıralaması tartışmasına uyarlayarak 1980'de kaleme aldığı (1981'de IEEE Computer dergisinde yayımlanan) "On Holy Wars and a Plea for Peace" başlıklı yazıyla terimleri bilişim literatürüne kazandırmıştır.[2]
Büyüğü başta (big-endian)
[değiştir | kaynağı değiştir]Büyüğü başta (big-endian) düzende bir verinin en anlamlı baytı (most significant byte, MSB) en düşük adrese (başa) yerleştirilir; sonraki baytlar artan adreslere sıralanır. SPARC, Motorola 68000 ve PowerPC gibi mimariler bu düzeni kullanır. Ağ iletişiminde standart kabul edilen "ağ bayt sırası" da büyüğü başta düzenidir; TCP/IP başlıklarındaki çok baytlı alanlar bu sırayla aktarılır.[1]
Küçüğü başta (little-endian)
[değiştir | kaynağı değiştir]Küçüğü başta (little-endian) düzende en az anlamlı bayt (least significant byte, LSB) en düşük adrese yerleştirilir. x86 (ve eski i386) işlemciler ile ARM ve RISC-V (varsayılan kipte) bu düzeni kullanır.[3]
Ortası başta (middle-endian)
[değiştir | kaynağı değiştir]Ortası başta (middle-endian ya da mixed-endian) düzende baytlar ne tümüyle büyüğü başta ne de tümüyle küçüğü başta; karışık bir sırayla (örneğin 16 bitlik sözcükler içinde bir, sözcükler arasında başka türlü) saklanır. Bugün ender görülür; tarihsel olarak PDP-11 gibi bazı sistemlerde 32 bitlik değerlerin saklanışında ortaya çıkmıştır.[1]
Örnek
[değiştir | kaynağı değiştir]0x0A0B0C0D değerindeki 32 bitlik bir tam sayının, A taban adresinden başlayarak bellekte saklanışı:
| Adres | A | A+1 | A+2 | A+3 |
|---|---|---|---|---|
| Büyüğü başta (big-endian) | 0A | 0B | 0C | 0D |
| Küçüğü başta (little-endian) | 0D | 0C | 0B | 0A |
| Ortası başta (PDP-11) | 0B | 0A | 0D | 0C |
Ortası başta düzende (PDP-11) değer iki 16 bitlik sözcüğe ayrılır (0x0A0B ve 0x0C0D); her sözcük kendi içinde küçüğü başta, sözcükler ise büyüğü başta sırada dizilir.
Değiştirilebilir bayt sıralaması (bi-endian)
[değiştir | kaynağı değiştir]Bazı mimariler her iki düzende de çalışabilecek biçimde tasarlanmıştır; bunlara değiştirilebilir bayt sıralamasına sahip (bi-endian) mimariler denir. ARM, MIPS, PowerPC ve RISC-V, bayt sıralamasının yapılandırılabildiği mimarilere örnektir.[3]
Mimarilere göre bayt sıralaması
[değiştir | kaynağı değiştir]Aşağıdaki tabloda bazı işlemci mimarilerinin kullandığı bayt sıralaması özetlenmiştir.[1]
| Mimari | Bayt sıralaması |
|---|---|
| IBM System/360, z/Architecture | Büyüğü başta |
| Motorola 68000 (ve 6800 ailesi) | Büyüğü başta |
| x86 / x86-64 | Küçüğü başta |
| MOS 6502, Zilog Z80 | Küçüğü başta |
| ARM | Değiştirilebilir (yaygın: küçüğü başta) |
| RISC-V | Değiştirilebilir (varsayılan: küçüğü başta) |
| MIPS | Değiştirilebilir |
| SPARC | Değiştirilebilir (tarihsel: büyüğü başta) |
| PowerPC / Power | Değiştirilebilir (tarihsel: büyüğü başta) |
| PDP-11 | Ortası başta (32 bit) |
Ayrıca bakınız
[değiştir | kaynağı değiştir]Kaynakça
[değiştir | kaynağı değiştir]- ^ a b c d Tanenbaum, Andrew S.; Austin, Todd (2012). Structured Computer Organization (6 bas.). Pearson. ISBN 978-0132916523.
- ^ Cohen, Danny (1981). "On Holy Wars and a Plea for Peace". Computer. 14 (10). ss. 48-54. doi:10.1109/C-M.1981.220208.
- ^ a b Patterson, David A.; Hennessy, John L. (2020). Computer Organization and Design RISC-V Edition: The Hardware/Software Interface (2 bas.). Morgan Kaufmann. ISBN 978-0128203316.