ผลต่างระหว่างรุ่นของ "รหัสเครื่อง"

เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
Octahedron80 (คุย | ส่วนร่วม)
Octahedron80 (คุย | ส่วนร่วม)
บรรทัด 13:
 
ไม่ใช่ว่าทุกเครื่องหรือทุกคำสั่งจะมีตัวถูกดำเนินการชัดแจ้ง [[เครื่องที่ใช้ตัวสะสม]] (accumulator machine) มีตัวถูกดำเนินการข้างซ้ายแบบผสม และคืนค่าผลลัพธ์ในตัวสะสม (accumulator) ปริยาย สำหรับคำสั่งเลขคณิตส่วนใหญ่ สถาปัตยกรรมอื่น (เช่น 8086 และตระกูล x86) มีคำสั่งธรรมดาในรุ่นของตัวสะสมอยู่ด้วย ซึ่งคำสั่งที่ยาวกว่าจะทำเรจิสเตอร์อันหนึ่งในเรจิสเตอร์ทั่วไปเป็นตัวสะสม [[เครื่องที่ใช้กองซ้อน]] (stack machine) มีตัวถูกดำเนินการส่วนใหญ่หรือทั้งหมดอยู่บนกองซ้อนปริยาย คำสั่งเครื่องที่มีจุดประสงค์พิเศษก็มักจะขาดตัวถูกดำเนินการชัดแจ้ง (ตัวอย่างเช่น ซีพียูไอดีในสถาปัตยกรรม x86 เขียนค่าต่าง ๆ ลงในเรจิสเตอร์ปลายทางเป็นปริยาย 4 เรจิสเตอร์) ความแตกต่างระหว่างตัวถูกดำเนินการชัดแจ้งกับปริยายเช่นนี้สำคัญต่อโปรแกรมสร้างรหัสเครื่อง โดยเฉพาะอย่างยิ่งในเรื่องการจัดสรรเรจิสเตอร์และส่วนติดตามพิสัยแบบสด โปรแกรมทำรหัสให้เหมาะที่สุด (code optimizer) ที่ดีสามารถติดตามตัวถูกดำเนินการทั้งชัดแจ้งและปริยาย ซึ่งอาจช่วยให้เกิด[[การแพร่กระจายค่าคงตัว]] (constant propagation) ได้บ่อยยิ่งขึ้น [[การพับทบค่าคงตัว]] (constant folding) ของเรจิสเตอร์ (เรจิสเตอร์ที่กำหนดให้เป็นผลลัพธ์จากนิพจน์ของค่าคงตัวจะถูกแทนที่ด้วยค่าคงตัวนั้น) และการปรับปรุงรหัสอื่น ๆ ให้ดีขึ้น
 
== โปรแกรม ==
โปรแกรมคอมพิวเตอร์คือลำดับของคำสั่งเครื่องที่กระทำการโดยหน่วยประมวลผลกลาง ขณะที่หน่วยประมวลผลอย่างง่ายกระทำการคำสั่งเครื่องทีละคำสั่ง แต่หน่วยประมวลผล[[ซูเปอร์สเกลาร์]] (superscalar) สามารถกระทำการคำสั่งได้พร้อม ๆ กันหลายคำสั่ง
 
[[การไหลของโปรแกรม]] (program flow) อาจได้รับอิทธิพลจากคำสั่ง "กระโดด" แบบพิเศษที่ถ่ายโอนการกระทำการไปยังคำสั่งอื่นแทนที่จะเป็นคำสั่งในลำดับถัดไป [[การแยกทาง (วิทยาการคอมพิวเตอร์)|การกระโดดแบบมีเงื่อนไข]]จะเกิดขึ้น (การกระทำการดำเนินต่อที่ตำแหน่งอื่น) หรือไม่เกิดขึ้นก็ได้ (การกระทำดำเนินต่อไปยังคำสั่งถัดไป) โดยขึ้นอยู่กับเงื่อนไขที่กำหนด
 
== ตัวอย่าง ==