JVM指令集理解

2021-06-19 22:45:54 字數 2018 閱讀 4937

1.凡是帶const的表示將什麼資料壓運算元棧。

如:iconst_2 將int型資料2壓入到運算元棧

aconst_null  將null值壓入棧。

2.bipush和sipush  表示將單位元組或者短整形的常量值壓入運算元棧。

3.帶ldc的表示將什麼型別資料從常量池中壓入到運算元棧。

如:ldc_w  將int或者flat或者string型別的資料壓入到運算元棧。(寬索引)

ldc2_w  將long或者double型別的資料壓入到運算元棧。(寬索引)

4.凡是帶load的指令表示將某型別的區域性變數資料壓入到運算元棧的棧頂。

如:iload   表示將int型別的區域性變數壓入到運算元棧的棧頂。

aload  以a開頭的表示將引用型別的區域性變數壓入到運算元棧的棧頂。

iload_1 將區域性變數陣列裡面下標為1的int型別的資料壓入到運算元棧。

iaload   將int型陣列的指定索引的值壓入到運算元棧。

5.凡是帶有store指令的表示將運算元棧頂的某型別的值存入指定的區域性變數中。

如:istore  表示將棧頂int型別的資料存入到指定的區域性變數中。

istore_3  表示將棧int型別的資料存入到區域性變數陣列的下標為3的元素中。

6.pop  將棧頂資料彈出。pop2將棧頂的乙個long或者double資料從棧頂彈出來。

7.dup  複製棧頂的資料並將複製的值也壓入到棧頂。

dup2  複製棧頂乙個long或者是double的資料並將複製的值也壓入到棧頂。

8.swap  將棧最頂端的兩個值互換。

9.iadd 將棧頂兩個int型的資料相加然後將結果再次的壓入到棧頂。

isub 將棧頂兩個int型的資料相減然後將結果再次的壓入到棧頂。

imul 將棧頂兩個int型的資料相乘然後將結果再次的壓入到棧頂。

idiv  將棧頂兩個int型的資料相除然後將結果再次的壓入到棧頂。

irem 將棧頂兩個int型的資料取模運算然後將結果再次的壓入到棧頂。.

ineg 將棧頂的int資料取負將結果壓入到棧頂。

iinc  將指定的int變數增加指定值(i++,i--,i+=2)

i2l   將棧頂int型別資料強制轉換成long型將結果壓入到棧頂。

lcmp  將棧頂兩long型資料的大小進行比較,並將結果(1,0,-1)壓入棧頂。

10。以if開頭的指令都是跳轉指令。

11。tableswitch、lookupswitch  表示用switch條件跳轉。

12。ireturn  從當前方法返回int型資料。

13。getstatic  獲取指定類的靜態域,將將結果壓入到棧頂。

putstatic 為指定的類的靜態域賦值。

getfield   獲取指定類的例項變數,將結果壓入到棧頂。

putfield   為指定類的例項變數賦值。

invokevirtual  呼叫例項方法。

invokespacial  呼叫超類構造方法,例項初始化方法,私有方法。

invokestatic  呼叫靜態方法。

invokeinte***ce  呼叫介面方法。

new 建立乙個物件,並將其引用壓入到棧頂。

newarray  建立乙個原始型別的陣列,並將其引用壓入到棧頂。

arraylength   獲得乙個陣列的長度,將將結果壓入到棧頂。

athrow   將棧頂的異常丟擲。

checkcast  檢驗型別轉換,轉換未通過,將丟擲classcastexception.

instanceof檢驗物件是否是指定的類的例項,如果是將1

壓入棧頂,否則將0

壓入棧頂

monitorenter   獲得物件的鎖,用於同步方法或同步塊  

monitorexit    釋放物件的鎖,用於同步方法或同步塊

ifnull    為null時跳轉

ifnonnull   不為null時跳轉

JVM 指令集總結

1.凡是帶const的表示將什麼資料壓運算元棧。如 iconst 2 將int型資料2壓入到運算元棧 aconst null 將null值壓入棧。2.bipush和sipush 表示將單位元組或者短整形的常量值壓入運算元棧。3.帶ldc的表示將什麼型別資料從常量池中壓入到運算元棧。如 ldc w 將...

mysql bin指令集 mysql指令集

一 連線mysql。1 連線到本機上的mysql。首先開啟dos視窗,然後進入目錄mysql bin,再鍵入命令mysql u root p,回車後提示你輸密碼.注意使用者名稱前可以有空格也可以沒有空格,但是密碼前必須沒有空格,否則讓你重新輸入密碼.如果剛安裝好mysql,超級使用者root是沒有密...

gbip指令集 GB CPU 指令與指令集

gb cpu 指令與指令集 到目前為止,雖然 cpu 已經擁有了算術邏輯單元 alu 進行算術邏輯運算和使用暫存器儲存資料,但它仍然缺少一些正常工作時需要的資訊.就像建築工人無法僅僅依靠材料和工具憑空造出一棟高樓大廈,除非建築師能為其提供詳細的建築圖紙.cpu 也是一樣的,開發者需要通過某種方式告訴...