4
เหตุใด VMs จึงจำเป็นต้องเป็น "เครื่องซ้อน" หรือ "เครื่องลงทะเบียน" ฯลฯ
(นี่เป็นคำถามที่มือใหม่มาก) ฉันได้ศึกษาเกี่ยวกับ Virtual Machines เล็กน้อยแล้ว ปรากฎว่าส่วนมากของพวกเขาได้รับการออกแบบคล้ายกับคอมพิวเตอร์ทางกายภาพหรือทางทฤษฎี ฉันอ่านว่า JVM เป็น 'เครื่องซ้อน' หมายความว่า (และแก้ไขให้ฉันถ้าฉันผิด) คือมันเก็บทุกอย่างไว้ใน 'หน่วยความจำชั่วคราว' บนสแต็กและทำการดำเนินการบนสแต็กนี้สำหรับ opcodes ทั้งหมด ตัวอย่างเช่นซอร์สโค้ด2 + 3จะถูกแปลเป็น bytecode คล้ายกับ: push 2 push 3 add คำถามของฉันคือ: JVMs อาจเขียนโดยใช้ C / C ++ และเช่นนั้น ถ้าเป็นเช่นนั้นทำไม JVM ไม่รันโค้ด C ต่อไปนี้: 2 + 3.. ? ฉันหมายความว่าเหตุใดจึงต้องใช้สแต็กหรือใน 'รีจิสเตอร์' VM อื่น ๆ - …