Java字节码指令列表

注释理解错误地方 望指出
注 (1)、1个solt 为四个字节


MnemonicOpcodeOpcode (in binary)Other bytes [count]: [operand labels]Stack [before](后面值为栈顶)→[after]Description
aaload320011 0010arrayref, index → valueload onto the stack a reference from an array栈顶的数组下标(index)、数组引用(arrayref)出栈,并根据这两个数值取出对应的引用型数组元素值(value)进栈。
aastore530101 0011arrayref, index, value →store into a reference in an array栈顶的引用型数值(value)、数组下标(index)、数组引用(arrayref)出栈,将数值存入对应的数组元素中。
aconst_null10000 0001→ null将null对象引用压入栈
aload190001 10011: index→ objectref将位置为#index的局部变量中引用类型数据压栈
aload_02a0010 1010→ objectref将位置为0的局部变量中引用类型数据压栈
aload_12b0010 1011→ objectref将位置为1的局部变量中引用类型数据压栈
aload_22c0010 1100→ objectref将位置为2的局部变量中引用类型数据压栈
aload_32d0010 1101→ objectref将位置为3的局部变量中引用类型数据压栈
anewarraybd1011 11012: indexbyte1, indexbyte2count → arrayrefcreate a new array of references of length count and component type identified by the class reference index (indexbyte1 << 8 + indexbyte2) in the constant pool创建以栈顶值为长度,常量池中索引(indexbyte1 << 8 + indexbyte2)对应标识为组件类型的引用型数组,引用压栈
areturnb01011 0000objectref → [empty]return a reference from a method从方法中返回一个对象的引用(弹出栈顶元素) 如果当前方法是synchronized方法,并且当前线程不是改方法的锁的拥有者,会抛出 IllegalMonitorStateException。(未验证)
arraylengthbe1011 1110arrayref → lengthget the length of an array
astore3a0011 10101: indexobjectref →弹出栈顶引用型元素存入位置为#index的局部变量中
astore_04b0100 1011objectref →弹出栈顶引用型元素存入位置为0的局部变量中
astore_14c0100 1100objectref →弹出栈顶引用型元素存入位置为1的局部变量中
astore_24d0100 1101objectref →弹出栈顶引用型元素存入位置为2的局部变量中
astore_34e0100 1110objectref →弹出栈顶引用型元素存入位置为3的局部变量中
athrowbf1011 1111objectref → [empty], objectrefthrows an error or exception (notice that the rest of the stack is cleared, leaving only a reference to the Throwable)
baload330011 0011arrayref, index → valueload a byte or Boolean value from an array
bastore540101 0100arrayref, index, value →store a byte or Boolean value into an array
bipush100001 00001: byte→ value将byte类型的数转换为int类型的数,然后压入栈
breakpointca1100 1010reserved for breakpoints in Java debuggers; should not appear in any class file
caload340011 0100arrayref, index → valueload a char from an array
castore550101 0101arrayref, index, value →store a char into an array
checkcastc01100 00002: indexbyte1, indexbyte2objectref → objectrefchecks whether an objectref is of a certain type, the class reference of which is in the constant pool at index (indexbyte1 << 8 + indexbyte2)
d2f901001 0000value → resultconvert a double to a float
d2i8e1000 1110value → resultconvert a double to an int
d2l8f1000 1111value → resultconvert a double to a long
dadd630110 0011value1, value2 → resultadd two doubles
daload310011 0001arrayref, index → valueload a double from an array
dastore520101 0010arrayref, index, value →store a double into an array栈顶的double型数值(value)、数组下标(index)、数组引用(arrayref)出栈,将数值存入对应的数组元素中。
dcmpg981001 1000value1, value2 → resultcompare two doubles
dcmpl971001 0111value1, value2 → resultcompare two doubles
dconst_00e0000 1110→ 0.0push the constant 0.0 (a double) onto the stack
dconst_10f0000 1111→ 1.0push the constant 1.0 (a double) onto the stack
ddiv6f0110 1111value1, value2 → resultdivide two doubles
dload180001 10001: index→ valueload a double value from a local variable #index
dload_0260010 0110→ valueload a double from local variable 0
dload_1270010 0111→ valueload a double from local variable 1
dload_2280010 1000→ valueload a double from local variable 2
dload_3290010 1001→ valueload a double from local variable 3
dmul6b0110 1011value1, value2 → resultmultiply two doubles
dneg770111 0111value → resultnegate a double
drem730111 0011value1, value2 → resultget the remainder from a division between two doubles
dreturnaf1010 1111value → [empty]return a double from a method
dstore390011 10011: indexvalue →store a double value into a local variable #index弹出栈顶double型数值存入第index个局部变量
dstore_0470100 0111value →store a double into local variable 0弹出栈顶double型数值存入第1个局部变量
dstore_1480100 1000value →store a double into local variable 1弹出栈顶double型数值存入第2个局部变量
dstore_2490100 1001value →store a double into local variable 2弹出栈顶double型数值存入第3个局部变量
dstore_34a0100 1010value →store a double into local variable 3弹出栈顶double型数值存入第4个局部变量
dsub670110 0111value1, value2 → resultsubtract a double from another
dup590101 1001value → value, value复制栈顶一个solt单位的值压栈
dup_x15a0101 1010value2, value1 → value1, value2, value1insert a copy of the top value into the stack two values from the top. value1 and value2 must not be of the type double or long.
dup_x25b0101 1011value3, value2, value1 → value1, value3, value2, value1insert a copy of the top value into the stack two (if value2 is double or long it takes up the entry of value3, too) or three values (if value2 is neither double nor long) from the top
dup25c0101 1100{value2, value1} → {value2, value1}, {value2, value1}duplicate top two stack words (two values, if value1 is not double nor long; a single value, if value1 is double or long)
dup2_x15d0101 1101value3, {value2, value1} → {value2, value1}, value3, {value2, value1}duplicate two words and insert beneath third word (see explanation above)
dup2_x25e0101 1110{value4, value3}, {value2, value1} → {value2, value1}, {value4, value3}, {value2, value1}duplicate two words and insert beneath fourth word
f2d8d1000 1101value → resultconvert a float to a double
f2i8b1000 1011value → resultconvert a float to an int
f2l8c1000 1100value → resultconvert a float to a long
fadd620110 0010value1, value2 → result从栈顶弹出两个float型元素然后做加法,把结果压入栈
faload300011 0000arrayref, index → valueload a float from an array
fastore510101 0001arrayref, index, value →store a float in an array栈顶的float型数值(value)、数组下标(index)、数组引用(arrayref)出栈,将数值存入对应的数组元素中。
fcmpg961001 0110value1, value2 → resultcompare two floats
fcmpl951001 0101value1, value2 → resultcompare two floats
fconst_00b0000 1011→ 0.0ffloat类型常量0.0f入栈
fconst_10c0000 1100→ 1.0ffloat类型常量1.0f入栈
fconst_20d0000 1101→ 2.0ffloat类型常量2.0f入栈
fdiv6e0110 1110value1, value2 → resultdivide two floats
fload170001 01111: index→ value 从位置为#index的局部变量中取出float类型的元素压入栈
fload_0220010 0010→ value 从位置为0的局部变量中取出float类型的元素压入栈
fload_1230010 0011→ value 从位置为1的局部变量中取出float类型的元素压入栈
fload_2240010 0100→ value 从位置为2的局部变量中取出float类型的元素压入栈
fload_3250010 0101→ value 从位置为3的局部变量中取出float类型的元素压入栈
fmul6a0110 1010value1, value2 → resultmultiply two floats
fneg760111 0110value → resultnegate a float
frem720111 0010value1, value2 → resultget the remainder from a division between two floats
freturnae1010 1110value → [empty]return a float
fstore380011 10001: indexvalue →弹出栈顶float类型元素存入位置为#index的局部变量中
fstore_0430100 0011value →弹出栈顶float类型元素存入位置为0的局部变量中
fstore_1440100 0100value →弹出栈顶float类型元素存入位置为1的局部变量中
fstore_2450100 0101value →弹出栈顶float类型元素存入位置为2的局部变量中
fstore_3460100 0110value →弹出栈顶float类型元素存入位置为3的局部变量中
fsub660110 0110value1, value2 → resultsubtract two floats
getfieldb41011 01002: indexbyte1, indexbyte2objectref → valueget a field value of an object objectref, where the field is identified by field reference in the constant pool index (indexbyte1 << 8 + indexbyte2)
getstaticb21011 00102: indexbyte1, indexbyte2→ valueget a static field value of a class, where the field is identified by field reference in the constant pool index (indexbyte1 << 8 + indexbyte2)获取类的静态字段值,其中字段由常量池索引(indexbyte1 << 8 + indexbyte2)的字段引用标识,并将其值压入栈顶
gotoa71010 01112: branchbyte1, branchbyte2[no change]get a static field value of a class, where the field is identified by field reference in the constant pool index (indexbyte1 << 8 + indexbyte2)转到branchoffset上的另一条指令(指令通过无符号字节branchbyte1 << 8 + branchbyte2寻址)
goto_wc81100 10004: branchbyte1, branchbyte2, branchbyte3, branchbyte4[no change]goes to another instruction at branchoffset (signed int constructed from unsigned bytes branchbyte1 << 24 + branchbyte2 << 16 + branchbyte3 << 8 + branchbyte4)
i2b911001 0001value → resultconvert an int into a byte
i2c921001 0010value → resultconvert an int into a character
i2d871000 0111value → resultconvert an int into a double
i2f861000 0110value → resultconvert an int into a float
i2l851000 0101value → resultconvert an int into a long
i2s931001 0011value → resultconvert an int into a short
iadd600110 0000value1, value2 → result从栈顶弹出两个元素然后做加法,把结果压入栈
iaload2e0010 1110arrayref, index → valueload an int from an array栈顶的数组下标(index)、数组引用(arrayref)出栈,并根据这两个数值取出对应的int型数组元素值(value)进栈。
iand7e0111 1110value1, value2 → resultperform a bitwise AND on two integers
iastore4f0100 1111arrayref, index, value →store an int into an array栈顶的int型数值(value)、数组下标(index)、数组引用(arrayref)出栈,将数值存入对应的数组元素中。
iconst_m120000 0010→ -1load the int value −1 onto the stack将int值-1压栈
iconst_030000 0011→ 0将int值0压栈
iconst_140000 0100→ 1将int值1压栈
iconst_250000 0101→ 2将int值2压栈
iconst_360000 0110→ 3将int值3压栈
iconst_470000 0111→ 4将int值4压栈
iconst_580000 1000→ 5将int值5压栈
idiv6c0110 1100value1, value2 → resultdivide two integers
if_acmpeqa51010 01012: branchbyte1, branchbyte2value1, value2 →if references are equal, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2)
if_acmpnea61010 01102: branchbyte1, branchbyte2value1, value2 →if references are not equal, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2)如果栈顶两个引用不相等,则跳转到branchoffset上的指令(位置branchbyte1 << 8 + branchbyte2)
if_icmpeq9f1001 11112: branchbyte1, branchbyte2value1, value2 →if ints are equal, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2)如果栈顶两个int值相等,执行跳转
if_icmpgea21010 00102: branchbyte1, branchbyte2value1, value2 →if value1 is greater than or equal to value2, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2)比较栈顶两int(value1,value2栈顶元素)型数值大小,当value1 >= value2,则跳转到branchoffset处的指令(由无符号字节branchbyte1 << 8 + branchbyte2构造)
if_icmpgta31010 00112: branchbyte1, branchbyte2value1, value2 →if value1 is greater than value2, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2)
if_icmplea41010 01002: branchbyte1, branchbyte2value1, value2 →if value1 is less than or equal to value2, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2)比较栈顶两int(value1,value2栈顶元素)型数值大小,当value1 <= value2,则跳转到branchoffset处的指令(由无符号字节branchbyte1 << 8 + branchbyte2构造)
if_icmplta11010 00012: branchbyte1, branchbyte2value1, value2 →if value1 is less than value2, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2)
if_icmpnea01010 00002: branchbyte1, branchbyte2value1, value2 →if ints are not equal, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2)
ifeq991001 10012: branchbyte1, branchbyte2value →if value is 0, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2)当栈顶int型数值等于0时跳转
ifge9c1001 11002: branchbyte1, branchbyte2value →if value is greater than or equal to 0, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2)
ifgt9d1001 11012: branchbyte1, branchbyte2value →if value is greater than 0, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2)
ifle9e1001 11102: branchbyte1, branchbyte2value →if value is less than or equal to 0, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2)如果栈顶值小于或等于0,则跳转到branchoffset处的指令
iflt9b1001 10112: branchbyte1, branchbyte2value →if value is less than 0, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2)
ifne9a1001 10102: branchbyte1, branchbyte2value →if value is not 0, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2)
ifnonnullc71100 01112: branchbyte1, branchbyte2value →if value is not null, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2)
ifnullc61100 01102: branchbyte1, branchbyte2value →if value is null, branch to instruction at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2)判断栈顶值是否为空值 空则执行跳转
iinc841000 01002: index, const[No change]increment local variable #index by signed byte const局部变量#index增加指定的值
iload150001 01011: index→ value从位置为#index的局部变量中取出元素int类型的值压入栈
iload_01a0001 1010→ value从位置为0的局部变量中取出元素int类型的值压入栈
iload_11b0001 1011→ value从位置为1的局部变量中取出元素int类型的值压入栈
iload_21c0001 1100→ value从位置为2的局部变量中取出元素int类型的值压入栈
iload_31d0001 1101→ value从位置为3的局部变量中取出元素int类型的值压入栈
impdep1fe1111 1110reserved for implementation-dependent operations within debuggers; should not appear in any class file
impdep2ff1111 1111reserved for implementation-dependent operations within debuggers; should not appear in any class file
imul680110 1000value1, value2 → resultmultiply two integers
ineg740111 0100value → resultnegate int
instanceofc11100 00012: indexbyte1, indexbyte2objectref → resultdetermines if an object objectref is of a given type, identified by class reference index in constant pool (indexbyte1 << 8 + indexbyte2)
invokedynamicba1011 10104: indexbyte1, indexbyte2, 0, 0[arg1, [arg2 ...]] → resultinvokes a dynamic method and puts the result on the stack (might be void); the method is identified by method reference index in constant pool (indexbyte1 << 8 + indexbyte2)
invokeinterfaceb91011 10014: indexbyte1, indexbyte2, count, 0objectref, [arg1, arg2, ...] → resultinvokes an interface method on object objectref and puts the result on the stack (might be void); the interface method is identified by method reference index in constant pool (indexbyte1 << 8 + indexbyte2)调用对象objectref的接口方法并将结果放入堆栈(可能为void); 接口方法由常量池中的方法引用索引标识(indexbyte1 << 8 + indexbyte2)
invokespecialb71011 01112: indexbyte1, indexbyte2objectref, [arg1, arg2, ...] → resultinvoke instance method on object objectref and puts the result on the stack (might be void); the method is identified by method reference index in constant pool (indexbyte1 << 8 + indexbyte2)
invokestaticb81011 10002: indexbyte1, indexbyte2[arg1, arg2, ...] → resultinvoke a static method and puts the result on the stack (might be void); the method is identified by method reference index in constant pool (indexbyte1 << 8 + indexbyte2)调用一个静态方法并把结果放到堆栈上(可能是void); 该方法由常量池中的方法引用索引标识(indexbyte1 << 8 + indexbyte2)
invokevirtualb61011 01102: indexbyte1, indexbyte2objectref, [arg1, arg2, ...] → resultinvoke virtual method on object objectref and puts the result on the stack (might be void); the method is identified by method reference index in constant pool (indexbyte1 << 8 + indexbyte2)虚方法调用会根据调用者类型解析出方法入口,并将结果压栈
ior801000 0000value1, value2 → resultbitwise int OR
irem700111 0000value1, value2 → resultlogical int remainder
ireturnac1010 1100value → [empty]返回栈顶的int值
ishl780111 1000value1, value2 → resultint shift left
ishr7a0111 1010value1, value2 → resultint arithmetic shift right
istore360011 01101: indexvalue →弹出栈顶int元素存入位置为#index的局部变量中
istore_03b0011 1011value →弹出栈顶int元素存入位置0的局部变量中
istore_13c0011 1100value →弹出栈顶int元素存入位置1的局部变量中
istore_23d0011 1101value →弹出栈顶int元素存入位置2的局部变量中
istore_33e0011 1110value →弹出栈顶int元素存入位置3的局部变量中
isub640110 0100value1, value2 → resultint subtract
iushr7c0111 1100value1, value2 → resultint logical shift right
ixor821000 0010value1, value2 → resultint xor
jsra81010 10002: branchbyte1, branchbyte2→ addressjump to subroutine at branchoffset (signed short constructed from unsigned bytes branchbyte1 << 8 + branchbyte2) and place the return address on the stack
jsr_wc91100 10014: branchbyte1, branchbyte2, branchbyte3, branchbyte4→ addressjump 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
l2d8a1000 1010value → resultconvert a long to a double
l2f891000 1001value → resultconvert a long to a float
l2i881000 1000value → resultconvert a long to a int
ladd610110 0001value1, value2 → resultadd two longs
laload2f0010 1111arrayref, index → valueload a long from an array
land7f0111 1111value1, value2 → resultbitwise AND of two longs
lastore500101 0000arrayref, index, value →store a long to an array栈顶的long型数值(value)、数组下标(index)、数组引用(arrayref)出栈,将数值存入对应的数组元素中。
lcmp941001 0100value1, value2 → resultpush 0 if the two longs are the same, 1 if value1 is greater than value2, -1 otherwise
lconst_090000 1001→ 0Llong类型常量0L入栈
lconst_10a0000 1010→ 1Llong类型常量1L入栈
ldc120001 00101: index(无符号8位数indexbyte)→ valuepush a constant #index from a constant pool (String, int, float, Class, java.lang.invoke.MethodType, or java.lang.invoke.MethodHandle) onto the stack从由index指向的常量池入口中取出值(可能是String int float等),然后将其压入栈
ldc_w130001 00112: indexbyte1, indexbyte2(无符号16位数indexshort,wide index is constructed as indexbyte1 << 8 + indexbyte2)→ valuepush a constant #index from a constant pool (String, int, float, Class, java.lang.invoke.MethodType, or java.lang.invoke.MethodHandle) onto the stack (wide index is constructed as indexbyte1 << 8 + indexbyte2)从由indexbyte1 << 8 + indexbyte2指向的常量池入口中取值,然后将其压入栈
ldc2_w140001 01002: indexbyte1, indexbyte2→ valuepush a constant #index from a constant pool (double or long) onto the stack (wide index is constructed as indexbyte1 << 8 + indexbyte2)将indexbyte1 << 8 + indexbyte2指向的常量取出(8个字节),然后将其压入栈
ldiv6d0110 1101value1, value2 → resultdivide two longs
lload160001 01101: index→ value从位置为#index和#index+1的局部变量中取出long类型元素压入栈
lload_01e0001 1110→ value从位置为0,1的局部变量中取出long类型元素压入栈
lload_11f0001 1111→ value从位置为1,2的局部变量中取出long类型元素压入栈
lload_2200010 0000→ value从位置为2,3的局部变量中取出long类型元素压入栈
lload_3210010 0001→ value从位置为3,4的局部变量中取出long类型元素压入栈
lmul690110 1001value1, value2 → resultmultiply two longs
lneg750111 0101value → resultnegate a long
lookupswitchab1010 10118+: <0–3 bytes padding>, defaultbyte1, defaultbyte2, defaultbyte3, defaultbyte4, npairs1, npairs2, npairs3, npairs4, match-offset pairs...key →a target address is looked up from a table using a key and execution continues from the instruction at that address
lor811000 0001value1, value2 → resultbitwise OR of two longs
lrem710111 0001value1, value2 → resultremainder of division of two longs
lreturnad1010 1101value → [empty]return a long value
lshl790111 1001value1, value2 → resultbitwise shift left of a long value1 by int value2 positions
lshr7b0111 1011value1, value2 → resultbitwise shift right of a long value1 by int value2 positions
lstore370011 01111: indexvalue →store a long value in a local variable #index 弹出栈顶long型元素存入位置为#index的局部变量中(但是每个Solt4个字节,所以这个会跨两个变量,其他的指令类似占据#index和#index+1号变量)
lstore_03f0011 1111value → 弹出栈顶long型元素存入位置为0,1的局部变量表中
lstore_1400100 0000value → 弹出栈顶long型元素存入位置为1,2的局部变量表中
lstore_2410100 0001value → 弹出栈顶long型元素存入位置为2,3的局部变量表中
lstore_3420100 0010value → 弹出栈顶long型元素存入位置为3,4的局部变量表中
lsub650110 0101value1, value2 → resultsubtract two longs
lushr7d0111 1101value1, value2 → resultbitwise shift right of a long value1 by int value2 positions, unsigned
lxor831000 0011value1, value2 → resultbitwise XOR of two longs
monitorenterc21100 0010objectref →enter monitor for object ("grab the lock" – start of synchronized() section)
monitorexitc31100 0011objectref →exit monitor for object ("release the lock" – end of synchronized() section)
multianewarrayc51100 01013: indexbyte1, indexbyte2, dimensionscount1, [count2,...] → arrayrefcreate a new array of dimensions dimensions of type identified by class reference in constant pool index (indexbyte1 << 8 + indexbyte2); the sizes of each dimension is identified by count1, [count2, etc.]
newbb1011 10112: indexbyte1, indexbyte2→ objectrefcreate new object of type identified by class reference in constant pool index (indexbyte1 << 8 + indexbyte2)创建索引号为(indexbyte1 << 8 + indexbyte2)类引用标识的对象,并将引用压栈
newarraybc1011 11001: atypecount → arrayrefcreate new array with count elements of primitive type identified by atype
nop00000 0000[No change]perform no operation
pop570101 0111value →discard the top value on the stack
pop2580101 1000{value2, value1} →discard the top two values on the stack (or one value, if it is a double or long)
putfieldb51011 01012: indexbyte1, indexbyte2objectref, value →set field to value in an object objectref, where the field is identified by a field reference index in constant pool (indexbyte1 << 8 + indexbyte2)
putstaticb31011 00112: indexbyte1, indexbyte2value →set static field to value in a class, where the field is identified by a field reference index in constant pool (indexbyte1 << 8 + indexbyte2)设置类中值静态字段,字段由常量池中的字段引用索引(indexbyte1 << 8 + indexbyte2)标识
reta91010 10011: index[No change]continue execution from address taken from a local variable #index (the asymmetry with jsr is intentional)
returnb11011 0001→ [empty]return void from method当前方法返回void
saload350011 0101arrayref, index → valueload short from array
sastore560101 0110arrayref, index, value →store short to array
sipush110001 00012: byte1, byte2→ value将一个短整型值作为整数值压栈
swap5f0101 1111value2, value1 → value1, value2swaps two top words on the stack (note that value1 and value2 must not be double or long)
tableswitchaa1010 101016+: [0–3 bytes padding], defaultbyte1, defaultbyte2, defaultbyte3, defaultbyte4, lowbyte1, lowbyte2, lowbyte3, lowbyte4, highbyte1, highbyte2, highbyte3, highbyte4, jump offsets...index →continue execution from an address in the table at offset index
widec41100 01003/5: opcode, indexbyte1, indexbyte2[same as for corresponding instructions]execute opcode, where opcode is either iload, fload, aload, lload, dload, istore, fstore, astore, lstore, dstore, or ret, but assume the index is 16 bit; or execute iinc, where the index is 16 bits and the constant to increment by is a signed 16 bit short
or
(no name)cb-fdthese values are currently unassigned for opcodes and are reserved for future use
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值