我正計劃在Go中實現VM。我在教程中看到人們爲他們的虛擬機設計了自己的程序集類型,但虛擬機沒有直接執行彙編代碼。他們爲VM分配了每個指令的每個指令,併爲它們的機器分配一個特殊的字節碼。 解釋字節碼更好還是解釋彙編代碼並獲得相同結果?虛擬機是否必須解釋字節碼,還是可以直接解釋虛擬機的程序集?
2
A
回答
3
如果您想在不同的客戶平臺中使用您的VM,那麼是。
字節碼給你的優點是可移植性(因此備用命名「p代碼」,這是短期的「便攜式代碼」)。
如果你打算在不同的平臺上使用你的虛擬機,你應該選擇字節碼。然後,你必須注意將程序編譯成字節碼指令,虛擬機將負責其餘的部分。
1
語言運行時執行編譯的字節碼而不是文本彙編指令,因爲解析文本很慢。編寫良好的運行時可以在幾個處理器週期內解析和執行字節碼指令 - 但解析文本語句需要更多的工作。最簡單的方法是解析整個程序集文件,並以中間表示形式將其存儲在內存中 - 這正是字節碼。此外,諸如跳轉和尋址等一些事情在字節碼中才有意義。
不要將字節碼看作程序集的二進制表示,而應將程序集視爲字節碼的文本表示形式。
相關問題
- 1. python字節碼,解釋器和虛擬機
- 2. 良好的資源來解釋解釋Java虛擬機非標準選項Java虛擬機非標準選項
- 3. 瞭解虛擬機
- 4. 虛擬機遠程解密
- 5. 如何判斷虛擬機是否位於Xen 6虛擬機監控程序
- 6. 我可以檢測主機是否是虛擬機?
- 7. 是否可以在虛擬機上運行IPhone應用程序
- 8. Java的虛擬機的字節碼
- 9. 虛擬主機還是其他?
- 10. 替代解釋器的基於堆棧的虛擬機
- 11. 是否有可能從另一臺虛擬機中殺死Java虛擬機?
- 12. 虛擬主機內的虛擬主機
- 13. 虛擬機中的虛擬機 - 網絡
- 14. PHP在新的虛擬主機上未被瀏覽器解釋
- 15. 是否有用於LabVIEW的虛擬/虛擬IMAQ相機?
- 16. 是否可以使用PowerShell從主機登錄到虛擬機?
- 17. 虛擬機連接
- 18. Python解釋器,虛擬環境和pycharm
- 19. 虛擬化書 - 需要技術解釋
- 20. 是否有一個JavaScript的虛擬機?
- 21. 可用性集合中的單個虛擬機如何與虛擬機中的虛擬機不同?
- 22. 有人可以解釋這個虛擬功能的行爲?
- 23. 虛擬機的Mysql集羣
- 24. 您是否可以鎖定虛擬機中的虛擬機以避免意外刪除?
- 25. Hyperledger Fabric是否有虛擬機?
- 26. 虛擬機是否與jsp預捆綁?
- 27. 虛擬機啓動時虛擬機的啓動過程是什麼
- 28. 是否可以在Oracle中使虛擬列不再虛擬化?
- 29. 用純虛擬覆蓋虛擬..是否可以?
如果您打算只支持一個平臺,例如x86,沒有立即需要抽象說明。所以這取決於你想達到什麼。 – nemo
我希望我的虛擬機能夠獨立運行平臺。 – user3318845
對不起,我的意思是客人的平臺。你想支持不同的平臺作爲客人嗎? – nemo