Onaltılık değişmez değerler için $ kuralı ne zaman ve nerede ortaya çıktı?
Onaltılı göstermenin kökenini soran bu soruyu0x
ilginç buldum .
Bununla birlikte, 80'lerin başında 8-bit 65xx sistemlerinde diş programlamayı kestiğimde gördüğüm her şey $
onaltılık rakamları (montajcılar, monitörler, kitaplar, dergiler vb.) Belirtmek için a kullandı . İlk Amiga 1000'imi alıp C'yi öğrenmeye başlayana kadar 0x
önekin bir şey olduğunu bile biliyordum .
0x
Önek açıkça 8-bit devrimden önce geliyorsa , o zaman (1) neden $
bu kadar yaygın olarak kabul edildi? Ve tam tersi, (2) bütün bir 8 bitlik programcı nesli için her yerde bulunmaya başladıktan sonra, neden aniden düştü? (Önemli olduğundan değil, ama yine de$
kodu yorumlarken veya ölü ağaçlara yazı yazarken kullanıyorum .)
Yanıtlar
Kısa cevap:
Motorola bunu 6800 için kullandı ve MOS (6500) Motorola'dan miras aldı. Ne de olsa 6500 ekip üyesi 6800 projesinden çıktı, bu yüzden zaten buna alıştılar.
Uzun cevap:
0x öneki açıkça 8 bitlik dönüşten önce geliyorsa,
Öyle değil, gerçekten. Motorola, $
öneki 1974'ün 6800'ünde zaten kullanıyordu. Unix, daha yeni (1973) C dilinde yeniden yazılmıştı, bu da 0x
o sıralarda konvansiyonu ekledi ve AT&T'nin dışında gösterildi.
sonra (1) $ neden bu kadar yaygın olarak benimsendi?
Motorola'nın 6800/02/09 hattı ve birçok alt uç mikro (ev) bilgisayarda kullanılan MOS '6500 serisi nedeniyle. En önemlisi Acorn, Apple, Atari ve Commodore tarafından. Doğal olarak, bu makineler / CPU'lar için yazılım yazan herkes onun gösterimini kullanırdı.
Daha sonra, örneğin Atari ST ve Commodore Amiga makinelerde kullanılan 68000'in popülaritesiyle güçlendirildi.
Ve tam tersi, (2) 8 bitlik programcılardan oluşan bir nesil için her yerde bulunabilen,
Şimdi bu, yalnızca 65xx / 68xx tabanlı makinelerin kullanıcıları için geçerli olduğundan, büyük ölçüde 'işlemci baloncuğunuza' bağlıdır. Altair (S100), Tandy TRS-80 ve tüm MSX dünyası gibi x80 (8080, 8085, Z80) veya x86 tabanlı bir makineyle büyüyen herkes aynı fikirde olmayacaktır. H
Sonek tek geçerli yol olduğu ve diğer her şey oldukça egzotik olduğu için oldukça sağlam olacaklar :))
neden aniden düştü?
Değildi. Onu geride bırakan dünya çapında bir yönetici organ yok. Sonuçta, önek (veya sonek) kullanmak onaltılık kodun doğasında değil, kullanılan dil tarafından tanımlanır. Motorola / MOS derleyicileri bir $
önek, Intel bir H
sonek, C bir 0x
önek ve diğerleri yine matematik benzeri bir 16#
(Ada) veya 16r
(Smalltalk) öneki istiyor .
(Önemli olduğundan değil, ama yine de kodu yorumlarken veya ölü ağaçlara yazı yazarken $ kullanıyorum.)
Ve diğerleri de (* 3).
Sonuç olarak: kullanılan dil, gösterimi tanımlar - ve her zaman olduğu gibi, ilk en derin izlenimi bırakır.
Önekin Postfix'e Göre Avantajı
Klasik matematik, radixin bir sayının ardından gelmesine ilişkin bir sonek gösterimi kullanır . Hangi Intel kendi nnnnH
notasyonuyla takip etti . Derleyici yazımı için bu, nasıl yorumlanacağına karar verilmeden önce bütün bir kelimenin (sabitin) okunması gerekmesinin dezavantajını getirir. Bu, tüm dizeyi tutan bir arabellek gerektiği anlamına gelir, çünkü yalnızca soneke kadar ilerledikten sonra dönüştürülebilir.
Bir önek kullanarak, aşağıdaki karakterlerin nasıl yorumlanacağı en başından anlaşılır. Bu, arabelleğe almaya gerek yoktur (* 2). Bu, ayrıştırıcı tasarımında bir avantaj sağlar ve birleştiriciyi çok basitleştirir. Bu, özellikle ilk önyükleme olarak erken çapraz derleyici araçlarının hızlı oluşturulması için yararlı oldu.
Biraz Tarih
Hex notasyonu, ilk yıllarda oldukça nadirdi. Bunun yerine sekizlik bir şeydi, çünkü çoğu makine 3 kelimelik bir boyuta sahipti ve karakterler genellikle 6 bit olarak işlendi.
Çok erken bir zamanda altıgen olarak sunulan birkaç makineden / sistemden birçoğu, alfabedeki son 6
UVWXYZ
(* 2) gibi, genellikle sürekli olmayan çeşitli harfler / semboller kullandı .IBM
X'nnnn'
, 1965'te / 360 ile önekli bir dize biçimi ( ) tanıttıVeri noktası ön ekli Sıfır ile sekizlik olarak kullanıldı
Intel'in 4004'ü, son ekiyle birlikte hex kullandı
h
Intel’in 8008’i aşağıdaki şekilde yazılan kılavuzlarda ve belgelerde tüm sekizliyi kullandı.
nnnO
1973'e gelindiğinde, her iki montajcı da aynı B / O / H soneklerini kullanacak şekilde yapıldı.
* 1 - Birkaç baytlık arabellek bakımı bugün tuhaf gelebilir, tüm kaynak genellikle belleğe yüklenir, ancak RAM o zamanlar korkutucu bir kaynaktı. Sonuç olarak, kağıt banttan olduğu gibi verileri okuyabilen ve ara belleğe alınmadan okunan her sembol üzerinde doğrudan çalışabilen algoritmalar tercih edildi.
Optimal bir montajcı, herhangi bir öğeyi bir seferde bir karakter okumaya ve ileriye bakmaya gerek kalmadan hemen işlemeye izin verir. Bir önek kullanmak bunu destekler.
* 2 - Sembollere ihtiyaç duyulduğunda mühendislikte sıklıkla kullanılan bir kural.
* 3 - Burada RC.SE'de konuya göre notasyonu kullanmaya çalışıyorum, yani $
65/68 H
için, Intel için vb ... ve net bir ilişki olmadığında / 370 notasyonuna geri döneceğim ilk kullanmama x'nn'
rağmen en çok kullandığım şey buydu $
.