黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 7種常見(jiàn)的JVM指令

7種常見(jiàn)的JVM指令

更新時(shí)間:2020-10-10 17:39:40 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1589次

Java虛擬機(jī)有自己完善的硬件架構(gòu),如處理器、堆棧等,還具有相應(yīng)的指令系統(tǒng)。Java虛擬機(jī)的指令由一個(gè)字節(jié)長(zhǎng)度的、代表著某種特定操作含義的操作碼以及跟隨其后的零至多個(gè)代表此操作所需參數(shù)的操作數(shù)所構(gòu)成。虛擬機(jī)中許多指令并不包含操作數(shù),只有一個(gè)操作碼。下面就為大家介紹一下日常使用JVM用到的JVM指令


1.newarray指令

創(chuàng)建一個(gè)指定原始類(lèi)型(如int、float、char等)的數(shù)組,并將其引用值壓入棧頂。

執(zhí)行該指令后,將從操作數(shù)棧出棧1個(gè)參數(shù)count,類(lèi)型為int,表示要?jiǎng)?chuàng)建數(shù)組的大小。


2.iastore指令

從操作數(shù)棧讀取一個(gè)int類(lèi)型數(shù)據(jù)并存入指定數(shù)組中。

執(zhí)行該指令后,將從操作數(shù)棧出棧3個(gè)參數(shù)arrayref、index和value,在本例中分別對(duì)應(yīng)于第10、11和13索引位置壓入的值。

其中,arrayref是一個(gè)引用類(lèi)型值,指向一個(gè)int類(lèi)型的數(shù)組。index和value為int類(lèi)型,index表示待存入數(shù)組位置的索引號(hào),value表示待存入index索引位置的值。


3.iaload指令

從數(shù)組中加載一個(gè)int類(lèi)型數(shù)據(jù)到操作數(shù)棧。

執(zhí)行該指令后,將從操作數(shù)棧出棧2個(gè)參數(shù)arrayref和index,在本例中分別對(duì)應(yīng)于第15和16索引位置壓入的值。

其中,arrayref是一個(gè)引用類(lèi)型值,指向一個(gè)int類(lèi)型的數(shù)組。index為int類(lèi)型,表示待加載數(shù)組數(shù)據(jù)的索引號(hào)。


4.aastore指令

(aastore指令與iastore指令作用類(lèi)似)

從操作數(shù)棧讀取一個(gè)引用類(lèi)型數(shù)據(jù)并存入指定數(shù)組中。

執(zhí)行該指令后,將從操作數(shù)棧出棧3個(gè)參數(shù)arrayref、index和value,在本例中分別對(duì)應(yīng)于第8、9和10索引位置壓入的值。

其中,arrayref是一個(gè)引用類(lèi)型值,指向一個(gè)引用類(lèi)型的數(shù)組。index為int類(lèi)型,index表示待存入數(shù)組位置的索引號(hào)。value為引用類(lèi)型,表示待存入index索引位置的值。

在運(yùn)行時(shí),value的實(shí)際類(lèi)型必須與arrayref所代表的數(shù)組的組件類(lèi)型相匹配。


5.multianewarray指令

創(chuàng)建指定類(lèi)型和指定維度的多維數(shù)組(執(zhí)行該指令時(shí),操作數(shù)棧中必須包含各維度的長(zhǎng)度值),并將其引用值壓入棧頂。可以用于創(chuàng)建所有類(lèi)型的多維數(shù)組。

