文章代寫 java虛擬機是用什么語言編寫的?它的原理誰能通俗的講出來嗎?
java虛擬機是用什么語言編寫的?它的原理誰能通俗的講出來嗎?Java虛擬機的功能是執(zhí)行Java字節(jié)碼,其編碼實現是一個死循環(huán)。每個循環(huán)都是獲取字節(jié)碼并執(zhí)行字節(jié)碼的過程,因此與其他程序沒有本質區(qū)別。主
java虛擬機是用什么語言編寫的?它的原理誰能通俗的講出來嗎?
Java虛擬機的功能是執(zhí)行Java字節(jié)碼,其編碼實現是一個死循環(huán)。每個循環(huán)都是獲取字節(jié)碼并執(zhí)行字節(jié)碼的過程,因此與其他程序沒有本質區(qū)別。主流的JavaVM大多是用C語言實現的,然后用匯編語言輔助實現,用Java實現JavaVM的情況有一些,但不多。
下面是使用C語言在智能設備中實現虛擬機的一個片段。
此代碼是短加法字節(jié)碼的實現。
這段代碼只是獲取字節(jié)碼并執(zhí)行它。你認為JavaVM就是這樣嗎。
為了優(yōu)化虛擬機的效率,很多人選擇用匯編的方式重寫執(zhí)行頻率高的代碼。
小結是C語言實現的許多,將與匯編結合起來作為輔助工具。有其他語言,但不是主流。
如果要編寫一個虛擬機需要了解哪些方面的知識?
虛擬機是一個抽象的計算機,它有一個指令集,使用不同的存儲區(qū)域,就像真正的計算機一樣。它負責執(zhí)行指令,以及管理數據、內存和寄存器。這個虛擬機為任何平臺上的編譯器提供了一個公共接口。編譯器只需面向虛擬機,生成虛擬機能夠理解的代碼,然后解釋器就可以將虛擬機代碼轉換成特定系統的機器代碼來執(zhí)行。虛擬機屬于模擬器,是一個不小的工程。學習別人的仿真器代碼應該會有很大的幫助。其實我們實現這個虛擬機就是為了實現一個編譯器,這本書中介紹的編譯器原理和設計與編譯原理,對您有很大的幫助。要編寫虛擬機,您需要了解以下方面:
1。首先,您需要了解虛擬機體系結構的指令系統以及有哪些指令。指令格式、尋址方式等
2。執(zhí)行每一個指令。為每條指令編寫一個函數以運行該指令。這必須有一個非常深刻的編程技巧。
3. 如果你對Java虛擬機有足夠的了解。。有一本書叫做深入Java虛擬機。你可以研究它!它能幫你很多忙。
如何在虛擬機上編寫和運行c程序?
要編寫虛擬機代碼,需要定義程序的指令。
1. 使用VIM/GVIM編輯器編寫代碼并將其保存為文件測試.cpp在命令行上使用G-O測試測試.cpp編譯,生成測試可執(zhí)行文件,測試運行文件。
2. 它是以內核的形式編寫的,編譯成模塊,插入到主機中,這樣模塊下來就不會影響程序的其他部分。
3. 在clang3.4中,還可以使用其他支持C99/C11的編譯器和文本編輯器。我建議使用基于ide的文本編輯器。我用Emacs,基本編程知識,基本變量,過程控制,函數數據結構等使程序可以更快。