JVM筆記(5)-類(lèi)文件結(jié)構(gòu)(3)

第一部分 字節(jié)碼指令簡(jiǎn)介

  字節(jié)碼是什么:字節(jié)碼指令定義:有一個(gè)字節(jié)長(zhǎng)度的,代表著某種特定操作含義的數(shù)字(稱之操作碼),以及跟隨其后的零至多個(gè)代表此操作所需的參數(shù)(稱之為操作數(shù))構(gòu)成。

  由于虛擬機(jī)采用的面向操作數(shù)棧而不是面向寄存器的構(gòu)架。所以大多數(shù)指令都不包含操作數(shù),只有一個(gè)操作碼,指令參數(shù)都存放在操作數(shù)棧之中。

  字節(jié)碼指令組成:操作碼+操作數(shù),但是因?yàn)闃?gòu)架的原因,字節(jié)碼指令 =操作碼

? ? ? ? 字節(jié)碼指令干什么的:?

  字節(jié)碼指令的作用是什么:

第二部分 字節(jié)碼的數(shù)據(jù)類(lèi)型

  1 加載和存儲(chǔ)指令:將數(shù)據(jù)在棧幀中的局部變量表和操作數(shù)棧之間來(lái)回傳輸。

  2 運(yùn)算指令:將倆個(gè)操作數(shù)棧上的值進(jìn)行某種特定運(yùn)算,并把結(jié)果重新存入到操作數(shù)棧頂。

  3 類(lèi)型轉(zhuǎn)換指令:可以將倆種不同的數(shù)值類(lèi)型進(jìn)行轉(zhuǎn)換。

  4 對(duì)象創(chuàng)建于訪問(wèn)指令:實(shí)例和數(shù)組都是對(duì)象,但是對(duì)于實(shí)例和數(shù)組的創(chuàng)建和訪問(wèn)都是不相同。

  5 操作數(shù)棧管理指令:用于直接操作操作數(shù)棧的指令。

  6控制轉(zhuǎn)移指令:可以讓Java虛擬機(jī)有條件或無(wú)條件地從指定位置指令的下一條指令繼續(xù)執(zhí)行程序,從概念模型上理解,可以認(rèn)為控制指令就是在有條件或無(wú)條件地修改pc寄存器的值。

  7方法調(diào)用和返回指令:主要是方法的調(diào)用與數(shù)據(jù)類(lèi)型無(wú)關(guān),而方法返回指令是根據(jù)返回的類(lèi)型區(qū)分的。

  8異常處理指令:在《Java虛擬機(jī)規(guī)范》還規(guī)定運(yùn)行時(shí)異常會(huì)在其它Java虛擬機(jī)指令檢測(cè)到異常狀況自動(dòng)拋出。

  9 同步指令:可以支持方法級(jí)的同步和方法內(nèi)得一段指令序列的同步。

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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