เหตุผลระดับสูง
เมื่อคุณคิดถึงมันไมโครโปรเซสเซอร์จะทำสิ่งที่น่าอัศจรรย์: มันช่วยให้คุณสามารถนำเครื่องจักร (เช่นเครื่องซักผ้าหรือลิฟต์) และแทนที่กลไกหรือวงจรที่ออกแบบเองทั้งหมดด้วยซิลิคอนราคาถูกที่ผลิตขึ้นจำนวนมาก ชิป. คุณประหยัดเงินได้หลายส่วนและมีเวลามากในการออกแบบ
แต่แขวนบนชิปมาตรฐานแทนที่การออกแบบที่กำหนดเองมากมาย? ไม่มีไมโครโปรเซสเซอร์เดียวที่สมบูรณ์แบบที่สมบูรณ์แบบสำหรับทุกแอปพลิเคชัน แอพพลิเคชั่นบางตัวจำเป็นต้องลดการใช้พลังงาน แต่ไม่จำเป็นต้องรวดเร็ว คนอื่น ๆ ต้องเร็ว แต่ไม่จำเป็นต้องง่ายต่อการเขียนโปรแกรมคนอื่น ๆ ต้องมีต้นทุนต่ำ ฯลฯ
ดังนั้นเราจึงมี "รสชาติ" ที่แตกต่างกันของไมโครโปรเซสเซอร์แต่ละตัวมีจุดแข็งและจุดอ่อนของตัวเอง เป็นที่พึงปรารถนาสำหรับพวกเขาที่จะใช้ชุดคำสั่งที่ใช้งานร่วมกันได้เพราะจะช่วยให้ใช้รหัสซ้ำและทำให้สามารถค้นหาคนที่มีทักษะที่เหมาะสมได้ง่ายขึ้น อย่างไรก็ตามชุดการเรียนการสอนจะมีผลต่อต้นทุนความซับซ้อนความเร็วความง่ายในการใช้งานและข้อ จำกัด ทางกายภาพของโปรเซสเซอร์ดังนั้นเราจึงมีการประนีประนอม: มีชุดคำสั่ง "หลัก" อยู่สองสามชุด (และชุดย่อยหลายชุด) และ ภายในชุดคำสั่งแต่ละชุดมีโปรเซสเซอร์จำนวนมากที่มีคุณสมบัติแตกต่างกัน
โอ้และเมื่อมีการเปลี่ยนแปลงทางเทคโนโลยีการแลกเปลี่ยนเหล่านี้จะเปลี่ยนไปดังนั้นชุดการเรียนการสอนจึงมีวิวัฒนาการใหม่ ๆ เกิดขึ้นและสิ่งเก่า ๆ ก็ตายไป แม้ว่าจะมีชุดคำสั่งที่ "ดีที่สุด" ของวันนี้มันอาจจะไม่อยู่ใน 20 ปี
รายละเอียดฮาร์ดแวร์
อาจเป็นการตัดสินใจออกแบบที่ใหญ่ที่สุดในชุดคำสั่งคือขนาดของคำเช่นจำนวนตัวประมวลผลที่สามารถจัดการได้ "ตามธรรมชาติ" ตัวประมวลผล 8 บิตจัดการกับตัวเลขตั้งแต่ 0-255 ในขณะที่ตัวประมวลผล 32 บิตจัดการกับตัวเลขตั้งแต่ 0 ถึง 4,294,967,295 รหัสที่ออกแบบมาสำหรับหนึ่งจะต้องมีการคิดใหม่อย่างสมบูรณ์สำหรับอีก
มันไม่ใช่แค่เรื่องของการแปลคำสั่งจากชุดคำสั่งหนึ่งไปเป็นอีกชุด วิธีการที่แตกต่างกันอย่างสมบูรณ์อาจจะดีกว่าในชุดคำสั่งที่แตกต่างกัน ตัวอย่างเช่นในโปรเซสเซอร์ 8 บิตตารางการค้นหาอาจเหมาะในขณะที่โปรเซสเซอร์ 32 บิตการดำเนินการทางคณิตศาสตร์จะดีกว่าสำหรับจุดประสงค์เดียวกัน
มีความแตกต่างที่สำคัญอื่น ๆ ระหว่างชุดคำสั่ง คำแนะนำส่วนใหญ่แบ่งออกเป็นสี่ประเภท:
- การคำนวณ (เลขคณิตและตรรกะ)
- การควบคุมการไหล
- การถ่ายโอนข้อมูล
- การกำหนดค่าโปรเซสเซอร์
ตัวประมวลผลแตกต่างกันในการคำนวณประเภทใดที่พวกเขาสามารถทำได้รวมถึงวิธีการควบคุมการไหลการถ่ายโอนข้อมูลและการกำหนดค่าตัวประมวลผล
ตัวอย่างเช่นโปรเซสเซอร์ AVR บางตัวไม่สามารถคูณหรือหารได้ ในขณะที่โปรเซสเซอร์ x86 ทั้งหมดสามารถ อย่างที่คุณคิดการกำจัดวงจรที่จำเป็นสำหรับงานเช่นการคูณและการหารสามารถทำให้โปรเซสเซอร์ง่ายขึ้นและถูกลง การดำเนินการเหล่านี้ยังสามารถทำได้โดยใช้ซอฟต์แวร์รูทีนหากจำเป็น
x86 อนุญาตให้คำแนะนำทางคณิตศาสตร์โหลดตัวถูกดำเนินการจากหน่วยความจำและ / หรือบันทึกผลลัพธ์ลงในหน่วยความจำ ARM เป็นสถาปัตยกรรมของร้านโหลดและมีเพียงคำแนะนำเฉพาะสำหรับการเข้าถึงหน่วยความจำ ในขณะเดียวกัน x86 มีคำสั่งเฉพาะสาขาแบบมีเงื่อนไขในขณะที่ ARM อนุญาตให้ใช้คำสั่งทั้งหมดแบบมีเงื่อนไข นอกจากนี้ ARM ยังอนุญาตให้ทำการเลื่อนบิตเป็นส่วนหนึ่งของคำแนะนำทางคณิตศาสตร์ส่วนใหญ่ ความแตกต่างเหล่านี้นำไปสู่คุณลักษณะด้านประสิทธิภาพที่แตกต่างความแตกต่างในการออกแบบภายในและราคาของชิปและความแตกต่างในเทคนิคการเขียนโปรแกรมในระดับภาษาแอสเซมบลี
ข้อสรุป
เหตุผลที่เป็นไปไม่ได้ที่จะมีภาษาแอสเซมบลีสากลคือการแปลงรหัสแอสเซมบลีจากชุดคำสั่งหนึ่งเป็นอีกชุดหนึ่งอย่างถูกต้องหนึ่งจะต้องออกแบบรหัสทั้งหมดซ้ำอีกครั้ง