อนุสัญญา $ สำหรับตัวอักษรเลขฐานสิบหกเกิดขึ้นเมื่อใดและที่ไหน

Aug 16 2020

ฉันพบว่าคำถามนี้ถามเกี่ยวกับที่มาของ0xการแสดงว่าเลขฐานสิบหกนั้นน่าสนใจ

อย่างไรก็ตามเมื่อฉันตัดการเขียนโปรแกรมฟันบนระบบ 8 บิต 65xx ในช่วงต้นยุค 80 ทุกสิ่งที่ฉันเห็นใช้ a $เพื่อแสดงเลขฐานสิบหก (แอสเซมเบลอร์จอภาพหนังสือนิตยสาร ฯลฯ ) จนกระทั่งฉันได้รับเอมิกา 1000 เครื่องแรกและเริ่มเรียนรู้ C ซึ่งฉันก็รู้ว่า0xคำนำหน้าเป็นสิ่งหนึ่ง

หาก0xคำนำหน้าชัดเจนก่อนการปฏิวัติ 8 บิตดังนั้น (1) ทำไมจึงถูก$นำมาใช้อย่างกว้างขวาง? และตรงกันข้าม (2) กลายเป็นที่แพร่หลายสำหรับโปรแกรมเมอร์ 8 บิตทั้งรุ่นทำไมมันถึงถูกทิ้งทันที? (ไม่ใช่ว่าสำคัญ แต่ฉันยังใช้$เมื่อแสดงความคิดเห็นโค้ดหรือเขียนลวก ๆ บนต้นไม้ที่ตายแล้ว)

คำตอบ

21 Raffzahn Aug 16 2020 at 12:59

คำตอบสั้น ๆ :

Motorola ใช้สำหรับ 6800 และ MOS (6500) ซึ่งสืบทอดมาจาก Motorola หลังจากนั้นสมาชิกในทีม 6500 คนก็ออกมาจากโปรเจ็กต์ 6800 ดังนั้นพวกเขาจึงคุ้นเคยกับมันแล้ว


คำตอบยาว:

หากคำนำหน้า 0x อยู่ก่อนหน้าของการปฏิวัติ 8 บิตอย่างชัดเจน

มันไม่ได้จริงๆ โมโตโรล่าใช้$คำนำหน้ากับ 6800 ปี 1974 เมื่อไม่นานมานี้ (1973) ถูกเขียนใหม่ด้วยภาษา C ซึ่งเพิ่มการ0xประชุมในช่วงเวลานั้นและแสดงภายนอก AT&T

แล้ว (1) ทำไม $ จึงถูกนำมาใช้อย่างแพร่หลาย?

เนื่องจากสาย 6800/02/09 ของ Motorola เช่นเดียวกับซีรีส์ 6500 ของ MOS ที่ใช้ในคอมพิวเตอร์ไมโคร (บ้าน) ระดับล่างหลายรุ่น สะดุดตาที่สุดโดย Acorn, Apple, Atari และ Commodore โดยปกติแล้วทุกคนที่เขียนซอฟต์แวร์สำหรับเครื่อง / CPU เหล่านี้จะใช้สัญกรณ์

ต่อมาได้มีการบังคับใช้โดยความนิยมของ 68000 ที่ใช้เช่นกับเครื่อง Atari ST และ Commodore Amiga

และตรงกันข้าม (2) กลายเป็นที่แพร่หลายสำหรับโปรแกรมเมอร์ 8 บิตทั้งรุ่น

ตอนนี้สิ่งนี้ขึ้นอยู่กับ 'ฟองตัวประมวลผล' ของคุณเป็นอย่างมากเนื่องจากเป็นเรื่องจริงสำหรับผู้ใช้เครื่องที่ใช้ 65xx / 68xx เท่านั้น ใครก็ตามที่เติบโตมาพร้อมกับเครื่องที่ใช้ x80 (8080, 8085, Z80) หรือ x86 เช่น Altair (S100), Tandy TRS-80 และ MSX ทั้งโลกจะไม่เห็นด้วย พวกเขาจะค่อนข้างหนักแน่นว่าHคำต่อท้ายเป็นวิธีเดียวที่ถูกต้องและอย่างอื่นก็ค่อนข้างแปลกใหม่ :))

ทำไมมันถึงหลุดทันที?

มันไม่ใช่ ไม่มีหน่วยงานปกครองทั่วโลกที่เหนือกว่า ท้ายที่สุดการใช้คำนำหน้า (หรือคำต่อท้าย) ไม่ได้มีอยู่ในรหัสฐานสิบหก แต่ถูกกำหนดโดยภาษาที่ใช้ ผู้ประกอบ Motorola / MOS ต้องการ$คำนำหน้า Intel Hคำต่อท้าย C 0xคำนำหน้าและคนอื่น ๆ ต้องการคำนำหน้าคล้ายคณิตศาสตร์ของ16#(Ada) หรือ16r(Smalltalk)

