Javaのopcodeとそのパラメータの表です。Java Virtual Machine Online Instruction Referenceにて公開されている情報をありがたく再編集させて頂きました。
| 名前 | 説明 |
|---|---|
| aaload | retrieve object reference from array[u1] aaload (0x32) |
| aastore | store object reference in array[u1] aastore (0x53) |
| aconst_null | push null[u1] aconst_null (0x01) |
| aload | retrieve object reference from local variable[u1] aload (0x19) [u1] wide (0xC4) |
| aload_ |
retrieve object reference from local variable <n>[u1] aload_0 (0x2A) [u1] aload_1 (0x2B) [u1] aload_2 (0x2C) [u1] aload_3 (0x2D) |
| anewarray | allocate new array for objects[u1] anewarray (0xBD) |
| arraylength | get length of array[u1] arraylength (0xBE) |
| astore | store object reference in local variable[u1] astore (0x3A) [u1] wide (0xC4) |
| astore_ |
store object reference in local variable <n>[u1] astore_0 (0x4B) [u1] astore_1 (0x4C) [u1] astore_2 (0x4D) [u1] astore_3 (0x4E) |
| athrow | throw an exception[u1] athrow (0xBF) |
| baload | retrieve byte/boolean from array[u1] baload (0x33) |
| bastore | store in byte/boolean array[u1] bastore (0x54) |
| bipush | push one-byte signed integer[u1] bipush (0x10) |
| breakpoint | reserved opcode[u1] breakpoint (0xCA) |
| caload | retrieve character from array[u1] caload (0x34) |
| castore | store in character array[u1] castore (0x55) |
| checkcast | ensure type of an object or array[u1] checkcast (0xC0) |
| d2f | convert double to float[u1] d2f (0x90) |
| d2i | convert double to integer[u1] d2i (0x8E) |
| d2l | convert double to long integer[u1] d2l (0x8F) |
| dadd | add two doubles[u1] dadd (0x63) |
| daload | retrieve double-precision float from array[u1] daload (0x31) |
| dastore | store in double-precision float array[u1] dastore (0x52) |
| dcmpg | compare two doubles (1 on NaN)[u1] dcmpg (0x98) |
| dcmpl | compare two doubles (-1 on NaN)[u1] dcmpl (0x97) |
| dconst_ |
push the double 0.0 or 1.0[u1] dconst_0 (0x0E) [u1] dconst_1 (0x0F) |
| ddiv | divides two doubles[u1] ddiv (0x6F) |
| dload | retrieve double from local variable[u1] dload (0x18) [u1] wide (0xC4) |
| dload_ |
retrieve double from local variables <n> and <n>+ 1[u1] dload_0 (0x26) [u1] dload_1 (0x27) [u1] dload_2 (0x28) [u1] dload_3 (0x29) |
| dmul | multiply two doubles[u1] dmul (0x6B) |
| dneg | negate a double[u1] dneg (0x77) |
| drem | remainder of two doubles[u1] drem (0x73) |
| dreturn | return from method with double result[u1] dreturn (0xAF) |
| dstore | store double in local variable[u1] dstore (0x39) [u1] wide (0xC4) |
| dstore_ |
store double in local variables <n> and <n> +1[u1] dstore_0 (0x47) [u1] dstore_1 (0x48) [u1] dstore_2 (0x49) [u1] dstore_3 (0x4A) |
| dsub | subtract two doubles[u1] dsub (0x67) |
| dup | duplicate top single-word item on the stack[u1] dup (0x59) |
| dup2 | duplicate top two stack words[u1] dup2 (0x5C) |
| dup2_x1 | duplicate two words and insert beneath third word[u1] dup2_x1 (0x5D) |
| dup2_x2 | duplicate two words and insert beneath fourth word[u1] dup2_x2 (0x5E) |
| dup_x1 | duplicate top stack word and insert beneath secondword[u1] dup_x1 (0x5A) |
| dup_x2 | duplicate top stack word and insert beneath third word[u1] dup_x2 (0x5B) |
| f2d | convert float to double[u1] f2d (0x8D) |
| f2i | convert float to integer[u1] f2i (0x8B) |
| f2l | convert float to long integer[u1] f2l (0x8C) |
| fadd | add two floats[u1] fadd (0x62) |
| faload | retrieve float from array[u1] faload (0x30) |
| fastore | store in single-precision float array[u1] fastore (0x51) |
| fcmpg | single-precision float comparison (1 on NaN)[u1] fcmpg (0x96) |
| fcmpl | single-precision float comparison (-1 on NaN)[u1] fcmpl (0x95) |
| fconst_ |
push the single float 0.0, 1.0 or 2.0[u1] fconst_0 (0x0B) [u1] fconst_1 (0x0C) [u1] fconst_2 (0x0D) |
| fdiv | divide two floats[u1] fdiv (0x6E) |
| fload | retrieve float from local variable[u1] fload (0x17) [u1] wide (0xC4) |
| fload_ |
retrieve float from local variable <n>[u1] fload_0 (0x22) [u1] fload_1 (0x23) [u1] fload_2 (0x24) [u1] fload_3 (0x25) |
| fmul | multiply two floats[u1] fmul (0x6A) |
| fneg | negate a float[u1] fneg (0x76) |
| frem | remainder of two floats[u1] frem (0x72) |
| freturn | return from method with float result[u1] freturn (0xAE) |
| fstore | store float in local variable[u1] fstore (0x38) [u1] wide (0xC4) |
| fstore_ |
store float in local variable <n>[u1] fstore_0 (0x43) [u1] fstore_1 (0x44) [u1] fstore_2 (0x45) [u1] fstore_3 (0x46) |
| fsub | subtract two floats[u1] fsub (0x66) |
| getfield | get value of object field[u1] getfield (0xB4) |
| getstatic | get value of static field[u1] getstatic (0xB2) |
| goto | branch to address[u1] goto (0xA7) |
| goto_w | branch to address using wide offset[u1] goto_w (0xC8) |
| i2b | convert integer to byte[u1] i2b (0x91) |
| i2c | convert integer to character[u1] i2c (0x92) |
| i2d | convert integer to double[u1] i2d (0x87) |
| i2f | convert integer to float[u1] i2f (0x86) |
| i2l | convert integer to long integer[u1] i2l (0x85) |
| i2s | convert integer to short integer[u1] i2s (0x93) |
| iadd | add two integers[u1] iadd (0x60) |
| iaload | retrieve integer from array[u1] iaload (0x2E) |
| iand | integer bitwise and[u1] iand (0x7E) |
| iastore | store in integer array[u1] iastore (0x4F) |
| iconst_ |
push the integer constant 0, 1, 2, 3, 4 or 5[u1] iconst_0 (0x03) [u1] iconst_1 (0x04) [u1] iconst_2 (0x05) [u1] iconst_3 (0x06) [u1] iconst_4 (0x07) [u1] iconst_5 (0x08) |
| iconst_m1 | push the integer constant -1[u1] iconst_m1 (0x02) |
| idiv | divide an integer by another integer[u1] idiv (0x6C) |
| if_acmpeq | jump if two object references are equal[u1] if_acmpeq (0xA5) |
| if_acmpne | jump if two object references are not equal[u1] if_acmpne (0xA6) |
| if_icmpeq | jump if two integers are equal[u1] if_icmpeq (0x9F) |
| if_icmpge | jump if one integer is greater than or equal toanother[u1] if_icmpge (0xA2) |
| if_icmpgt | jump if one integer is greater than another[u1] if_icmpgt (0xA3) |
| if_icmple | jump if one integer is less than or equal to another[u1] if_icmple (0xA4) |
| if_icmplt | jump if one integer is less than another[u1] if_icmplt (0xA1) |
| if_icmpne | jump if two integers are not equal[u1] if_icmpne (0xA0) |
| ifeq | jump if zero[u1] ifeq (0x99) |
| ifge | jump if greater than or equal to zero[u1] ifge (0x9C) |
| ifgt | jump if greater than zero[u1] ifgt (0x9D) |
| ifle | jump if less than or equal to zero[u1] ifle (0x9E) |
| iflt | jump if less than zero[u1] iflt (0x9B) |
| ifne | jump if nonzero[u1] ifne (0x9A) |
| ifnonnull | jump if non-null[u1] ifnonnull (0xC7) |
| ifnull | jump if null[u1] ifnull (0xC6) |
| iinc | increment integer in local variable[u1] iinc (0x84) [u1] wide (0xC4) |
| iload | retrieve integer from local variable[u1] iload (0x15) [u1] wide (0xC4) |
| iload_ |
push integer from local variable <n>[u1] iload_0 (0x1A) [u1] iload_1 (0x1B) [u1] iload_2 (0x1C) [u1] iload_3 (0x1D) |
| impdep1 | reserved opcode[u1] imped1 (0xFE) |
| impdep2 | reserved opcode[u1] imped2 (0xFF) |
| imul | multiply two integers[u1] imul (0x68) |
| ineg | negate an integer[u1] ineg (0x74) |
| instanceof | test class of object[u1] instanceof (0xC1) |
| invokeinterface | invoke an interface method[u1] invokeinterface (0xB9) |
| invokespecial | invoke method belonging to a specific class[u1] invokespecial (0xB7) |
| invokestatic | invoke a class (static) method[u1] invokestatic (0xB8) |
| invokevirtual | call an instance method[u1] invokevirtual (0xB6) |
| ior | integer bitwise or[u1] ior (0x80) |
| irem | remainder of two integers[u1] irem (0x70) |
| ireturn | return from method with integer result[u1] ireturn (0xAC) |
| ishl | integer shift left[u1] ishl (0x78) |
| ishr | integer arithmetic shift right[u1] ishr (0x7A) |
| istore | store integer in local variable[u1] istore (0x36) [u1] wide (0xC4) |
| istore_ |
store integer in local variable <n>[u1] istore_0 (0x3C) [u1] istore_1 (0x3D) [u1] istore_2 (0x3E) [u1] istore_3 (0x3F) |
| isub | subtract two integers[u1] isub (0x64) |
| iushr | integer logical shift right[u1] iushr (0x7C) |
| ixor | integer bitwise exclusive or[u1] ixor (0x82) |
| jsr | jump to subroutine[u1] jsr (0xA8) |
| jsr_w | jump to subroutine using wide offset[u1] jsr_w (0xC9) |
| l2d | convert long to double[u1] l2d (0x8A) |
| l2f | convert long to float[u1] l2f (0x89) |
| l2i | long to integer conversion[u1] l2i (0x88) |
| ladd | add two long integers[u1] ladd (0x61) |
| laload | retrieve long integer from array[u1] laload (0x2F) |
| land | long integer bitwise and[u1] land (0x7F) |
| lastore | store in long integer array[u1] lastore (0x50) |
| lcmp | long integer comparison[u1] lcmp (0x94) |
| lconst_ |
push the long integer 0 or 1[u1] lconst_0 (0x09) [u1] lconst_1 (0x0A) |
| ldc | push single-word constant onto stack[u1] ldc (0x12) |
| ldc2_w | push two-word constant onto stack[u1] ldc2_w (0x14) |
| ldc_w | push single-word constant onto stack (wide index)[u1] ldc_w (0x13) |
| ldiv | divide a long integer[u1] ldiv (0x6D) |
| lload | retrieve long from local variable[u1] lload (0x16) [u1] wide (0xC4) |
| lload_ |
retrieve long integer from local variables <n> and<n> + 1[u1] lload_0 (0x1E) [u1] lload_1 (0x1F) [u1] lload_2 (0x20) [u1] lload_3 (0x21) |
| lmul | multiply two longs[u1] lmul (0x69) |
| lneg | negate a long[u1] lneg (0x75) |
| lookupswitch | match key in table and jump[u1] lookupswitch (0xAB) |
| lor | long integer bitwise or[u1] lor (0x81) |
| lrem | modulus of two longs[u1] lrem (0x71) |
| lreturn | return from method with long result[u1] lreturn (0xAD) |
| lshl | long integer shift left[u1] lshl (0x79) |
| lshr | long integer arithmetic shift right[u1] lshr (0x7B) |
| lstore | store long integer in local variable[u1] lstore (0x37) [u1] wide (0xC4) |
| lstore_ |
store long in local variables <n> and <n> +1[u1] lstore_0 (0x3F) [u1] lstore_1 (0x40) [u1] lstore_2 (0x41) [u1] lstore_3 (0x42) |
| lsub | subtract two longs[u1] lsub (0x65) |
| lushr | long integer logical shift right[u1] lushr (0x7D) |
| lxor | long integer bitwise exclusive or[u1] lxor (0x83) |
| monitorenter | enter synchronized region of code[u1] monitorenter (0xC2) |
| monitorexit | leave synchronized region of code[u1] monitorexit (0xC3) |
| multianewarray | allocate multi-dimensional array[u1] multianewarray (0xC5) |
| new | create an object[u1] new (0xBB) |
| newarray | allocate new array for numbers or booleans[u1] newarray (0xBC) |
| nop | do nothing[u1] nop (0x0) |
| pop | discard top word on stack[u1] pop (0x57) |
| pop2 | discard top two words on stack[u1] pop2 (0x58) |
| putfield | set value of object field[u1] putfield (0xB5) |
| putstatic | set value of static field[u1] putstatic (0xB3) |
| ret | return from subroutine[u1] ret (0xA9) [u1] wide (0xC4) |
| return | return from method[u1] return (0xB1) |
| saload | retrieve short from array[u1] saload (0x35) |
| sastore | store in short array[u1] sastore (0x56) |
| sipush | push two-byte signed integer[u1] sipush (0x11) |
| swap | swap top two stack words[u1] swap (0x5F) |
| tableswitch | jump according to a table[u1] tableswitch (0xAA) |
| wide | next instruction uses 16-bit index[u1] wide (0xC4) [u1] wide (0xC4) |
マニアックな需要に答えるべく、yaml形式のデータも載せておきます。
---
getfield:
:description: get value of object field
:codes:
- - :code: "0xB4"
:size: u1
:name: getfield
- :code:
:size: u2
:name: index
baload:
:description: retrieve byte/boolean from array
:codes:
- - :code: "0x33"
:size: u1
:name: baload
iconst_<n>:
:description: push the integer constant 0, 1, 2, 3, 4 or 5
:codes:
- - :code: "0x03"
:size: u1
:name: iconst_0
- - :code: "0x04"
:size: u1
:name: iconst_1
- - :code: "0x05"
:size: u1
:name: iconst_2
- - :code: "0x06"
:size: u1
:name: iconst_3
- - :code: "0x07"
:size: u1
:name: iconst_4
- - :code: "0x08"
:size: u1
:name: iconst_5
lrem:
:description: modulus of two longs
:codes:
- - :code: "0x71"
:size: u1
:name: lrem
ifgt:
:description: jump if greater than zero
:codes:
- - :code: "0x9D"
:size: u1
:name: ifgt
- :code:
:size: s2
:name: branchoffset
ldc_w:
:description: push single-word constant onto stack (wide index)
:codes:
- - :code: "0x13"
:size: u1
:name: ldc_w
- :code:
:size: u2
:name: index
invokeinterface:
:description: invoke an interface method
:codes:
- - :code: "0xB9"
:size: u1
:name: invokeinterface
- :code:
:size: u2
:name: index
- :code:
:size: u1
:name: <n>
- :code:
:size: u1
:name: "0"
i2b:
:description: convert integer to byte
:codes:
- - :code: "0x91"
:size: u1
:name: i2b
frem:
:description: remainder of two floats
:codes:
- - :code: "0x72"
:size: u1
:name: frem
ireturn:
:description: return from method with integer result
:codes:
- - :code: "0xAC"
:size: u1
:name: ireturn
ifne:
:description: jump if nonzero
:codes:
- - :code: "0x9A"
:size: u1
:name: ifne
- :code:
:size: s2
:name: branchoffset
athrow:
:description: throw an exception
:codes:
- - :code: "0xBF"
:size: u1
:name: athrow
i2c:
:description: convert integer to character
:codes:
- - :code: "0x92"
:size: u1
:name: i2c
ifnonnull:
:description: jump if non-<tt>null</tt>
:codes:
- - :code: "0xC7"
:size: u1
:name: ifnonnull
- :code:
:size: s2
:name: branchoffset
goto_w:
:description: branch to address using wide offset
:codes:
- - :code: "0xC8"
:size: u1
:name: goto_w
- :code:
:size: s4
:name: branchoffset
ldiv:
:description: divide a long integer
:codes:
- - :code: "0x6D"
:size: u1
:name: ldiv
istore_<n>:
:description: store integer in local variable <n>
:codes:
- - :code: "0x3C"
:size: u1
:name: istore_0
- - :code: "0x3D"
:size: u1
:name: istore_1
- - :code: "0x3E"
:size: u1
:name: istore_2
- - :code: "0x3F"
:size: u1
:name: istore_3
i2d:
:description: convert integer to double
:codes:
- - :code: "0x87"
:size: u1
:name: i2d
fastore:
:description: store in single-precision float array
:codes:
- - :code: "0x51"
:size: u1
:name: fastore
fneg:
:description: negate a float
:codes:
- - :code: "0x76"
:size: u1
:name: fneg
saload:
:description: retrieve short from array
:codes:
- - :code: "0x35"
:size: u1
:name: saload
i2f:
:description: convert integer to float
:codes:
- - :code: "0x86"
:size: u1
:name: i2f
fcmpg:
:description: single-precision float comparison (1 on NaN)
:codes:
- - :code: "0x96"
:size: u1
:name: fcmpg
ifnull:
:description: jump if <tt>null</tt>
:codes:
- - :code: "0xC6"
:size: u1
:name: ifnull
- :code:
:size: s2
:name: branch-offset
lload:
:description: retrieve long from local variable
:codes:
- - :code: "0x16"
:size: u1
:name: lload
- :code:
:size: u1
:name: <varnum>
- - :code: "0xC4"
:size: u1
:name: wide
- :code: "0x16"
:size: u1
:name: lload
- :code:
:size: u2
:name: <varnum>
if_icmpge:
:description: jump if one integer is greater than or equal toanother
:codes:
- - :code: "0xA2"
:size: u1
:name: if_icmpge
- :code:
:size: s2
:name: branchoffset
dload_<n>:
:description: retrieve double from local variables <n> and <n>+ 1
:codes:
- - :code: "0x26"
:size: u1
:name: dload_0
- - :code: "0x27"
:size: u1
:name: dload_1
- - :code: "0x28"
:size: u1
:name: dload_2
- - :code: "0x29"
:size: u1
:name: dload_3
ishl:
:description: integer shift left
:codes:
- - :code: "0x78"
:size: u1
:name: ishl
ladd:
:description: add two long integers
:codes:
- - :code: "0x61"
:size: u1
:name: ladd
dup:
:description: duplicate top single-word item on the stack
:codes:
- - :code: "0x59"
:size: u1
:name: dup
swap:
:description: swap top two stack words
:codes:
- - :code: "0x5F"
:size: u1
:name: swap
new:
:description: create an object
:codes:
- - :code: "0xBB"
:size: u1
:name: new
- :code:
:size: u2
:name: index
ldc:
:description: push single-word constant onto stack
:codes:
- - :code: "0x12"
:size: u1
:name: ldc
- :code:
:size: u1
:name: index
checkcast:
:description: ensure type of an object or array
:codes:
- - :code: "0xC0"
:size: u1
:name: checkcast
- :code:
:size: u2
:name: index
ifeq:
:description: jump if zero
:codes:
- - :code: "0x99"
:size: u1
:name: ifeq
- :code:
:size: s2
:name: branchoffset
fload:
:description: retrieve float from local variable
:codes:
- - :code: "0x17"
:size: u1
:name: fload
- :code:
:size: u1
:name: <varnum>
- - :code: "0xC4"
:size: u1
:name: wide
- :code: "0x17"
:size: u1
:name: fload
- :code:
:size: u2
:name: <varnum>
fload_<n>:
:description: retrieve float from local variable <n>
:codes:
- - :code: "0x22"
:size: u1
:name: fload_0
- - :code: "0x23"
:size: u1
:name: fload_1
- - :code: "0x24"
:size: u1
:name: fload_2
- - :code: "0x25"
:size: u1
:name: fload_3
iconst_m1:
:description: push the integer constant -1
:codes:
- - :code: "0x02"
:size: u1
:name: iconst_m1
fcmpl:
:description: single-precision float comparison (-1 on NaN)
:codes:
- - :code: "0x95"
:size: u1
:name: fcmpl
ineg:
:description: negate an integer
:codes:
- - :code: "0x74"
:size: u1
:name: ineg
ret:
:description: return from subroutine
:codes:
- - :code: "0xA9"
:size: u1
:name: ret
- :code:
:size: u1
:name: <varnum>
- - :code: "0xC4"
:size: u1
:name: wide
- :code: "0xA9"
:size: u1
:name: ret
- :code:
:size: u2
:name: <varnum>
ldc2_w:
:description: push two-word constant onto stack
:codes:
- - :code: "0x14"
:size: u1
:name: ldc2_w
- :code:
:size: u2
:name: index
lconst_<l>:
:description: push the long integer 0 or 1
:codes:
- - :code: "0x09"
:size: u1
:name: lconst_0
- - :code: "0x0A"
:size: u1
:name: lconst_1
iand:
:description: integer bitwise and
:codes:
- - :code: "0x7E"
:size: u1
:name: iand
fmul:
:description: multiply two floats
:codes:
- - :code: "0x6A"
:size: u1
:name: fmul
monitorexit:
:description: leave synchronized region of code
:codes:
- - :code: "0xC3"
:size: u1
:name: monitorexit
iload:
:description: retrieve integer from local variable
:codes:
- - :code: "0x15"
:size: u1
:name: iload
- :code:
:size: u1
:name: <varnum>
- - :code: "0xC4"
:size: u1
:name: wide
- :code: "0x15"
:size: u1
:name: iload
- :code:
:size: u2
:name: <varnum>
ishr:
:description: integer arithmetic shift right
:codes:
- - :code: "0x7A"
:size: u1
:name: ishr
i2l:
:description: convert integer to long integer
:codes:
- - :code: "0x85"
:size: u1
:name: i2l
ifle:
:description: jump if less than or equal to zero
:codes:
- - :code: "0x9E"
:size: u1
:name: ifle
- :code:
:size: s2
:name: branchoffset
lastore:
:description: store in long integer array
:codes:
- - :code: "0x50"
:size: u1
:name: lastore
iload_<n>:
:description: push integer from local variable <n>
:codes:
- - :code: "0x1A"
:size: u1
:name: iload_0
- - :code: "0x1B"
:size: u1
:name: iload_1
- - :code: "0x1C"
:size: u1
:name: iload_2
- - :code: "0x1D"
:size: u1
:name: iload_3
aaload:
:description: retrieve object reference from array
:codes:
- - :code: "0x32"
:size: u1
:name: aaload
if_acmpne:
:description: jump if two object references are not equal
:codes:
- - :code: "0xA6"
:size: u1
:name: if_acmpne
- :code:
:size: s2
:name: branchoffset
dneg:
:description: negate a double
:codes:
- - :code: "0x77"
:size: u1
:name: dneg
if_icmplt:
:description: jump if one integer is less than another
:codes:
- - :code: "0xA1"
:size: u1
:name: if_icmplt
- :code:
:size: s2
:name: branchoffset
newarray:
:description: allocate new array for numbers or booleans
:codes:
- - :code: "0xBC"
:size: u1
:name: newarray
- :code:
:size: u1
:name: array-type (see below)
bipush:
:description: push one-byte signed integer
:codes:
- - :code: "0x10"
:size: u1
:name: bipush
- :code:
:size: s1
:name: <n>
dup2_x1:
:description: duplicate two words and insert beneath third word
:codes:
- - :code: "0x5D"
:size: u1
:name: dup2_x1
breakpoint:
:description: reserved opcode
:codes:
- - :code: "0xCA"
:size: u1
:name: breakpoint
dup2_x2:
:description: duplicate two words and insert beneath fourth word
:codes:
- - :code: "0x5E"
:size: u1
:name: dup2_x2
impdep1:
:description: reserved opcode
:codes:
- - :code: "0xFE"
:size: u1
:name: imped1
astore_<n>:
:description: store object reference in local variable <n>
:codes:
- - :code: "0x4B"
:size: u1
:name: astore_0
- - :code: "0x4C"
:size: u1
:name: astore_1
- - :code: "0x4D"
:size: u1
:name: astore_2
- - :code: "0x4E"
:size: u1
:name: astore_3
dastore:
:description: store in double-precision float array
:codes:
- - :code: "0x52"
:size: u1
:name: dastore
wide:
:description: next instruction uses 16-bit index
:codes:
- - :code: "0xC4"
:size: u1
:name: wide
- :code:
:size: u1
:name: <opcode>
- :code:
:size: u2
:name: <varnum>
- - :code: "0xC4"
:size: u1
:name: wide
- :code:
:size: u1
:name: <opcode>
- :code:
:size: u2
:name: <varnum>
- :code:
:size: u2
:name: <n>
isub:
:description: subtract two integers
:codes:
- - :code: "0x64"
:size: u1
:name: isub
impdep2:
:description: reserved opcode
:codes:
- - :code: "0xFF"
:size: u1
:name: imped2
d2f:
:description: convert double to float
:codes:
- - :code: "0x90"
:size: u1
:name: d2f
putfield:
:description: set value of object field
:codes:
- - :code: "0xB5"
:size: u1
:name: putfield
- :code:
:size: u2
:name: index
iushr:
:description: integer logical shift right
:codes:
- - :code: "0x7C"
:size: u1
:name: iushr
f2d:
:description: convert float to double
:codes:
- - :code: "0x8D"
:size: u1
:name: f2d
imul:
:description: multiply two integers
:codes:
- - :code: "0x68"
:size: u1
:name: imul
multianewarray:
:description: allocate multi-dimensional array
:codes:
- - :code: "0xC5"
:size: u1
:name: multianewarray
- :code:
:size: u2
:name: index
- :code:
:size: u1
:name: <n>
lor:
:description: long integer bitwise or
:codes:
- - :code: "0x81"
:size: u1
:name: lor
jsr_w:
:description: jump to subroutine using wide offset
:codes:
- - :code: "0xC9"
:size: u1
:name: jsr_w
- :code:
:size: s4
:name: branchoffset
ixor:
:description: integer bitwise exclusive or
:codes:
- - :code: "0x82"
:size: u1
:name: ixor
instanceof:
:description: test class of object
:codes:
- - :code: "0xC1"
:size: u1
:name: instanceof
- :code:
:size: u2
:name: index
freturn:
:description: return from method with float result
:codes:
- - :code: "0xAE"
:size: u1
:name: freturn
nop:
:description: do nothing
:codes:
- - :code: "0x0"
:size: u1
:name: nop
lstore_<n>:
:description: store long in local variables <n> and <n> +1
:codes:
- - :code: "0x3F"
:size: u1
:name: lstore_0
- - :code: "0x40"
:size: u1
:name: lstore_1
- - :code: "0x41"
:size: u1
:name: lstore_2
- - :code: "0x42"
:size: u1
:name: lstore_3
lookupswitch:
:description: match key in table and jump
:codes:
- - :code: "0xAB"
:size: u1
:name: lookupswitch
- :code:
:size: "-"
:name: ...0-3 bytes of padding ...
- :code:
:size: s4
:name: default_offset
- :code:
:size: s4
:name: n
- :code:
:size: s4
:name: key_1
- :code:
:size: s4
:name: offset_1
- :code:
:size: s4
:name: key_2
- :code:
:size: s4
:name: offset_2
- :code:
:size: ...
:name: ...
- :code:
:size: s4
:name: key_n
- :code:
:size: s4
:name: offset_n
dup2:
:description: duplicate top two stack words
:codes:
- - :code: "0x5C"
:size: u1
:name: dup2
invokespecial:
:description: invoke method belonging to a specific class
:codes:
- - :code: "0xB7"
:size: u1
:name: invokespecial
- :code:
:size: u2
:name: index
d2i:
:description: convert double to integer
:codes:
- - :code: "0x8E"
:size: u1
:name: d2i
fdiv:
:description: divide two floats
:codes:
- - :code: "0x6E"
:size: u1
:name: fdiv
dsub:
:description: subtract two doubles
:codes:
- - :code: "0x67"
:size: u1
:name: dsub
i2s:
:description: convert integer to short integer
:codes:
- - :code: "0x93"
:size: u1
:name: i2s
aconst_null:
:description: push <tt>null</tt>
:codes:
- - :code: "0x01"
:size: u1
:name: aconst_null
daload:
:description: retrieve double-precision float from array
:codes:
- - :code: "0x31"
:size: u1
:name: daload
lushr:
:description: long integer logical shift right
:codes:
- - :code: "0x7D"
:size: u1
:name: lushr
if_acmpeq:
:description: jump if two object references are equal
:codes:
- - :code: "0xA5"
:size: u1
:name: if_acmpeq
- :code:
:size: s2
:name: branchoffset
tableswitch:
:description: jump according to a table
:codes:
- - :code: "0xAA"
:size: u1
:name: tableswitch
- :code:
:size: "-"
:name: ...0-3 bytes of padding ...
- :code:
:size: s4
:name: default_offset
- :code:
:size: s4
:name: <low>
- :code:
:size: s4
:name: <low> + N - 1
- :code:
:size: s4
:name: offset_1
- :code:
:size: s4
:name: offset_2
- :code:
:size: ...
:name: ...
- :code:
:size: s4
:name: offset_N
monitorenter:
:description: enter synchronized region of code
:codes:
- - :code: "0xC2"
:size: u1
:name: monitorenter
lshl:
:description: long integer shift left
:codes:
- - :code: "0x79"
:size: u1
:name: lshl
dmul:
:description: multiply two doubles
:codes:
- - :code: "0x6B"
:size: u1
:name: dmul
ifge:
:description: jump if greater than or equal to zero
:codes:
- - :code: "0x9C"
:size: u1
:name: ifge
- :code:
:size: s2
:name: branchoffset
castore:
:description: store in character array
:codes:
- - :code: "0x55"
:size: u1
:name: castore
dstore:
:description: store double in local variable
:codes:
- - :code: "0x39"
:size: u1
:name: dstore
- :code:
:size: u1
:name: <varnum>
- - :code: "0xC4"
:size: u1
:name: wide
- :code: "0x39"
:size: u1
:name: dstore
- :code:
:size: u2
:name: <varnum>
sastore:
:description: store in short array
:codes:
- - :code: "0x56"
:size: u1
:name: sastore
pop:
:description: discard top word on stack
:codes:
- - :code: "0x57"
:size: u1
:name: pop
laload:
:description: retrieve long integer from array
:codes:
- - :code: "0x2F"
:size: u1
:name: laload
irem:
:description: remainder of two integers
:codes:
- - :code: "0x70"
:size: u1
:name: irem
d2l:
:description: convert double to long integer
:codes:
- - :code: "0x8F"
:size: u1
:name: d2l
f2i:
:description: convert float to integer
:codes:
- - :code: "0x8B"
:size: u1
:name: f2i
if_icmpgt:
:description: jump if one integer is greater than another
:codes:
- - :code: "0xA3"
:size: u1
:name: if_icmpgt
- :code:
:size: s2
:name: branchoffset
iinc:
:description: increment integer in local variable
:codes:
- - :code: "0x84"
:size: u1
:name: iinc
- :code:
:size: u1
:name: <varnum>
- :code:
:size: s1
:name: <n>
- - :code: "0xC4"
:size: u1
:name: wide
- :code: "0x84"
:size: u1
:name: iinc
- :code:
:size: u2
:name: <varnum>
- :code:
:size: s2
:name: <n>
lload_<n>:
:description: retrieve long integer from local variables <n> and<n> + 1
:codes:
- - :code: "0x1E"
:size: u1
:name: lload_0
- - :code: "0x1F"
:size: u1
:name: lload_1
- - :code: "0x20"
:size: u1
:name: lload_2
- - :code: "0x21"
:size: u1
:name: lload_3
aload:
:description: retrieve object reference from local variable
:codes:
- - :code: "0x19"
:size: u1
:name: aload
- :code:
:size: u1
:name: <varnum>
- - :code: "0xC4"
:size: u1
:name: wide
- :code: "0x19"
:size: u1
:name: aload
- :code:
:size: u2
:name: <varnum>
if_icmpne:
:description: jump if two integers are not equal
:codes:
- - :code: "0xA0"
:size: u1
:name: if_icmpne
- :code:
:size: s2
:name: branchoffset
fadd:
:description: add two floats
:codes:
- - :code: "0x62"
:size: u1
:name: fadd
getstatic:
:description: get value of static field
:codes:
- - :code: "0xB2"
:size: u1
:name: getstatic
- :code:
:size: u2
:name: index
iaload:
:description: retrieve integer from array
:codes:
- - :code: "0x2E"
:size: u1
:name: iaload
dload:
:description: retrieve double from local variable
:codes:
- - :code: "0x18"
:size: u1
:name: dload
- :code:
:size: u1
:name: <varnum>
- - :code: "0xC4"
:size: u1
:name: wide
- :code: "0x18"
:size: u1
:name: dload
- :code:
:size: u2
:name: <varnum>
fstore_<n>:
:description: store float in local variable <n>
:codes:
- - :code: "0x43"
:size: u1
:name: fstore_0
- - :code: "0x44"
:size: u1
:name: fstore_1
- - :code: "0x45"
:size: u1
:name: fstore_2
- - :code: "0x46"
:size: u1
:name: fstore_3
invokevirtual:
:description: call an instance method
:codes:
- - :code: "0xB6"
:size: u1
:name: invokevirtual
- :code:
:size: u2
:name: index
astore:
:description: store object reference in local variable
:codes:
- - :code: "0x3A"
:size: u1
:name: astore
- :code:
:size: u1
:name: <varnum>
- - :code: "0xC4"
:size: u1
:name: wide
- :code: "0x3A"
:size: u1
:name: astore
- :code:
:size: u2
:name: <varnum>
lneg:
:description: negate a long
:codes:
- - :code: "0x75"
:size: u1
:name: lneg
drem:
:description: remainder of two doubles
:codes:
- - :code: "0x73"
:size: u1
:name: drem
idiv:
:description: divide an integer by another integer
:codes:
- - :code: "0x6C"
:size: u1
:name: idiv
faload:
:description: retrieve float from array
:codes:
- - :code: "0x30"
:size: u1
:name: faload
land:
:description: long integer bitwise and
:codes:
- - :code: "0x7F"
:size: u1
:name: land
l2d:
:description: convert long to double
:codes:
- - :code: "0x8A"
:size: u1
:name: l2d
invokestatic:
:description: invoke a class (static) method
:codes:
- - :code: "0xB8"
:size: u1
:name: invokestatic
- :code:
:size: u2
:name: index
dup_x1:
:description: duplicate top stack word and insert beneath secondword
:codes:
- - :code: "0x5A"
:size: u1
:name: dup_x1
anewarray:
:description: allocate new array for objects
:codes:
- - :code: "0xBD"
:size: u1
:name: anewarray
- :code:
:size: u2
:name: index
f2l:
:description: convert float to long integer
:codes:
- - :code: "0x8C"
:size: u1
:name: f2l
sipush:
:description: push two-byte signed integer
:codes:
- - :code: "0x11"
:size: u1
:name: sipush
- :code:
:size: s2
:name: <n>
lshr:
:description: long integer arithmetic shift right
:codes:
- - :code: "0x7B"
:size: u1
:name: lshr
lreturn:
:description: return from method with long result
:codes:
- - :code: "0xAD"
:size: u1
:name: lreturn
istore:
:description: store integer in local variable
:codes:
- - :code: "0x36"
:size: u1
:name: istore
- :code:
:size: u1
:name: <varnum>
- - :code: "0xC4"
:size: u1
:name: wide
- :code: "0x36"
:size: u1
:name: istore
- :code:
:size: u2
:name: <varnum>
dup_x2:
:description: duplicate top stack word and insert beneath third word
:codes:
- - :code: "0x5B"
:size: u1
:name: dup_x2
caload:
:description: retrieve character from array
:codes:
- - :code: "0x34"
:size: u1
:name: caload
fconst_<f>:
:description: push the single float 0.0, 1.0 or 2.0
:codes:
- - :code: "0x0B"
:size: u1
:name: fconst_0
- - :code: "0x0C"
:size: u1
:name: fconst_1
- - :code: "0x0D"
:size: u1
:name: fconst_2
lcmp:
:description: long integer comparison
:codes:
- - :code: "0x94"
:size: u1
:name: lcmp
iflt:
:description: jump if less than zero
:codes:
- - :code: "0x9B"
:size: u1
:name: iflt
- :code:
:size: s2
:name: branchoffset
ddiv:
:description: divides two doubles
:codes:
- - :code: "0x6F"
:size: u1
:name: ddiv
l2f:
:description: convert long to float
:codes:
- - :code: "0x89"
:size: u1
:name: l2f
fstore:
:description: store float in local variable
:codes:
- - :code: "0x38"
:size: u1
:name: fstore
- :code:
:size: u1
:name: <varnum>
- - :code: "0xC4"
:size: u1
:name: wide
- :code: "0x38"
:size: u1
:name: fstore
- :code:
:size: u2
:name: <varnum>
goto:
:description: branch to address
:codes:
- - :code: "0xA7"
:size: u1
:name: goto
- :code:
:size: s2
:name: branchoffset
dcmpg:
:description: compare two doubles (1 on NaN)
:codes:
- - :code: "0x98"
:size: u1
:name: dcmpg
iadd:
:description: add two integers
:codes:
- - :code: "0x60"
:size: u1
:name: iadd
jsr:
:description: jump to subroutine
:codes:
- - :code: "0xA8"
:size: u1
:name: jsr
- :code:
:size: s2
:name: branchoffset
dconst_<d>:
:description: push the double 0.0 or 1.0
:codes:
- - :code: "0x0E"
:size: u1
:name: dconst_0
- - :code: "0x0F"
:size: u1
:name: dconst_1
arraylength:
:description: get length of array
:codes:
- - :code: "0xBE"
:size: u1
:name: arraylength
if_icmpeq:
:description: jump if two integers are equal
:codes:
- - :code: "0x9F"
:size: u1
:name: if_icmpeq
- :code:
:size: s2
:name: branchoffset
iastore:
:description: store in integer array
:codes:
- - :code: "0x4F"
:size: u1
:name: iastore
lsub:
:description: subtract two longs
:codes:
- - :code: "0x65"
:size: u1
:name: lsub
dstore_<n>:
:description: store double in local variables <n> and <n> +1
:codes:
- - :code: "0x47"
:size: u1
:name: dstore_0
- - :code: "0x48"
:size: u1
:name: dstore_1
- - :code: "0x49"
:size: u1
:name: dstore_2
- - :code: "0x4A"
:size: u1
:name: dstore_3
dreturn:
:description: return from method with double result
:codes:
- - :code: "0xAF"
:size: u1
:name: dreturn
return:
:description: return from method
:codes:
- - :code: "0xB1"
:size: u1
:name: return
pop2:
:description: discard top two words on stack
:codes:
- - :code: "0x58"
:size: u1
:name: pop2
lmul:
:description: multiply two longs
:codes:
- - :code: "0x69"
:size: u1
:name: lmul
l2i:
:description: long to integer conversion
:codes:
- - :code: "0x88"
:size: u1
:name: l2i
dadd:
:description: add two doubles
:codes:
- - :code: "0x63"
:size: u1
:name: dadd
ior:
:description: integer bitwise or
:codes:
- - :code: "0x80"
:size: u1
:name: ior
aastore:
:description: store object reference in array
:codes:
- - :code: "0x53"
:size: u1
:name: aastore
fsub:
:description: subtract two floats
:codes:
- - :code: "0x66"
:size: u1
:name: fsub
lxor:
:description: long integer bitwise exclusive or
:codes:
- - :code: "0x83"
:size: u1
:name: lxor
lstore:
:description: store long integer in local variable
:codes:
- - :code: "0x37"
:size: u1
:name: lstore
- :code:
:size: u1
:name: <varnum>
- - :code: "0xC4"
:size: u1
:name: wide
- :code: "0x37"
:size: u1
:name: lstore
- :code:
:size: u2
:name: <varnum>
aload_<n>:
:description: retrieve object reference from local variable <n>
:codes:
- - :code: "0x2A"
:size: u1
:name: aload_0
- - :code: "0x2B"
:size: u1
:name: aload_1
- - :code: "0x2C"
:size: u1
:name: aload_2
- - :code: "0x2D"
:size: u1
:name: aload_3
putstatic:
:description: set value of static field
:codes:
- - :code: "0xB3"
:size: u1
:name: putstatic
- :code:
:size: u2
:name: index
dcmpl:
:description: compare two doubles (-1 on NaN)
:codes:
- - :code: "0x97"
:size: u1
:name: dcmpl
bastore:
:description: store in byte/boolean array
:codes:
- - :code: "0x54"
:size: u1
:name: bastore
if_icmple:
:description: jump if one integer is less than or equal to another
:codes:
- - :code: "0xA4"
:size: u1
:name: if_icmple
- :code:
:size: s2
:name: branchoffset