| 0×00 |
nop |
什么都不做 |
| 0×01 |
aconst_null |
將null推送至棧頂 |
| 0×02 |
iconst_m1 |
將int型-1推送至棧頂 |
| 0×03 |
iconst_0 |
將int型0推送至棧頂 |
| 0×04 |
iconst_1 |
將int型1推送至棧頂 |
| 0×05 |
iconst_2 |
將int型2推送至棧頂 |
| 0×06 |
iconst_3 |
將int型3推送至棧頂 |
| 0×07 |
iconst_4 |
將int型4推送至棧頂 |
| 0×08 |
iconst_5 |
將int型5推送至棧頂 |
| 0×09 |
lconst_0 |
將long型0推送至棧頂 |
| 0x0a |
lconst_1 |
將long型1推送至棧頂 |
| 0x0b |
fconst_0 |
將float型0推送至棧頂 |
| 0x0c |
fconst_1 |
將float型1推送至棧頂 |
| 0x0d |
fconst_2 |
將float型2推送至棧頂 |
| 0x0e |
dconst_0 |
將double型0推送至棧頂 |
| 0x0f |
dconst_1 |
將double型1推送至棧頂 |
| 0×10 |
bipush |
將單字節(jié)的常量值(-128~127)推送至棧頂 |
| 0×11 |
sipush |
將一個短整型常量值(-32768~32767)推送至棧頂 |
| 0×12 |
ldc |
將int, float或String型常量值從常量池中推送至棧頂 |
| 0×13 |
ldc_w |
將int, float或String型常量值從常量池中推送至棧頂(寬索引) |
| 0×14 |
ldc2_w |
將long或double型常量值從常量池中推送至棧頂(寬索引) |
| 0×15 |
iload |
將指定的int型本地變量推送至棧頂 |
| 0×16 |
lload |
將指定的long型本地變量推送至棧頂 |
| 0×17 |
fload |
將指定的float型本地變量推送至棧頂 |
| 0×18 |
dload |
將指定的double型本地變量推送至棧頂 |
| 0×19 |
aload |
將指定的引用類型本地變量推送至棧頂 |
| 0x1a |
iload_0 |
將第0個int型本地變量推送至棧頂 |
| 0x1b |
iload_1 |
將第1個int型本地變量推送至棧頂 |
| 0x1c |
iload_2 |
將第2個int型本地變量推送至棧頂 |
| 0x1d |
iload_3 |
將第3個int型本地變量推送至棧頂 |
| 0x1e |
lload_0 |
將第0個long型本地變量推送至棧頂 |
| 0x1f |
lload_1 |
將第1個long型本地變量推送至棧頂 |
| 0×20 |
lload_2 |
將第2個long型本地變量推送至棧頂 |
| 0×21 |
lload_3 |
將第3個long型本地變量推送至棧頂 |
| 0×22 |
fload_0 |
將第0個float型本地變量推送至棧頂 |
| 0×23 |
fload_1 |
將第1個float型本地變量推送至棧頂 |
| 0×24 |
fload_2 |
將第2個float型本地變量推送至棧頂 |
| 0×25 |
fload_3 |
將第3個float型本地變量推送至棧頂 |
| 0×26 |
dload_0 |
將第0個double型本地變量推送至棧頂 |
| 0×27 |
dload_1 |
將第1個double型本地變量推送至棧頂 |
| 0×28 |
dload_2 |
將第2個double型本地變量推送至棧頂 |
| 0×29 |
dload_3 |
將第3個double型本地變量推送至棧頂 |
| 0x2a |
aload_0 |
將第0個引用類型本地變量推送至棧頂 |
| 0x2b |
aload_1 |
將第1個引用類型本地變量推送至棧頂 |
| 0x2c |
aload_2 |
將第2個引用類型本地變量推送至棧頂 |
| 0x2d |
aload_3 |
將第3個引用類型本地變量推送至棧頂 |
| 0x2e |
iaload |
將int型數(shù)組指定索引的值推送至棧頂 |
| 0x2f |
laload |
將long型數(shù)組指定索引的值推送至棧頂 |
| 0×30 |
faload |
將float型數(shù)組指定索引的值推送至棧頂 |
| 0×31 |
daload |
將double型數(shù)組指定索引的值推送至棧頂 |
| 0×32 |
aaload |
將引用型數(shù)組指定索引的值推送至棧頂 |
| 0×33 |
baload |
將boolean或byte型數(shù)組指定索引的值推送至棧頂 |
| 0×34 |
caload |
將char型數(shù)組指定索引的值推送至棧頂 |
| 0×35 |
saload |
將short型數(shù)組指定索引的值推送至棧頂 |
| 0×36 |
istore |
將棧頂int型數(shù)值存入指定本地變量 |
| 0×37 |
lstore |
將棧頂long型數(shù)值存入指定本地變量 |
| 0×38 |
fstore |
將棧頂float型數(shù)值存入指定本地變量 |
| 0×39 |
dstore |
將棧頂double型數(shù)值存入指定本地變量 |
| 0x3a |
astore |
將棧頂引用型數(shù)值存入指定本地變量 |
| 0x3b |
istore_0 |
將棧頂int型數(shù)值存入第0個本地變量 |
| 0x3c |
istore_1 |
將棧頂int型數(shù)值存入第1個本地變量 |
| 0x3d |
istore_2 |
將棧頂int型數(shù)值存入第2個本地變量 |
| 0x3e |
istore_3 |
將棧頂int型數(shù)值存入第3個本地變量 |
| 0x3f |
lstore_0 |
將棧頂long型數(shù)值存入第0個本地變量 |
| 0×40 |
lstore_1 |
將棧頂long型數(shù)值存入第1個本地變量 |
| 0×41 |
lstore_2 |
將棧頂long型數(shù)值存入第2個本地變量 |
| 0×42 |
lstore_3 |
將棧頂long型數(shù)值存入第3個本地變量 |
| 0×43 |
fstore_0 |
將棧頂float型數(shù)值存入第0個本地變量 |
| 0×44 |
fstore_1 |
將棧頂float型數(shù)值存入第1個本地變量 |
| 0×45 |
fstore_2 |
將棧頂float型數(shù)值存入第2個本地變量 |
| 0×46 |
fstore_3 |
將棧頂float型數(shù)值存入第3個本地變量 |
| 0×47 |
dstore_0 |
將棧頂double型數(shù)值存入第0個本地變量 |
| 0×48 |
dstore_1 |
將棧頂double型數(shù)值存入第1個本地變量 |
| 0×49 |
dstore_2 |
將棧頂double型數(shù)值存入第2個本地變量 |
| 0x4a |
dstore_3 |
將棧頂double型數(shù)值存入第3個本地變量 |
| 0x4b |
astore_0 |
將棧頂引用型數(shù)值存入第0個本地變量 |
| 0x4c |
astore_1 |
將棧頂引用型數(shù)值存入第1個本地變量 |
| 0x4d |
astore_2 |
將棧頂引用型數(shù)值存入第2個本地變量 |
| 0x4e |
astore_3 |
將棧頂引用型數(shù)值存入第3個本地變量 |
| 0x4f |
iastore |
將棧頂int型數(shù)值存入指定數(shù)組的指定索引位置 |
| 0×50 |
lastore |
將棧頂long型數(shù)值存入指定數(shù)組的指定索引位置 |
| 0×51 |
fastore |
將棧頂float型數(shù)值存入指定數(shù)組的指定索引位置 |
| 0×52 |
dastore |
將棧頂double型數(shù)值存入指定數(shù)組的指定索引位置 |
| 0×53 |
aastore |
將棧頂引用型數(shù)值存入指定數(shù)組的指定索引位置 |
| 0×54 |
bastore |
將棧頂boolean或byte型數(shù)值存入指定數(shù)組的指定索引位置 |
| 0×55 |
castore |
將棧頂char型數(shù)值存入指定數(shù)組的指定索引位置 |
| 0×56 |
sastore |
將棧頂short型數(shù)值存入指定數(shù)組的指定索引位置 |
| 0×57 |
pop |
將棧頂數(shù)值彈出 (數(shù)值不能是long或double類型的) |
| 0×58 |
pop2 |
將棧頂?shù)囊粋€(long或double類型的)或兩個數(shù)值彈出(其它) |
| 0×59 |
dup |
復制棧頂數(shù)值并將復制值壓入棧頂 |
| 0x5a |
dup_x1 |
復制棧頂數(shù)值并將兩個復制值壓入棧頂 |
| 0x5b |
dup_x2 |
復制棧頂數(shù)值并將三個(或兩個)復制值壓入棧頂 |
| 0x5c |
dup2 |
復制棧頂一個(long或double類型的)或兩個(其它)數(shù)值并將復制值壓入棧頂 |
| 0x5d |
dup2_x1 |
復制棧頂2個數(shù)值,并壓入棧頂2次 |
| 0x5e |
dup2_x2 |
復制棧頂2個數(shù)值,并壓入棧頂3次 |
| 0x5f |
swap |
將棧最頂端的兩個數(shù)值互換(數(shù)值不能是long或double類型的) |
| 0×60 |
iadd |
將棧頂兩int型數(shù)值相加并將結(jié)果壓入棧頂 |
| 0×61 |
ladd |
將棧頂兩long型數(shù)值相加并將結(jié)果壓入棧頂 |
| 0×62 |
fadd |
將棧頂兩float型數(shù)值相加并將結(jié)果壓入棧頂 |
| 0×63 |
dadd |
將棧頂兩double型數(shù)值相加并將結(jié)果壓入棧頂 |
| 0×64 |
isub |
將棧頂兩int型數(shù)值相減并將結(jié)果壓入棧頂 |
| 0×65 |
lsub |
將棧頂兩long型數(shù)值相減并將結(jié)果壓入棧頂 |
| 0×66 |
fsub |
將棧頂兩float型數(shù)值相減并將結(jié)果壓入棧頂 |
| 0×67 |
dsub |
將棧頂兩double型數(shù)值相減并將結(jié)果壓入棧頂 |
| 0×68 |
imul |
將棧頂兩int型數(shù)值相乘并將結(jié)果壓入棧頂 |
| 0×69 |
lmul |
將棧頂兩long型數(shù)值相乘并將結(jié)果壓入棧頂 |
| 0x6a |
fmul |
將棧頂兩float型數(shù)值相乘并將結(jié)果壓入棧頂 |
| 0x6b |
dmul |
將棧頂兩double型數(shù)值相乘并將結(jié)果壓入棧頂 |
| 0x6c |
idiv |
將棧頂兩int型數(shù)值相除并將結(jié)果壓入棧頂 |
| 0x6d |
ldiv |
將棧頂兩long型數(shù)值相除并將結(jié)果壓入棧頂 |
| 0x6e |
fdiv |
將棧頂兩float型數(shù)值相除并將結(jié)果壓入棧頂 |
| 0x6f |
ddiv |
將棧頂兩double型數(shù)值相除并將結(jié)果壓入棧頂 |
| 0×70 |
irem |
將棧頂兩int型數(shù)值作取模運算并將結(jié)果壓入棧頂 |
| 0×71 |
lrem |
將棧頂兩long型數(shù)值作取模運算并將結(jié)果壓入棧頂 |
| 0×72 |
frem |
將棧頂兩float型數(shù)值作取模運算并將結(jié)果壓入棧頂 |
| 0×73 |
drem |
將棧頂兩double型數(shù)值作取模運算并將結(jié)果壓入棧頂 |
| 0×74 |
ineg |
將棧頂int型數(shù)值取負并將結(jié)果壓入棧頂 |
| 0×75 |
lneg |
將棧頂long型數(shù)值取負并將結(jié)果壓入棧頂 |
| 0×76 |
fneg |
將棧頂float型數(shù)值取負并將結(jié)果壓入棧頂 |
| 0×77 |
dneg |
將棧頂double型數(shù)值取負并將結(jié)果壓入棧頂 |
| 0×78 |
ishl |
將int型數(shù)值左移位指定位數(shù)并將結(jié)果壓入棧頂 |
| 0×79 |
lshl |
將long型數(shù)值左移位指定位數(shù)并將結(jié)果壓入棧頂 |
| 0x7a |
ishr |
將int型數(shù)值右(符號)移位指定位數(shù)并將結(jié)果壓入棧頂 |
| 0x7b |
lshr |
將long型數(shù)值右(符號)移位指定位數(shù)并將結(jié)果壓入棧頂 |
| 0x7c |
iushr |
將int型數(shù)值右(無符號)移位指定位數(shù)并將結(jié)果壓入棧頂 |
| 0x7d |
lushr |
將long型數(shù)值右(無符號)移位指定位數(shù)并將結(jié)果壓入棧頂 |
| 0x7e |
iand |
將棧頂兩int型數(shù)值作“按位與”并將結(jié)果壓入棧頂 |
| 0x7f |
land |
將棧頂兩long型數(shù)值作“按位與”并將結(jié)果壓入棧頂 |
| 0×80 |
ior |
將棧頂兩int型數(shù)值作“按位或”并將結(jié)果壓入棧頂 |
| 0×81 |
lor |
將棧頂兩long型數(shù)值作“按位或”并將結(jié)果壓入棧頂 |
| 0×82 |
ixor |
將棧頂兩int型數(shù)值作“按位異或”并將結(jié)果壓入棧頂 |
| 0×83 |
lxor |
將棧頂兩long型數(shù)值作“按位異或”并將結(jié)果壓入棧頂 |
| 0×84 |
iinc |
將指定int型變量增加指定值,可以有兩個變量,分別表示index, const,index指第index個int型本地變量,const增加的值 |
| 0×85 |
i2l |
將棧頂int型數(shù)值強制轉(zhuǎn)換成long型數(shù)值并將結(jié)果壓入棧頂 |
| 0×86 |
i2f |
將棧頂int型數(shù)值強制轉(zhuǎn)換成float型數(shù)值并將結(jié)果壓入棧頂 |
| 0×87 |
i2d |
將棧頂int型數(shù)值強制轉(zhuǎn)換成double型數(shù)值并將結(jié)果壓入棧頂 |
| 0×88 |
l2i |
將棧頂long型數(shù)值強制轉(zhuǎn)換成int型數(shù)值并將結(jié)果壓入棧頂 |
| 0×89 |
l2f |
將棧頂long型數(shù)值強制轉(zhuǎn)換成float型數(shù)值并將結(jié)果壓入棧頂 |
| 0x8a |
l2d |
將棧頂long型數(shù)值強制轉(zhuǎn)換成double型數(shù)值并將結(jié)果壓入棧頂 |
| 0x8b |
f2i |
將棧頂float型數(shù)值強制轉(zhuǎn)換成int型數(shù)值并將結(jié)果壓入棧頂 |
| 0x8c |
f2l |
將棧頂float型數(shù)值強制轉(zhuǎn)換成long型數(shù)值并將結(jié)果壓入棧頂 |
| 0x8d |
f2d |
將棧頂float型數(shù)值強制轉(zhuǎn)換成double型數(shù)值并將結(jié)果壓入棧頂 |
| 0x8e |
d2i |
將棧頂double型數(shù)值強制轉(zhuǎn)換成int型數(shù)值并將結(jié)果壓入棧頂 |
| 0x8f |
d2l |
將棧頂double型數(shù)值強制轉(zhuǎn)換成long型數(shù)值并將結(jié)果壓入棧頂 |
| 0×90 |
d2f |
將棧頂double型數(shù)值強制轉(zhuǎn)換成float型數(shù)值并將結(jié)果壓入棧頂 |
| 0×91 |
i2b |
將棧頂int型數(shù)值強制轉(zhuǎn)換成byte型數(shù)值并將結(jié)果壓入棧頂 |
| 0×92 |
i2c |
將棧頂int型數(shù)值強制轉(zhuǎn)換成char型數(shù)值并將結(jié)果壓入棧頂 |
| 0×93 |
i2s |
將棧頂int型數(shù)值強制轉(zhuǎn)換成short型數(shù)值并將結(jié)果壓入棧頂 |
| 0×94 |
lcmp |
比較棧頂兩long型數(shù)值大小,并將結(jié)果(1,0,-1)壓入棧頂 |
| 0×95 |
fcmpl |
比較棧頂兩float型數(shù)值大小,并將結(jié)果(1,0,-1)壓入棧頂;當其中一個數(shù)值為NaN時,將-1壓入棧頂 |
| 0×96 |
fcmpg |
比較棧頂兩float型數(shù)值大小,并將結(jié)果(1,0,-1)壓入棧頂;當其中一個數(shù)值為NaN時,將1壓入棧頂 |
| 0×97 |
dcmpl |
比較棧頂兩double型數(shù)值大小,并將結(jié)果(1,0,-1)壓入棧頂;當其中一個數(shù)值為NaN時,將-1壓入棧頂 |
| 0×98 |
dcmpg |
比較棧頂兩double型數(shù)值大小,并將結(jié)果(1,0,-1)壓入棧頂;當其中一個數(shù)值為NaN時,將1壓入棧頂 |
| 0×99 |
ifeq |
當棧頂int型數(shù)值等于0時跳轉(zhuǎn) |
| 0x9a |
ifne |
當棧頂int型數(shù)值不等于0時跳轉(zhuǎn) |
| 0x9b |
iflt |
當棧頂int型數(shù)值小于0時跳轉(zhuǎn) |
| 0x9c |
ifge |
當棧頂int型數(shù)值大于等于0時跳轉(zhuǎn) |
| 0x9d |
ifgt |
當棧頂int型數(shù)值大于0時跳轉(zhuǎn) |
| 0x9e |
ifle |
當棧頂int型數(shù)值小于等于0時跳轉(zhuǎn) |
| 0x9f |
if_icmpeq |
比較棧頂兩int型數(shù)值大小,當結(jié)果等于0時跳轉(zhuǎn) |
| 0xa0 |
if_icmpne |
比較棧頂兩int型數(shù)值大小,當結(jié)果不等于0時跳轉(zhuǎn) |
| 0xa1 |
if_icmplt |
比較棧頂兩int型數(shù)值大小,當結(jié)果小于0時跳轉(zhuǎn) |
| 0xa2 |
if_icmpge |
比較棧頂兩int型數(shù)值大小,當結(jié)果大于等于0時跳轉(zhuǎn) |
| 0xa3 |
if_icmpgt |
比較棧頂兩int型數(shù)值大小,當結(jié)果大于0時跳轉(zhuǎn) |
| 0xa4 |
if_icmple |
比較棧頂兩int型數(shù)值大小,當結(jié)果小于等于0時跳轉(zhuǎn) |
| 0xa5 |
if_acmpeq |
比較棧頂兩引用型數(shù)值,當結(jié)果相等時跳轉(zhuǎn) |
| 0xa6 |
if_acmpne |
比較棧頂兩引用型數(shù)值,當結(jié)果不相等時跳轉(zhuǎn) |
| 0xa7 |
goto |
無條件跳轉(zhuǎn) |
| 0xa8 |
jsr |
跳轉(zhuǎn)至指定16位offset位置,并將jsr下一條指令地址壓入棧頂 |
| 0xa9 |
ret |
返回至本地變量指定的index的指令位置(一般與jsr, jsr_w聯(lián)合使用) |
| 0xaa |
tableswitch |
用于switch條件跳轉(zhuǎn),case值連續(xù)(可變長度指令) |
| 0xab |
lookupswitch |
用于switch條件跳轉(zhuǎn),case值不連續(xù)(可變長度指令) |
| 0xac |
ireturn |
從當前方法返回int |
| 0xad |
lreturn |
從當前方法返回long |
| 0xae |
freturn |
從當前方法返回float |
| 0xaf |
dreturn |
從當前方法返回double |
| 0xb0 |
areturn |
從當前方法返回對象引用 |
| 0xb1 |
return |
從當前方法返回void |
| 0xb2 |
getstatic |
獲取指定類的靜態(tài)域,并將其值壓入棧頂 |
| 0xb3 |
putstatic |
為指定的類的靜態(tài)域賦值 |
| 0xb4 |
getfield |
獲取指定類的實例域,并將其值壓入棧頂 |
| 0xb5 |
putfield |
為指定的類的實例域賦值 |
| 0xb6 |
invokevirtual |
調(diào)用實例方法 |
| 0xb7 |
invokespecial |
調(diào)用超類構(gòu)造方法,實例初始化方法,私有方法 |
| 0xb8 |
invokestatic |
調(diào)用靜態(tài)方法 |
| 0xb9 |
invokeinterface |
調(diào)用接口方法 |
| 0xba |
– |
| 0xbb |
new |
創(chuàng)建一個對象,并將其引用值壓入棧頂 |
| 0xbc |
newarray |
創(chuàng)建一個指定原始類型(如int, float, char…)的數(shù)組,并將其引用值壓入棧頂 |
| 0xbd |
anewarray |
創(chuàng)建一個引用型(如類,接口,數(shù)組)的數(shù)組,并將其引用值壓入棧頂 |
| 0xbe |
arraylength |
獲得數(shù)組的長度值并壓入棧頂 |
| 0xbf |
athrow |
將棧頂?shù)漠惓伋?/td>
|
| 0xc0 |
checkcast |
檢驗類型轉(zhuǎn)換,檢驗未通過將拋出ClassCastException |
| 0xc1 |
instanceof |
檢驗對象是否是指定的類的實例,如果是將1壓入棧頂,否則將0壓入棧頂 |
| 0xc2 |
monitorenter |
獲得對象的鎖,用于同步方法或同步塊 |
| 0xc3 |
monitorexit |
釋放對象的鎖,用于同步方法或同步塊 |
| 0xc4 |
wide |
當本地變量的索引超過255時使用該指令擴展索引寬度。 |
| 0xc5 |
multianewarray |
create a new array of dimensions dimensions with elements of type identified by class reference in constant pool index (indexbyte1 << 8 + indexbyte2); the sizes of each dimension is identified by count1, [count2, etc.] |
| 0xc6 |
ifnull |
if value is null, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) |
| 0xc7 |
ifnonnull |
if value is not null, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) |
| 0xc8 |
goto_w |
goes to another instruction at branchoffset (signed int constructed from unsigned bytes branchbyte1 << 24 + branchbyte2 << 16 + branchbyte3 << 8 + branchbyte4) |
| 0xc9 |
jsr_w |
jump to subroutine at branchoffset (signed int constructed from unsigned bytes branchbyte1 << 24 + branchbyte2 << 16 + branchbyte3 << 8 + branchbyte4) and place the return address on the stack |
| 0xca |
breakpoint |
reserved for breakpoints in Java debuggers; should not appear in any class file |
| 0xcb-0xfd |
未命名 |
these values are currently unassigned for opcodes and are reserved for future use |
| 0xfe |
impdep1 |
reserved for implementation-dependent operations within debuggers; should not appear in any class file |
| 0xff |
impdep2 |
reserved for implementation-dependent operations within debuggers; should not appear in any class file |