大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 7種常見的JVM指令

7種常見的JVM指令

更新時間:2020-10-10 17:39:40 來源:動力節點 瀏覽1618次

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


1.newarray指令

創建一個指定原始類型(如int、float、char等)的數組,并將其引用值壓入棧頂。

執行該指令后,將從操作數棧出棧1個參數count,類型為int,表示要創建數組的大小。


2.iastore指令

從操作數棧讀取一個int類型數據并存入指定數組中。

執行該指令后,將從操作數棧出棧3個參數arrayref、index和value,在本例中分別對應于第10、11和13索引位置壓入的值。

其中,arrayref是一個引用類型值,指向一個int類型的數組。index和value為int類型,index表示待存入數組位置的索引號,value表示待存入index索引位置的值。


3.iaload指令

從數組中加載一個int類型數據到操作數棧。

執行該指令后,將從操作數棧出棧2個參數arrayref和index,在本例中分別對應于第15和16索引位置壓入的值。

其中,arrayref是一個引用類型值,指向一個int類型的數組。index為int類型,表示待加載數組數據的索引號。


4.aastore指令

(aastore指令與iastore指令作用類似)

從操作數棧讀取一個引用類型數據并存入指定數組中。

執行該指令后,將從操作數棧出棧3個參數arrayref、index和value,在本例中分別對應于第8、9和10索引位置壓入的值。

其中,arrayref是一個引用類型值,指向一個引用類型的數組。index為int類型,index表示待存入數組位置的索引號。value為引用類型,表示待存入index索引位置的值。

在運行時,value的實際類型必須與arrayref所代表的數組的組件類型相匹配。


5.multianewarray指令

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

對于本實例,數組類型為[[[I,即#16對應的常量池中的符號引用。數組維度為2,兩個維度的長度值分別為10和5。雖然int[][][]為3維數組,但由于僅指定了前2個維度的長度值,因此指令對應的維度值為2。

如果指定了第3個維度的長度值,那么在iconst_5之后還需要再將1個int類型長度值壓入棧。

所有的數組都有一個與之關聯的長度屬性,可通過arraylength指令訪問。


6.tableswitch指令

用于switch條件跳轉,case值連續(變長指令)。

根據索引值在跳轉表中尋找配對的分支并進行跳轉。

指令格式:tableswitch padbytes defaultbytes lowbytes highbytes jumptablebytes

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

defaultbytes:32位默認跳轉地址

lowbytes:32位低值low

highbytes:32位高值high

jumptablebytes:(high-low+1)個32位有符號數值形成的一張零基址跳轉表(0-based jump table)


7. lookupswitch指令

用于switch條件跳轉,case值不連續(變長指令)。

根據鍵值(非索引)在跳轉表中尋找配對的分支并進行跳轉。

指令格式:lookupswitch padbytes defaultbytes npairsbytes matchoffsetbytes

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

defaultbytes:32位默認跳轉地址

npairsbytes:32位匹配鍵值對的數量npairs

matchoffsetbytes:npairs個鍵值對,每一組鍵值對都包含了一個int類型值match以及一個有符號32位偏移量offset。


以上就是為大家介紹的日常用到的7種常用JVM指令,在使用JVM的時候難免會有用到JVM指令的時候,系統學習JVM指令以備不時之需。當然,你也可以觀看本站的Java零基礎教程,了解和學習更全面的JVM知識,夯實Java基礎!


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 欧美亚洲综合图区在线 | a集毛片 | 久久99国产视频 | 亚洲一区二区观看 | 最新国产精品自拍 | 国产成人看片免费视频观看 | 激情综合五月婷婷 | 99热这里只有精品国产99 | 97天天干 | 日本欧美成 | 亚洲综合国产一区在线 | 九热这里只有精品 | 国产欧美成人一区二区三区 | 久久国产视频在线观看 | 97在线视频免费 | 欧美在线色视频 | 亚洲国产精品国产自在在线 | 欧美精品综合 | 国产中文一区 | 亚洲高清在线观看看片 | 一区二区三区免费视频网站 | 国产高清在线精品一区二区 | 99爱视频在线| 免费香蕉依人在线视频久 | 国产福利在线小视频 | 一本久道久综合久久鬼色 | 超清波多野结衣精品一区 | 欧美日韩一区二区三区自拍 | 日本在线一级 | 夜夜艹日日干 | 国产在线视频福利 | 国产草草视频 | 色噜噜狠狠一区二区三区 | 久久精品久久精品国产大片 | 国产日韩精品视频一区二区三区 | 国产精品永久免费视频 | 狠狠色狠狠色很很综合很久久 | 日韩欧美在线中文字幕 | 天天视频一区二区三区 | 久久视频免费 | 亚洲国产一区二区a毛片 |