(ไม่ใช่เรื่องสำคัญ แต่ฉันยังใช้ $ เมื่อแสดงความคิดเห็นโค้ดหรือเขียนลวก ๆ บนต้นไม้ที่ตายแล้ว)

และอื่น ๆ อีกมากมาย (* 3)

บรรทัดล่าง: ภาษาที่ใช้กำหนดสัญกรณ์ - และเช่นเคยคำแรกจะทิ้งการแสดงผลที่ลึกที่สุด


ข้อได้เปรียบของคำนำหน้ามากกว่า Postfix

คณิตศาสตร์คลาสสิกใช้สัญกรณ์ postfix ที่มีรัศมีต่อท้ายตัวเลข ซึ่ง Intel ตามด้วยnnnnHสัญกรณ์ สำหรับการเขียนคอมไพเลอร์สิ่งนี้ทำให้เกิดข้อเสียที่ต้องอ่านทั้งคำ (ค่าคงที่) ก่อนจึงจะสามารถตัดสินใจได้ว่าจะตีความอย่างไร ซึ่งหมายความว่าจำเป็นต้องใช้บัฟเฟอร์เพื่อเก็บสตริงทั้งหมดเนื่องจากสามารถแปลงได้หลังจากเลื่อนไปจนถึง postfix เท่านั้น

การใช้คำนำหน้าจะชัดเจนตั้งแต่แรกว่าจะตีความอักขระต่อไปนี้อย่างไร ไม่จำเป็นต้องบัฟเฟอร์ (* 2) สิ่งนี้ทำให้เกิดข้อได้เปรียบในการออกแบบตัวแยกวิเคราะห์และทำให้แอสเซมเบลอร์ง่ายขึ้นมาก สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับการสร้างเครื่องมือครอสแอสเซมเบลอร์ยุคแรก ๆ อย่างรวดเร็วเป็นบูตสแตรปแรก


ประวัติศาสตร์บางส่วน

  • สัญกรณ์ฐานสิบหกค่อนข้างแปลกในช่วงปีแรก ๆ ฐานแปดเป็นสิ่งที่แทนเนื่องจากเครื่องจักรส่วนใหญ่สร้างขึ้นเป็นหลายขนาดของคำ 3 คำและโดยปกติอักขระจะถูกจัดการเป็น 6 บิต

  • ในบรรดาเครื่องจักร / ระบบเพียงไม่กี่เครื่องที่มีฐานสิบหกที่นำเสนอหลายเครื่องใช้ตัวอักษร / สัญลักษณ์ต่างๆเช่น 6 ตัวสุดท้ายในตัวอักษรUVWXYZ(* 2) ซึ่งมักจะไม่ต่อเนื่อง

  • IBM เปิดตัวรูปแบบสตริงที่นำหน้า ( X'nnnn') พร้อมกับ / 360 ในปีพ. ศ. 2508

  • Datapoint ใช้ฐานแปดกับศูนย์ที่นำหน้า

  • 4004 ของ Intel ใช้ฐานสิบหกที่มีส่วนต่อท้ายเป็น h

  • 8008 ของ Intel ใช้ฐานแปดทั้งหมดในคู่มือและเอกสารประกอบซึ่งเขียนเป็น nnnO

  • ในปี 1973 แอสเซมเบลอร์ทั้งสองถูกสร้างขึ้นเพื่อใช้คำต่อท้าย B / O / H เดียวกัน


* 1 - การดูแลบัฟเฟอร์สองสามไบต์อาจทำให้เกิดความแปลกในปัจจุบันซึ่งโดยปกติแล้วแหล่งข้อมูลทั้งหมดจะถูกโหลดลงในหน่วยความจำ แต่ RAM เป็นทรัพยากรที่ทำให้ตกใจในตอนนั้น ด้วยเหตุนี้อัลกอริทึมจึงเป็นที่ต้องการที่สามารถอ่านข้อมูลเช่นจากเทปกระดาษและทำงานโดยตรงกับสัญลักษณ์แต่ละตัวที่อ่านโดยไม่ต้องบัฟเฟอร์

แอสเซมเบลอร์ที่ดีที่สุดช่วยให้อ่านไอเท็มทีละตัวอักษรและประมวลผลได้ทันทีโดยไม่ต้องมองไปข้างหน้า การใช้คำนำหน้ารองรับสิ่งนี้

* 2 - แบบแผนมักใช้ในงานวิศวกรรมเมื่อต้องการสัญลักษณ์

* 3 - ที่นี่ใน RC.SE ฉันพยายามใช้สัญกรณ์ตามหัวข้อดังนั้น$สำหรับ 65/68 Hสำหรับ Intel และอื่น ๆ ... และเมื่อไม่มีความสัมพันธ์ที่ชัดเจนฉันจะกลับไปใช้สัญกรณ์ / 370 x'nn'นั่นคือสิ่งที่ฉันใช้มากที่สุดทั้งๆที่เคยใช้มา$ก่อน