คำถามติดแท็ก bytecode

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

8
การใช้การแปลงซอร์สโค้ดเป็น Java bytecode คืออะไร
ถ้าใครต้องการ JVM ที่แตกต่างกันสำหรับสถาปัตยกรรมที่แตกต่างกันฉันไม่สามารถเข้าใจได้ว่าอะไรคือเหตุผลเบื้องหลังการแนะนำแนวคิดนี้ ในภาษาอื่นเราต้องการคอมไพเลอร์ที่แตกต่างกันสำหรับเครื่องที่แตกต่างกัน แต่ใน Java เราต้องการ JVM ที่แตกต่างกันดังนั้นอะไรคือตรรกะที่อยู่เบื้องหลังการนำเสนอแนวคิดของ JVM หรือขั้นตอนพิเศษนี้?
37 java  jvm  bytecode 


3
ทำไมไพ ธ อนจึงต้องการทั้งคอมไพเลอร์และล่าม
ฉันเข้าใจความจริงที่ว่า Java ต้องการทั้งคอมไพเลอร์และล่าม มันรวบรวมซอร์สโค้ดเป็น bytecode จากนั้นเครื่องเสมือน (บน Windows, Linux, Android ฯลฯ ) แปลว่า bytecode เป็นรหัสเครื่องสำหรับสถาปัตยกรรมปัจจุบัน แต่ทำไมไพ ธ อนจึงต้องการทั้งคอมไพเลอร์และล่าม เนื่องจาก Python ไม่ได้ขึ้นกับแพลตฟอร์มทำไมไม่ใช้แค่การตีความ? เท่าที่ฉันรู้คุณไม่สามารถรันโปรแกรม Python (เรียบเรียงเป็น bytecode) บนเครื่อง Windows หรือ Linux ใด ๆ โดยไม่มีการดัดแปลง หรือฉันผิด
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.