對(duì)于本實(shí)例,數(shù)組類(lèi)型為[[[I,即#16對(duì)應(yīng)的常量池中的符號(hào)引用。數(shù)組維度為2,兩個(gè)維度的長(zhǎng)度值分別為10和5。雖然int[][][]為3維數(shù)組,但由于僅指定了前2個(gè)維度的長(zhǎng)度值,因此指令對(duì)應(yīng)的維度值為2。

如果指定了第3個(gè)維度的長(zhǎng)度值,那么在iconst_5之后還需要再將1個(gè)int類(lèi)型長(zhǎng)度值壓入棧。

所有的數(shù)組都有一個(gè)與之關(guān)聯(lián)的長(zhǎng)度屬性,可通過(guò)arraylength指令訪問(wèn)。


6.tableswitch指令

用于switch條件跳轉(zhuǎn),case值連續(xù)(變長(zhǎng)指令)。

根據(jù)索引值在跳轉(zhuǎn)表中尋找配對(duì)的分支并進(jìn)行跳轉(zhuǎn)。

指令格式:tableswitch padbytes defaultbytes lowbytes highbytes jumptablebytes

padbytes:0~3個(gè)填充字節(jié),以使得defaultbytes與方法起始地址(方法內(nèi)第一條指令的操作碼所在的地址)之間的距離是4的位數(shù)。

defaultbytes:32位默認(rèn)跳轉(zhuǎn)地址

lowbytes:32位低值low

highbytes:32位高值high

jumptablebytes:(high-low+1)個(gè)32位有符號(hào)數(shù)值形成的一張零基址跳轉(zhuǎn)表(0-based jump table)


7. lookupswitch指令

用于switch條件跳轉(zhuǎn),case值不連續(xù)(變長(zhǎng)指令)。

根據(jù)鍵值(非索引)在跳轉(zhuǎn)表中尋找配對(duì)的分支并進(jìn)行跳轉(zhuǎn)。

指令格式:lookupswitch padbytes defaultbytes npairsbytes matchoffsetbytes

padbytes:0~3個(gè)填充字節(jié),以使得defaultbytes與方法起始地址(方法內(nèi)第一條指令的操作碼所在的地址)之間的距離是4的位數(shù)。

defaultbytes:32位默認(rèn)跳轉(zhuǎn)地址

npairsbytes:32位匹配鍵值對(duì)的數(shù)量npairs

matchoffsetbytes:npairs個(gè)鍵值對(duì),每一組鍵值對(duì)都包含了一個(gè)int類(lèi)型值match以及一個(gè)有符號(hào)32位偏移量offset。


以上就是為大家介紹的日常用到的7種常用JVM指令,在使用JVM的時(shí)候難免會(huì)有用到JVM指令的時(shí)候,系統(tǒng)學(xué)習(xí)JVM指令以備不時(shí)之需。當(dāng)然,你也可以觀看本站的Java零基礎(chǔ)教程,了解和學(xué)習(xí)更全面的JVM知識(shí),夯實(shí)Java基礎(chǔ)!


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 五月在线视频 | 2020精品极品国产色在线观看 | 中文字幕精品在线 | 中国毛片基地 | 国亚洲欧美日韩精品 | 成免费网站 | 成人网视频 | 在线免费福利 | 日韩a级| 亚洲人成网站看在线播放 | 欧美怡红院免费的全部视频 | www日韩在线 | 人人夜| 玖玖视频精品 | 一个人看的www在线播放 | 国内三级free性hd | 国产日韩综合 | 亚洲欧美日本国产综合在线 | 中文字幕在线精品视频入口一区 | 免费网站黄色 | 久久黄色网址 | 8x成人永久在线观看视频 | 久久亚洲欧美综合激情一区 | 日本三级黄视频 | 网站色| 久久笫一福利免费导航 | 免费日韩网站 | 国产欧美日韩不卡一区二区三区 | 精品成人免费视频 | 日韩伦理亚洲欧美在线一区 | 欧美xxxxxx| 91在线 | 亚洲 | 亚州激情视频 | 国产一级一国产一级毛片 | 中文字幕日韩三级 | 91久久偷偷做嫩草影院免 | 黑人与中国女一级毛片不卡 | 亚洲成a人片77777老司机 | 在线a亚洲视频播放在线观看 | 一级毛片毛片毛片毛毛片 | 国产日韩欧美精品一区二区三区 |