JVM 2種實(shí)現(xiàn)方式的對(duì)比

常見(jiàn)的虛擬實(shí)現(xiàn)方式有以下兩種:

1. 基于棧式架構(gòu)的特點(diǎn)

  • 設(shè)計(jì)和實(shí)現(xiàn)更簡(jiǎn)單,適用于資源受限的系統(tǒng)
  • 避開(kāi)了寄存器的分配問(wèn)題:使用零地址指令方式分配
  • 指令流中的指令大部分是零地址指令,其執(zhí)行過(guò)程依賴于操作棧。指令集更小,編譯器容易實(shí)現(xiàn)。
  • 不需要硬件支持,可移植性更好,更好實(shí)現(xiàn)跨平臺(tái)

2. 基于寄存器架構(gòu)的特點(diǎn)

  • 典型的應(yīng)用是x86的二進(jìn)制指令集:比如傳統(tǒng)的PC以及Android的Davlik虛擬機(jī)。
  • 指令集架構(gòu)則完全依賴硬件,可移植性差
  • 性能優(yōu)秀和執(zhí)行更高效
  • 花費(fèi)更少的指令去完成一項(xiàng)操作
  • 在大部分情況下,基于寄存器架構(gòu)的指令集往往都以一地址指令、二地址指令和三地址指令為主,而基于寄存器架構(gòu)的指令集卻是以零地址指令為主

關(guān)于指令的概念

機(jī)器指令就是機(jī)器語(yǔ)言的一條語(yǔ)句,是一組有意義的二進(jìn)制代碼

指令的結(jié)構(gòu)如下:

指令結(jié)構(gòu)

指令的分類

1. 零地址指令

指給出操作碼,沒(méi)有顯示地址,適用于:

  • 不需要地址碼的指令,例如空操作、停機(jī)、關(guān)中斷指令等;
  • 堆棧計(jì)算機(jī)中,僅僅依靠入棧和出棧操作進(jìn)行運(yùn)算,典型的就是Java虛擬機(jī)
    零地址指令

2.一地址指令

定義:指令編碼中只有一個(gè)地址碼,指出了參加操作的一個(gè)操作數(shù)的存儲(chǔ)位置,被操作數(shù)則隱含在累加器中,這樣的指令稱為一地址指令。


一地址指令

2.二地址指令

二地址指令

3.三地址指令

三地址指令

4.四地址指令

四地址指令
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 尋址方式是根據(jù)指令中給出的地址碼字段來(lái)實(shí)現(xiàn)尋找真實(shí)操作數(shù)地址的方式,ARM 處理器有 9 種基本尋址方式。 寄存器...
    Colin_狂奔的螞蟻閱讀 911評(píng)論 0 0
  • JVM體系結(jié)構(gòu)與工作方式 JAVA能夠跨越計(jì)算機(jī)硬件組成差異和操作系統(tǒng)的差異在不同的主機(jī)上運(yùn)行,主要就是JVM屏蔽...
    生瓜蛋子閱讀 192評(píng)論 0 1
  • 表情是什么,我認(rèn)為表情就是表現(xiàn)出來(lái)的情緒。表情可以傳達(dá)很多信息。高興了當(dāng)然就笑了,難過(guò)就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,634評(píng)論 2 7
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險(xiǎn)厭惡者,不喜歡去冒險(xiǎn),但是人生放棄了冒險(xiǎn),也就放棄了無(wú)數(shù)的可能。 ...
    yichen大刀閱讀 7,791評(píng)論 0 4

友情鏈接更多精彩內(nèi)容