第一部分 字節(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)得一段指令序列的同步。