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 調用靜態方法。
invokeinterface 調用接口方法。
new 創建一個對象,並將其引用壓入到棧頂。
newarray 創建一個原始類型的數組,並將其引用壓入到棧頂。
arraylength 獲得一個數組的長度,將將結果壓入到棧頂。
athrow 將棧頂的異常拋出。
checkcast 檢驗類型轉換,轉換未通過,將拋出ClassCastException.
instanceof 檢驗對象是否是指定的類的實例,如果是將1壓入棧頂,否則將0壓入棧頂
monitorenter 獲得對象的鎖,用於同步方法或同步塊
monitorexit 釋放對象的鎖,用於同步方法或同步塊
ifnull 爲null時跳轉
ifnonnull 不爲null時跳轉