เรามักจะบอกว่าฮาร์ดแวร์ไม่สนใจภาษาที่โปรแกรมเขียนเนื่องจากเห็นเฉพาะรหัสไบนารี่ที่คอมไพล์ แต่นี่ไม่ใช่ความจริงทั้งหมด ยกตัวอย่างเช่นพิจารณา Z80 ผู้ต่ำต้อย ส่วนขยายไปยังชุดคำสั่ง 8080 มีคำแนะนำเช่น CPIR ซึ่งจะเป็นประโยชน์สำหรับการสแกนแบบ C (NULL สิ้นสุด) strlen()
สตริงเช่นการดำเนินการ ผู้ออกแบบจะต้องระบุว่าการรันโปรแกรม C (ตรงข้ามกับ Pascal ที่ความยาวของสตริงอยู่ในส่วนหัว) เป็นสิ่งที่การออกแบบของพวกเขาน่าจะใช้ อีกตัวอย่างที่คลาสสิกเป็นเครื่องเสียงกระเพื่อม
มีตัวอย่างอะไรอีกบ้าง? เช่นคำแนะนำจำนวนและประเภทของการลงทะเบียนโหมดการกำหนดแอดเดรสที่ทำให้ตัวประมวลผลเฉพาะสนับสนุนหลักการของภาษาเฉพาะหรือไม่ ฉันสนใจเป็นพิเศษในการแก้ไขครอบครัวเดียวกัน
sizeof(int)
เท่ากับ 1 ต้องกำหนดประเภทนั้นchar
ต้องลงนาม (เนื่องจากint
จะต้องสามารถเก็บค่าประเภททั้งหมดchar
) ฉันเขียนโค้ดสำหรับเครื่องที่char
และint
เป็นจำนวนเต็ม 16 บิตทั้งสองแบบ ปัญหาที่ใหญ่ที่สุดคือการที่ไม่สามารถใช้สหภาพเพื่อการแปลงชนิดและการจัดเก็บที่มีประสิทธิภาพของจำนวนมากไบต์ต้องมีการบรรจุด้วยตนเองและการเปิดออก ปัญหาเหล่านั้นเล็กน้อยเมื่อเทียบกับความเป็นไปได้ใน C ที่ sizeof (int) == sizeof (ยาว) ตั้งแต่ ...
unsigned int
ค่า C99 ปรับปรุงสถานการณ์นั้น แต่ก่อน C99 ไม่มีวิธีรับประกันขั้นตอนเดียวที่ปลอดภัยในการเปรียบเทียบค่าที่อาจเป็นลบกับค่าของประเภทunsigned int
(หนึ่งจะต้องทดสอบว่าตัวเลขนั้นเป็นค่าลบก่อนทำการเปรียบเทียบหรือไม่)