Dalvik Bytecode (Smali) Opcodes
| Opcode | Name | Format & ID | Syntax | Short Desc | Long Desc | Example |
|---|---|---|---|---|---|---|
| 00 | nop | ØØ|op 10x | nop | No operation | Does nothing, Waste cycles. | 0000 - nop Does nothing, Waste cycles |
| 01 | move | B|A|op 12x | move vA, vB | Move the contents of one non-object register to another. | Moves the content of vB into vA. Both registers is in the first 16 register range (0-15). | 0110 - move v0, v1 Moves the content of v1 into v0. |
| 02 | move/from16 | AA|op BBBB 22x | move/from16 vAA, vBBBB | Move the contents of one non-object register to another. | Moves the content of vB into vA. vB is in the 64k register range (0-65535) while vA is one of the first 256 registers (0-255). | 0200 1900 - move/from16 v0, v25 Moves the content of v25 into v0. |
| 03 | move/16 | ØØ|op AAAA BBBB 32x | move/16 vAAAA, vBBBB | Move the contents of one non-object register to another. | Moves the content of vB into vA. Both registers is in the first 64k register range (0-65535) & 16 bits. | 030000090181 - move/16 v2304, v33025 Moves the content of v33025 into v2304. |
| 04 | move-wide | B|A|op 12x | move-wide vA, vB | Move the contents of one register-pair to another. | Move the value of the (vB, vB+1) register-pair to the (vA, vA+1) register-pair. Both register-pairs is in the first 16 register range (0-15). | |
| 05 | move-wide/from16 | AA|op BBBB 22x | move-wide/from16 vAA, vBBBB | Move the contents of one register-pair to another. | Move the value (long/double) of the (vBBBB, vBBBB+1) register-pair to the (vAA, vAA+1) register-pair. vB is in the 64k register range (0-65535) while vA is one of the first 256 registers (0-255). | 0516 0000 - move-wide/from16 v22, v0 Moves the content of register-pair (v0, v0+1) into (v22, v22+1). |
| 06 | move-wide/16 | ØØ|op AAAA BBBB 32x | move-wide/from16 vAAAA, vBBBB | Move the contents of one register-pair to another. | Move the value of the (vBBBB, vBBBB+1) register-pair to the (vAAAA, vAAAA+1) register-pair. Both register-pairs is in the first 64k register range (0-65535) & 16 bits. | |
| 07 | move-object | B|A|op 12x | move-object vA, vB | Move the contents of one object-bearing register to another. | Move the value of register vB to register vA. Both registers is in the first 16 register range (0-15). | 0781 - move-object v1, v8 Moves the content of v8 to v1. |
| 08 | move-object/from16 | AA|op BBBB 22x | move-object/from16 vAA, vBBBB | Move the contents of one object-bearing register to another. | Move the value of register vBBBB to register vAA. vB is in the 64k register range (0-65535) while vA is one of the first 256 registers (0-255). | 0801 1500 - move-object/from16 v1, v21 Move the content of v21 to v1. |
| 09 | move-object/16 | ØØ|op AAAA BBBB 32x | move-object/16 vAAAA, vBBBB | Move the contents of one object-bearing register to another. | Move the value of register vBBBB to register vAAAA. Both registers is in the first 64k register range (0-65535) & 16 bits. | |
| 0A | move-result | AA|op 11x | move-result vAA | Moves the single-word, non-object result of the preceding invoke-kind to the specified register. Must immediately follow the invoke-kind. | Moves the single-word result of the immediately preceding method invocation into the destination register (vA). vA is in the first 256-register range (0-255). | 0A00 - move-result v0 Move the return value of a previous method invocation into v0. |
| 0B | move-result-wide | AA|op 11x | move-result-wide vAA | Moves the wide (double-word) non-object result of the preceding invoke-kind to the specified register-pair. | Moves the wide (double-word) result of the previous method invocation into register-pair (vAA, vAA+1). vA is in the first 256-register range (0-255). | 0B02 - move-result-wide v2 Move the long/double result value of the previous method invocation into v2,v3. |
| 0C | move-result-object | AA|op 11x | move-result-object vAA | Moves the object result of the preceding invoke-kind to the specified register. | Moves the object result of the previous method invocation into vAA. vA is in the first 256-register range (0-255). | 0C00 - move-result-object v0 Move the object result of the previous method invocation into v0. |
| 0D | move-exception | AA|op 11x | move-exception vAA | Moves the exception object of the most recent exception to the specified register. | Moves the caught exception into vAA. vA is in the first 256-register range (0-255). | 0D19 - move-exception v25 Moves the caught exception into register v25. |
| 0E | return-void | ØØ|op 10x | return-void | Return from a void method. | Return without a return value, used in void type methods. | 0E00 - return-void Return of a void method without return value. |
| 0F | return | AA|op 11x | return vAA | Return from a single-width (32-bit) non-object value-returning method. | Returns the 32-bit value in vAA to the caller. vA is in the first 256-register range (0-255). | 0F00 - return v0 Returns with return value in v0. |
| 10 | return-wide | AA|op 11x | return-wide vAA | Return from a double-width (64-bit) value-returning method. | Returns a double/long result from register-pair (vAA, vAA+1) to the caller. vA is in the first 256-register range (0-255). | 1000 - return-wide v0 Returns with a double/long value in v0,v1. |
| 11 | return-object | AA|op 11x | return-object vAA | Return from an object-returning method. | Returns the object reference value from vAA to the caller. vA is in the first 256-register range (0-255). | 1100 - return-object v0 Returns with object reference value in v0. |
| 12 | const/4 | B|A|op 11n | const/4 vA, #+B | Move the given literal value (sign-extended to 32 bits) into the specified register. | Moves the literal value B into vA. B is sign-extended to 32 bits. The value of B is in the range -8 to 7 (-0x8 to 0x7). | 1200 0001 - const/4 v0, 0x1 Moves the literal value 0x1(1) into v0. |
| 13 | const/16 | AA|op BBBB 21s | const/16 vAA, #+BBBB | Move the given literal value (sign-extended to 32 bits) into the specified register. | Moves the literal value BBBB into vAA. BBBB is sign-extended to 32 bits. The value of BBBB is in the range -32768 to 32767 (-0x8000 to 0x7FFF). | 1300 0A00 - const/16 v0, 0xa Moves the literal value 0xa(10) into v0. |
| 14 | const | AA|op BBBBlo 31i | const vAA, #+BBBBBBBB | Move the given literal value into the specified register. | Moves the literal value BBBB into vAA. BBBB is a 32-bit constant. The value of BBBB is in the range -2147483648 to 2147483647 (-0x80000000 to 0x7FFFFFFF). | 1400 4E61BC00 - const v0, 0xBC614E Moves the literal value 0xBC614E(12345678) into v0. |
| 15 | const/high16 | AA|op BBBB 21h | const/high16 vAA, #+BBBB0000 | Move the given literal value (right-zero-extended to 32 bits) into the specified register. | Moves the literal value BBBB0000 into vAA. BBBB is right-zero-extended to 32 bits. The value of BBBB is in the range -32768 to 32767 (-0x80000000 to 0x7FFF0000). | 1500 2041 - const/high16 v0, 0x41200000 (#float 10.0) Moves the floating literal value 0x41200000(10.0) into v0. The 16 bit literal in the instruction carries the top 16 bits of the floating point number. |
| 16 | const-wide/16 | AA|op BBBB 21s | const-wide/16 vAA, #+BBBB | Move the given literal value (sign-extended to 64 bits) into the specified register-pair. | Moves the literal value BBBB into register-pair (vAA, vAA+1), expanding the integer constant into a long constant. BBBB is sign-extended to 64 bits. The value of BBBB is in the range -32768 to 32767 (-0x8000 to 0x7FFF). | 1600 0A00 - const-wide/16 v0, 0xa (#long 10.0) Moves the long literal value 0xa(10) into (v0,v1) register-pair. |
| 17 | const-wide/32 | AA|op BBBBlo 31i | const-wide/32 vAA, #+BBBBBBBB | Move the given literal value (sign-extended to 64 bits) into the specified register-pair. | Moves the literal value BBBBBBBB into register-pair (vAA, vAA+1), expanding the integer constant into a long constant. BBBBBBBB is sign-extended to 64 bits. The value of BBBBBBBB is in the range -2147483648 to 2147483647 (-0x80000000 to 0x7FFFFFFF). | 1702 4E61 BC00 - const-wide/32 v2, 0x00bc614e Moves the long literal value 0x00bc614e into (v2,v3) register-pair. |
| 18 | const-wide | AA|op BBBBlo BBBB BBBB BBBBhi 51l | const-wide vAA, #+BBBBBBBBBBBBBBBB | Move the given literal value into the specified register-pair. | Moves the literal value constant BBBBBBBBBBBBBBBB into register-pair (vAA, vAA+1). The value of BBBBBBBBBBBBBBBB is in the range -9223372036854775808 to 9223372036854775807 (-0x8000000000000000 to 0x7FFFFFFFFFFFFFFF). | 1802 874b 6b5d 54dc 2b00- const-wide v2, 0x002bdc545d6b4b87 (#long 12345678901234567) Moves the long literal value 0x002bdc545d6b4b87 into (v2,v3) register-pair. |
| 19 | const-wide/high16 | AA|op BBBB 21h | const-wide/high16 vAA, #+BBBB000000000000 | Move the given literal value (right-zero-extended to 64 bits) into the specified register-pair. | Moves the literal value BBBB into register-pair (vAA, vAA+1). BBBB is right-zero-extended to 64 bits. The value of BBBB is in the range -32768 to 32767 (-0x8000 to 0x7FFF). | 1900 2440 - const-wide/high16 v0, 0x402400000 (#double 10.0) Moves the double literal value 10.0 into (v0,v1) register-pair. |
| 1A | const-string | AA|op BBBB 21c | const-string vAA, string@BBBB | Move a reference to the string specified by the given index into the specified register. | Moves the string from the string pool at the given index into the specified register. | 1A00 0000 - const-string v0, '' #string@0x0000 Moves the string at index 0x0000 (entry #0) in the string pool into register v0. |
| 1B | const-string/jumbo | AA|op BBBBlo BBBBhi 31c | const-string/jumbo vAA, string@BBBBBBBB | Move a reference to the string specified by the given index into the specified register. | Moves the string from the string pool at the given index into the specified register. This instruction is used when the string index is too large to fit in 16 bits. | 1B00 0000 0001 - const-string/jumbo v0, '' #string@0x0001 Moves the string at index 0x0001 (entry #1) in the string pool into register v0. |
| 1C | const-class | AA|op BBBB 21c | const-class vAA, type@BBBB | Move a reference to the class specified by the given index into the specified register. | Moves the type (e.g. Object.class) from the type pool at the given index into the specified register. The type pool is a table of types that is stored in the DEX file. The types are referenced by their index in the pool. | 1C00 0100 - const-class v0, Test3 // type@0001 Moves the type refrence (Test3.class) at index 0x0001 (entry #1) in the type pool into register v0. |
| 1D | monitor-enter | AA|op 11x | monitor-enter vAA | Acquire the monitor for the indicated object. | Obtains the monitor of the object referenced by vAA. | 1D00 - monitor-enter v0 Obtains the monitor of the object referenced by v0. |
| 1E | monitor-exit | AA|op 11x | monitor-exit vAA | Release the monitor for the indicated object. | Releases the monitor of the object referenced by vAA. | 1E00 - monitor-exit v0 Releases the monitor of the object referenced by v0. |
| 1F | check-cast | AA|op BBBB 21c | check-cast vAA, type@BBBB | Throw a ClassCastException if the reference in the given register cannot be cast to the indicated type. | Check that the object referenced by vAA is an instance of the class resolved by type@BBBB. If it is not, throw a ClassCastException. | 1F04 0100 - check-cast v4, Test3 #type@0001 Checks whether the object reference in v4 can be cast to type@0001 (entry #1 in the type id table) and throws a ClassCastException if it cannot. |
| 20 | instance-of | B|A|op CCCC 22c | instance-of vA, vB, type@CCCC | Store in the given destination register 1 if the indicated reference is an instance of the given type, or 0 if not. | Check whether the object referenced by vB is an instance of the class resolved by type@CCCC. If it is, the value 1 is stored in vA; otherwise, the value 0 is stored in vA. | 2040 0100 - instance-of v0, v4, type@0001 Checks whether the object reference in v4 is an instance of type@0001 (entry #1 in the type id table) and stores the result in v0. |
| 21 | array-length | B|A|op 12x | array-length vA, vB | Store the length of the indicated array. | Stores the length of the array referenced by vB into vA. | |
| 22 | new-instance | AA|op BBBB 21c | new-instance vAA, type@BBBB | Construct a new instance of the indicated type. | Creates a new instance of the type specified by type@BBBB and stores a reference to it in vAA. | |
| 23 | new-array | B|A|op CCCC 22c | new-array vA, vB, type@CCCC | Construct a new array of the indicated type and size. | Creates a new array of the type specified by type@CCCC with the size specified by vB. The reference to the new array is stored in vA. | |
| 24 | filled-new-array | A|G|op BBBB F|E|D|C 35c | filled-new-array {vC, vD, vE, vF, vG}, type@BBBB | Construct an array of the given type and size, filling it with the supplied contents. | Creates a new array of the type specified by type@BBBB and fills it with the values from the specified registers. The constructed instance is stored as a result and must be moved to a register with an immediately subsequent `move-result-object` instruction. | |
| 25 | filled-new-array/range | AA|op BBBB CCCC 3rc | filled-new-array/range {vCCCC .. vNNNN}, type@BBBB | Construct an array of the given type and size, filling it with the supplied contents. | Creates a new array of the type specified by type@BBBB and fills it with the values from the specified range of registers. The constructed instance is stored as a result and must be moved to a register with an immediately subsequent `move-result-object` instruction. | |
| 26 | fill-array-data | AA|op BBBB 31t | fill-array-data vAA, +BBBBBBBB | Fill the given array with the indicated data. | Fills the array referenced by vAA with the data specified by the table data pseudo-instruction at the offset +BBBBBBBB. | |
| 27 | throw | AA|op 11x | throw vAA | Throw the indicated exception. | Throws the exception object referenced by vAA. This instruction must be followed by an appropriate exception handler. | |
| 28 | goto | AA|op 10t | goto +AA | Unconditionally jump to the indicated instruction. | Jumps to the instruction at the offset specified by +AA. | 28E9 - goto 0x000150EA Jumps to the instruction at address 0x000150EA. |
| 29 | goto/16 | AA|op BBBB 20t | goto/16 +AAAA | Unconditionally jump to the indicated instruction. | Jumps to the instruction at the offset specified by +AAAA. The branch offset must not be 0. | |
| 2A | goto/32 | ØØ|op AAAA BBBB 30t | goto/32 +AAAAAAAA | Unconditionally jump to the indicated instruction. | Jumps to the instruction at the offset specified by +AAAAAAAA. The branch offset must not be 0. | |
| 2B | packed-switch | AA|op BBBB 31t | packed-switch vAA, +BBBBBBBB | Jump based on the value in the given register using a table of offsets. | Jumps to a new instruction based on the value in vAA, using a table of offsets corresponding to each value in a particular integral range. If there is no match, execution continues with the next instruction. | |
| 2C | sparse-switch | AA|op BBBB 31t | sparse-switch vAA, +BBBBBBBB | Jump based on the value in the given register using an ordered table of value-offset pairs. | Jumps to a new instruction based on the value in vAA, using an ordered table of value-offset pairs. If there is no match, execution continues with the next instruction. | |
| 2D | cmpl-float | AA|op BB CC 23x | cmpl-float vAA, vBB, vCC | Compare two float values with less-than bias. | Compares the float values in vBB and vCC. If vBB == vCC, 0 is stored in vAA. If vBB > vCC, 1 is stored. If vBB < vCC or either value is NaN, -1 is stored. | |
| 2E | cmpg-float | AA|op BB CC 23x | cmpg-float vAA, vBB, vCC | Compare two float values with greater-than bias. | Compares the float values in vBB and vCC. If vBB == vCC, 0 is stored in vAA. If vBB > vCC or either value is NaN, 1 is stored. If vBB < vCC, -1 is stored. | |
| 2F | cmpl-double | AA|op BB CC 23x | cmpl-double vAA, vBB, vCC | Compare two double values with less-than bias. | Compares the double values in vBB,vBB+1 and vCC,vCC+1. If vBB == vCC, 0 is stored in vAA. If vBB > vCC, 1 is stored. If vBB < vCC or either value is NaN, -1 is stored. | |
| 30 | cmpg-double | AA|op BB CC 23x | cmpg-double vAA, vBB, vCC | Compare two double values with greater-than bias. | Compares the double values in vBB,vBB+1 and vCC,vCC+1. If vBB == vCC, 0 is stored in vAA. If vBB > vCC or either value is NaN, 1 is stored. If vBB < vCC, -1 is stored. | |
| 31 | cmp-long | AA|op BB CC 23x | cmp-long vAA, vBB, vCC | Compare two long values. | Compares the long values in vBB,vBB+1 and vCC,vCC+1. If vBB == vCC, 0 is stored in vAA. If vBB > vCC, 1 is stored. If vBB < vCC, -1 is stored. | |
| 32 | if-eq | AA|op BB CC 22t | if-eq vA, vB, +CCCC | Branch if two registers are equal. | Branches to the instruction at the offset +CCCC if the values in vA and vB are equal. Otherwise, execution continues with the next instruction. | |
| 33 | if-ne | AA|op BB CC 22t | if-ne vA, vB, +CCCC | Branch if two registers are not equal. | Branches to the instruction at the offset +CCCC if the values in vA and vB are not equal. Otherwise, execution continues with the next instruction. | |
| 34 | if-lt | AA|op BB CC 22t | if-lt vA, vB, +CCCC | Branch if the first register is less than the second. | Branches to the instruction at the offset +CCCC if the value in vA is less than the value in vB. Otherwise, execution continues with the next instruction. | |
| 35 | if-ge | AA|op BB CC 22t | if-ge vA, vB, +CCCC | Branch if the first register is greater than or equal to the second. | Branches to the instruction at the offset +CCCC if the value in vA is greater than or equal to the value in vB. Otherwise, execution continues with the next instruction. | |
| 36 | if-gt | AA|op BB CC 22t | if-gt vA, vB, +CCCC | Branch if the first register is greater than the second. | Branches to the instruction at the offset +CCCC if the value in vA is greater than the value in vB. Otherwise, execution continues with the next instruction. | |
| 37 | if-le | AA|op BB CC 22t | if-le vA, vB, +CCCC | Branch if the first register is less than or equal to the second. | Branches to the instruction at the offset +CCCC if the value in vA is less than or equal to the value in vB. Otherwise, execution continues with the next instruction. | |
| 38 | if-eqz | AA|op BB 21t | if-eqz vAA, +BBBB | Branch if the register is equal to zero. | Branches to the instruction at the offset +BBBB if the value in vAA is equal to zero. Otherwise, execution continues with the next instruction. | |
| 39 | if-nez | AA|op BB 21t | if-nez vAA, +BBBB | Branch if the register is not equal to zero. | Branches to the instruction at the offset +BBBB if the value in vAA is not equal to zero. Otherwise, execution continues with the next instruction. | |
| 3A | if-ltz | AA|op BB 21t | if-ltz vAA, +BBBB | Branch if the register is less than zero. | Branches to the instruction at the offset +BBBB if the value in vAA is less than zero. Otherwise, execution continues with the next instruction. | |
| 3B | if-gez | AA|op BB 21t | if-gez vAA, +BBBB | Branch if the register is greater than or equal to zero. | Branches to the instruction at the offset +BBBB if the value in vAA is greater than or equal to zero. Otherwise, execution continues with the next instruction. | |
| 3C | if-gtz | AA|op BB 21t | if-gtz vAA, +BBBB | Branch if the register is greater than zero. | Branches to the instruction at the offset +BBBB if the value in vAA is greater than zero. Otherwise, execution continues with the next instruction. | |
| 3D | if-lez | AA|op BB 21t | if-lez vAA, +BBBB | Branch if the register is less than or equal to zero. | Branches to the instruction at the offset +BBBB if the value in vAA is less than or equal to zero. Otherwise, execution continues with the next instruction. | |
| 3E | unused_3E | ØØ|op 10x | unused_3E | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| 3F | unused_3F | ØØ|op 10x | unused_3F | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| 40 | unused_40 | ØØ|op 10x | unused_40 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| 41 | unused_41 | ØØ|op 10x | unused_41 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| 42 | unused_42 | ØØ|op 10x | unused_42 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| 43 | unused_43 | ØØ|op 10x | unused_43 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| 44 | aget | AA|op BB CC 23x | aget vAA, vBB, vCC | Get an integer value from an array. | Retrieves the integer value from the array referenced by vBB at the index specified by vCC and stores it in vAA. | |
| 45 | aget-wide | AA|op BB CC 23x | aget-wide vAA, vBB, vCC | Get a long or double value from an array. | Retrieves the long or double value from the array referenced by vBB at the index specified by vCC and stores it in vAA,vAA+1. | |
| 46 | aget-object | AA|op BB CC 23x | aget-object vAA, vBB, vCC | Get an object reference from an array. | Retrieves the object reference from the array referenced by vBB at the index specified by vCC and stores it in vAA. | |
| 47 | aget-boolean | AA|op BB CC 23x | aget-boolean vAA, vBB, vCC | Get a boolean value from an array. | Retrieves the boolean value from the array referenced by vBB at the index specified by vCC and stores it in vAA. | |
| 48 | aget-byte | AA|op BB CC 23x | aget-byte vAA, vBB, vCC | Get a byte value from an array. | Retrieves the byte value from the array referenced by vBB at the index specified by vCC and stores it in vAA. | |
| 49 | aget-char | AA|op BB CC 23x | aget-char vAA, vBB, vCC | Get a char value from an array. | Retrieves the char value from the array referenced by vBB at the index specified by vCC and stores it in vAA. | |
| 4A | aget-short | AA|op BB CC 23x | aget-short vAA, vBB, vCC | Get a short value from an array. | Retrieves the short value from the array referenced by vBB at the index specified by vCC and stores it in vAA. | |
| 4B | aput | AA|op BB CC 23x | aput vAA, vBB, vCC | Store an integer value into an array. | Stores the integer value from vAA into the array referenced by vBB at the index specified by vCC. | |
| 4C | aput-wide | AA|op BB CC 23x | aput-wide vAA, vBB, vCC | Store a long or double value into an array. | Stores the long or double value from vAA,vAA+1 into the array referenced by vBB at the index specified by vCC. | |
| 4D | aput-object | AA|op BB CC 23x | aput-object vAA, vBB, vCC | Store an object reference into an array. | Stores the object reference from vAA into the array referenced by vBB at the index specified by vCC. | |
| 4E | aput-boolean | AA|op BB CC 23x | aput-boolean vAA, vBB, vCC | Store a boolean value into an array. | Stores the boolean value from vAA into the array referenced by vBB at the index specified by vCC. | |
| 4F | aput-byte | AA|op BB CC 23x | aput-byte vAA, vBB, vCC | Store a byte value into an array. | Stores the byte value from vAA into the array referenced by vBB at the index specified by vCC. | |
| 50 | aput-char | AA|op BB CC 23x | aput-char vAA, vBB, vCC | Store a char value into an array. | Stores the char value from vAA into the array referenced by vBB at the index specified by vCC. | |
| 51 | aput-short | AA|op BB CC 23x | aput-short vAA, vBB, vCC | Store a short value into an array. | Stores the short value from vAA into the array referenced by vBB at the index specified by vCC. | |
| 52 | iget | B|A|op CCCC 22c | iget vA, vB, field@CCCC | Get an instance field value. | Retrieves the value of the instance field specified by field@CCCC from the object referenced by vB and stores it in vA. | |
| 53 | iget-wide | B|A|op CCCC 22c | iget-wide vA, vB, field@CCCC | Get a long or double instance field value. | Retrieves the long or double value of the instance field specified by field@CCCC from the object referenced by vB and stores it in vA,vA+1. | |
| 54 | iget-object | B|A|op CCCC 22c | iget-object vA, vB, field@CCCC | Get an object reference instance field value. | Retrieves the object reference of the instance field specified by field@CCCC from the object referenced by vB and stores it in vA. | |
| 55 | iget-boolean | B|A|op CCCC 22c | iget-boolean vA, vB, field@CCCC | Get a boolean instance field value. | Retrieves the boolean value of the instance field specified by field@CCCC from the object referenced by vB and stores it in vA. | |
| 56 | iget-byte | B|A|op CCCC 22c | iget-byte vA, vB, field@CCCC | Get a byte instance field value. | Retrieves the byte value of the instance field specified by field@CCCC from the object referenced by vB and stores it in vA. | |
| 57 | iget-char | B|A|op CCCC 22c | iget-char vA, vB, field@CCCC | Get a char instance field value. | Retrieves the char value of the instance field specified by field@CCCC from the object referenced by vB and stores it in vA. | |
| 58 | iget-short | B|A|op CCCC 22c | iget-short vA, vB, field@CCCC | Get a short instance field value. | Retrieves the short value of the instance field specified by field@CCCC from the object referenced by vB and stores it in vA. | |
| 59 | iput | B|A|op CCCC 22c | iput vA, vB, field@CCCC | Store a value into an instance field. | Stores the value from vA into the instance field specified by field@CCCC of the object referenced by vB. | |
| 5A | iput-wide | B|A|op CCCC 22c | iput-wide vA, vB, field@CCCC | Store a long or double value into an instance field. | Stores the long or double value from vA,vA+1 into the instance field specified by field@CCCC of the object referenced by vB. | |
| 5B | iput-object | B|A|op CCCC 22c | iput-object vA, vB, field@CCCC | Store an object reference into an instance field. | Stores the object reference from vA into the instance field specified by field@CCCC of the object referenced by vB. | |
| 5C | iput-boolean | B|A|op CCCC 22c | iput-boolean vA, vB, field@CCCC | Store a boolean value into an instance field. | Stores the boolean value from vA into the instance field specified by field@CCCC of the object referenced by vB. | |
| 5D | iput-byte | B|A|op CCCC 22c | iput-byte vA, vB, field@CCCC | Store a byte value into an instance field. | Stores the byte value from vA into the instance field specified by field@CCCC of the object referenced by vB. | |
| 5E | iput-char | B|A|op CCCC 22c | iput-char vA, vB, field@CCCC | Store a char value into an instance field. | Stores the char value from vA into the instance field specified by field@CCCC of the object referenced by vB. | |
| 5F | iput-short | B|A|op CCCC 22c | iput-short vA, vB, field@CCCC | Store a short value into an instance field. | Stores the short value from vA into the instance field specified by field@CCCC of the object referenced by vB. | |
| 60 | sget | AA|op BBBB 21c | sget vAA, field@BBBB | Get a static field value. | Retrieves the value of the static field specified by field@BBBB and stores it in vAA. | |
| 61 | sget-wide | AA|op BBBB 21c | sget-wide vAA, field@BBBB | Get a long or double static field value. | Retrieves the long or double value of the static field specified by field@BBBB and stores it in vAA,vAA+1. | |
| 62 | sget-object | AA|op BBBB 21c | sget-object vAA, field@BBBB | Get an object reference static field value. | Retrieves the object reference of the static field specified by field@BBBB and stores it in vAA. | |
| 63 | sget-boolean | AA|op BBBB 21c | sget-boolean vAA, field@BBBB | Get a boolean static field value. | Retrieves the boolean value of the static field specified by field@BBBB and stores it in vAA. | |
| 64 | sget-byte | AA|op BBBB 21c | sget-byte vAA, field@BBBB | Get a byte static field value. | Retrieves the byte value of the static field specified by field@BBBB and stores it in vAA. | |
| 65 | sget-char | AA|op BBBB 21c | sget-char vAA, field@BBBB | Get a char static field value. | Retrieves the char value of the static field specified by field@BBBB and stores it in vAA. | |
| 66 | sget-short | AA|op BBBB 21c | sget-short vAA, field@BBBB | Get a short static field value. | Retrieves the short value of the static field specified by field@BBBB and stores it in vAA. | |
| 67 | sput | AA|op BBBB 21c | sput vAA, field@BBBB | Store a value into a static field. | Stores the value from vAA into the static field specified by field@BBBB. | |
| 68 | sput-wide | AA|op BBBB 21c | sput-wide vAA, field@BBBB | Store a long or double value into a static field. | Stores the long or double value from vAA,vAA+1 into the static field specified by field@BBBB. | |
| 69 | sput-object | AA|op BBBB 21c | sput-object vAA, field@BBBB | Store an object reference into a static field. | Stores the object reference from vAA into the static field specified by field@BBBB. | |
| 6A | sput-boolean | AA|op BBBB 21c | sput-boolean vAA, field@BBBB | Store a boolean value into a static field. | Stores the boolean value from vAA into the static field specified by field@BBBB. | |
| 6B | sput-byte | AA|op BBBB 21c | sput-byte vAA, field@BBBB | Store a byte value into a static field. | Stores the byte value from vAA into the static field specified by field@BBBB. | |
| 6C | sput-char | AA|op BBBB 21c | sput-char vAA, field@BBBB | Store a char value into a static field. | Stores the char value from vAA into the static field specified by field@BBBB. | |
| 6D | sput-short | AA|op BBBB 21c | sput-short vAA, field@BBBB | Store a short value into a static field. | Stores the short value from vAA into the static field specified by field@BBBB. | |
| 6E | invoke-virtual | A|G|op BBBB F|E|D|C 35c | invoke-virtual {vC, vD, vE, vF, vG}, meth@BBBB | Invoke a virtual method. | Invokes the virtual method specified by meth@BBBB with the arguments from the specified registers. The result (if any) can be stored with a `move-result*` instruction immediately following this one. | |
| 6F | invoke-super | A|G|op BBBB F|E|D|C 35c | invoke-super {vC, vD, vE, vF, vG}, meth@BBBB | Invoke the closest superclass's virtual method. | Invokes the closest superclass's virtual method specified by meth@BBBB with the arguments from the specified registers. This is used for methods that are not `static`, `private`, or constructor. | |
| 70 | invoke-direct | A|G|op BBBB F|E|D|C 35c | invoke-direct {vC, vD, vE, vF, vG}, meth@BBBB | Invoke a direct method. | Invokes the direct method specified by meth@BBBB with the arguments from the specified registers. Direct methods are non-overridable instance methods, such as `private` methods or constructor. | |
| 71 | invoke-static | A|G|op BBBB F|E|D|C 35c | invoke-static {vC, vD, vE, vF, vG}, meth@BBBB | Invoke a static method. | Invokes the static method specified by meth@BBBB with the arguments from the specified registers. Static methods are always direct methods. | |
| 72 | invoke-interface | A|G|op BBBB F|E|D|C 35c | invoke-interface {vC, vD, vE, vF, vG}, meth@BBBB | Invoke an interface method. | Invokes the interface method specified by meth@BBBB with the arguments from the specified registers. This is used for methods on objects whose concrete class is not known. | |
| 73 | unused_73 | ØØ|op 10x | unused_73 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| 74 | invoke-virtual/range | AA|op BBBB CCCC 3rc | invoke-virtual/range {vCCCC .. vNNNN}, meth@BBBB | Invoke a virtual method with a range of registers. | Invokes the virtual method specified by meth@BBBB with the arguments from the specified range of registers. The result (if any) can be stored with a `move-result*` instruction immediately following this one. | |
| 75 | invoke-super/range | AA|op BBBB CCCC 3rc | invoke-super/range {vCCCC .. vNNNN}, meth@BBBB | Invoke the closest superclass's virtual method with a range of registers. | Invokes the closest superclass's virtual method specified by meth@BBBB with the arguments from the specified range of registers. | |
| 76 | invoke-direct/range | AA|op BBBB CCCC 3rc | invoke-direct/range {vCCCC .. vNNNN}, meth@BBBB | Invoke a direct method with a range of registers. | Invokes the direct method specified by meth@BBBB with the arguments from the specified range of registers. Direct methods are non-overridable instance methods, such as `private` methods or constructors. | |
| 77 | invoke-static/range | AA|op BBBB CCCC 3rc | invoke-static/range {vCCCC .. vNNNN}, meth@BBBB | Invoke a static method with a range of registers. | Invokes the static method specified by meth@BBBB with the arguments from the specified range of registers. Static methods are always direct methods. | |
| 78 | invoke-interface/range | AA|op BBBB CCCC 3rc | invoke-interface/range {vCCCC .. vNNNN}, meth@BBBB | Invoke an interface method with a range of registers. | Invokes the interface method specified by meth@BBBB with the arguments from the specified range of registers. This is used for methods on objects whose concrete class is not known. | |
| 79 | unused_79 | ØØ|op 10x | unused_79 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| 7A | unused_7A | ØØ|op 10x | unused_7A | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| 7B | neg-int | B|A|op 12x | neg-int vA, vB | Negate an integer value. | Negates the integer value in vB and stores the result in vA. | |
| 7C | not-int | B|A|op 12x | not-int vA, vB | Perform bitwise NOT on an integer value. | Performs a bitwise NOT operation on the integer value in vB and stores the result in vA. | |
| 7D | neg-long | B|A|op 12x | neg-long vA, vB | Negate a long value. | Negates the long value in vB,vB+1 and stores the result in vA,vA+1. | |
| 7E | not-long | B|A|op 12x | not-long vA, vB | Perform bitwise NOT on a long value. | Performs a bitwise NOT operation on the long value in vB,vB+1 and stores the result in vA,vA+1. | |
| 7F | neg-float | B|A|op 12x | neg-float vA, vB | Negate a float value. | Negates the float value in vB and stores the result in vA. | |
| 80 | neg-double | B|A|op 12x | neg-double vA, vB | Negate a double value. | Negates the double value in vB,vB+1 and stores the result in vA,vA+1. | |
| 81 | int-to-long | B|A|op 12x | int-to-long vA, vB | Convert an integer to a long. | Converts the integer value in vB to a long value and stores the result in vA,vA+1. | |
| 82 | int-to-float | B|A|op 12x | int-to-float vA, vB | Convert an integer to a float. | Converts the integer value in vB to a float value and stores the result in vA. | |
| 83 | int-to-double | B|A|op 12x | int-to-double vA, vB | Convert an integer to a double. | Converts the integer value in vB to a double value and stores the result in vA,vA+1. | |
| 84 | long-to-int | B|A|op 12x | long-to-int vA, vB | Convert a long to an integer. | Converts the long value in vB,vB+1 to an integer value and stores the result in vA. | |
| 85 | long-to-float | B|A|op 12x | long-to-float vA, vB | Convert a long to a float. | Converts the long value in vB,vB+1 to a float value and stores the result in vA. | |
| 86 | long-to-double | B|A|op 12x | long-to-double vA, vB | Convert a long to a double. | Converts the long value in vB,vB+1 to a double value and stores the result in vA,vA+1. | |
| 87 | float-to-int | B|A|op 12x | float-to-int vA, vB | Convert a float to an integer. | Converts the float value in vB to an integer value and stores the result in vA. | |
| 88 | float-to-long | B|A|op 12x | float-to-long vA, vB | Convert a float to a long. | Converts the float value in vB to a long value and stores the result in vA,vA+1. | |
| 89 | float-to-double | B|A|op 12x | float-to-double vA, vB | Convert a float to a double. | Converts the float value in vB to a double value and stores the result in vA,vA+1. | |
| 8A | double-to-int | B|A|op 12x | double-to-int vA, vB | Convert a double to an integer. | Converts the double value in vB,vB+1 to an integer value and stores the result in vA. | |
| 8B | double-to-long | B|A|op 12x | double-to-long vA, vB | Convert a double to a long. | Converts the double value in vB,vB+1 to a long value and stores the result in vA,vA+1. | |
| 8C | double-to-float | B|A|op 12x | double-to-float vA, vB | Convert a double to a float. | Converts the double value in vB,vB+1 to a float value and stores the result in vA. | |
| 8D | int-to-byte | B|A|op 12x | int-to-byte vA, vB | Convert an integer to a byte. | Converts the integer value in vB to a byte value and stores the result in vA. | |
| 8E | int-to-char | B|A|op 12x | int-to-char vA, vB | Convert an integer to a char. | Converts the integer value in vB to a char value and stores the result in vA. | |
| 8F | int-to-short | B|A|op 12x | int-to-short vA, vB | Convert an integer to a short. | Converts the integer value in vB to a short value and stores the result in vA. | |
| 90 | add-int | AA|op BB CC 23x | add-int vAA, vBB, vCC | Add two integer values. | Adds the integer values in vBB and vCC and stores the result in vAA. | |
| 91 | sub-int | AA|op BB CC 23x | sub-int vAA, vBB, vCC | Subtract two integer values. | Subtracts the integer value in vCC from the integer value in vBB and stores the result in vAA. | |
| 92 | mul-int | AA|op BB CC 23x | mul-int vAA, vBB, vCC | Multiply two integer values. | Multiplies the integer values in vBB and vCC and stores the result in vAA. | |
| 93 | div-int | AA|op BB CC 23x | div-int vAA, vBB, vCC | Divide two integer values. | Divides the integer value in vBB by the integer value in vCC and stores the result in vAA. | |
| 94 | rem-int | AA|op BB CC 23x | rem-int vAA, vBB, vCC | Compute the remainder of two integer values. | Computes the remainder of the integer value in vBB divided by the integer value in vCC and stores the result in vAA. | |
| 95 | and-int | AA|op BB CC 23x | and-int vAA, vBB, vCC | Perform bitwise AND on two integer values. | Performs a bitwise AND operation on the integer values in vBB and vCC and stores the result in vAA. | |
| 96 | or-int | AA|op BB CC 23x | or-int vAA, vBB, vCC | Perform bitwise OR on two integer values. | Performs a bitwise OR operation on the integer values in vBB and vCC and stores the result in vAA. | |
| 97 | xor-int | AA|op BB CC 23x | xor-int vAA, vBB, vCC | Perform bitwise XOR on two integer values. | Performs a bitwise XOR operation on the integer values in vBB and vCC and stores the result in vAA. | |
| 98 | shl-int | AA|op BB CC 23x | shl-int vAA, vBB, vCC | Shift an integer value left. | Shifts the integer value in vBB left by the number of bits specified in vCC and stores the result in vAA. | |
| 99 | shr-int | AA|op BB CC 23x | shr-int vAA, vBB, vCC | Shift an integer value right. | Shifts the integer value in vBB right by the number of bits specified in vCC and stores the result in vAA. | |
| 9A | ushr-int | AA|op BB CC 23x | ushr-int vAA, vBB, vCC | Unsigned shift an integer value right. | Performs an unsigned right shift on the integer value in vBB by the number of bits specified in vCC and stores the result in vAA. | |
| 9B | add-long | AA|op BB CC 23x | add-long vAA, vBB, vCC | Add two long values. | Adds the long values in vBB,vBB+1 and vCC,vCC+1 and stores the result in vAA,vAA+1. | |
| 9C | sub-long | AA|op BB CC 23x | sub-long vAA, vBB, vCC | Subtract two long values. | Subtracts the long value in vCC,vCC+1 from the long value in vBB,vBB+1 and stores the result in vAA,vAA+1. | |
| 9D | mul-long | AA|op BB CC 23x | mul-long vAA, vBB, vCC | Multiply two long values. | Multiplies the long values in vBB,vBB+1 and vCC,vCC+1 and stores the result in vAA,vAA+1. | |
| 9E | div-long | AA|op BB CC 23x | div-long vAA, vBB, vCC | Divide two long values. | Divides the long value in vBB,vBB+1 by the long value in vCC,vCC+1 and stores the result in vAA,vAA+1. | |
| 9F | rem-long | AA|op BB CC 23x | rem-long vAA, vBB, vCC | Compute the remainder of two long values. | Computes the remainder of the long value in vBB,vBB+1 divided by the long value in vCC,vCC+1 and stores the result in vAA,vAA+1. | |
| A0 | and-long | AA|op BB CC 23x | and-long vAA, vBB, vCC | Perform bitwise AND on two long values. | Performs a bitwise AND operation on the long values in vBB,vBB+1 and vCC,vCC+1 and stores the result in vAA,vAA+1. | |
| A1 | or-long | AA|op BB CC 23x | or-long vAA, vBB, vCC | Perform bitwise OR on two long values. | Performs a bitwise OR operation on the long values in vBB,vBB+1 and vCC,vCC+1 and stores the result in vAA,vAA+1. | |
| A2 | xor-long | AA|op BB CC 23x | xor-long vAA, vBB, vCC | Perform bitwise XOR on two long values. | Performs a bitwise XOR operation on the long values in vBB,vBB+1 and vCC,vCC+1 and stores the result in vAA,vAA+1. | |
| A3 | shl-long | AA|op BB CC 23x | shl-long vAA, vBB, vCC | Shift a long value left. | Shifts the long value in vBB,vBB+1 left by the number of bits specified in vCC and stores the result in vAA,vAA+1. | |
| A4 | shr-long | AA|op BB CC 23x | shr-long vAA, vBB, vCC | Shift a long value right. | Shifts the long value in vBB,vBB+1 right by the number of bits specified in vCC and stores the result in vAA,vAA+1. | |
| A5 | ushr-long | AA|op BB CC 23x | ushr-long vAA, vBB, vCC | Unsigned shift a long value right. | Performs an unsigned right shift on the long value in vBB,vBB+1 by the number of bits specified in vCC and stores the result in vAA,vAA+1. | |
| A6 | add-float | AA|op BB CC 23x | add-float vAA, vBB, vCC | Perform the identified binary operation on the two source registers, storing the result in the destination register. | Adds the float value in vBB to the float value in vCC and stores the result in vAA. | |
| A7 | sub-float | AA|op BB CC 23x | sub-float vAA, vBB, vCC | Perform the identified binary operation on the two source registers, storing the result in the destination register. | Subtracts the float value in vCC from the float value in vBB and stores the result in vAA. | |
| A8 | mul-float | AA|op BB CC 23x | mul-float vAA, vBB, vCC | Perform the identified binary operation on the two source registers, storing the result in the destination register. | Multiplies the float value in vBB by the float value in vCC and stores the result in vAA. | |
| A9 | div-float | AA|op BB CC 23x | div-float vAA, vBB, vCC | Perform the identified binary operation on the two source registers, storing the result in the destination register. | Divides the float value in vBB by the float value in vCC and stores the result in vAA. | |
| AA | rem-float | AA|op BB CC 23x | rem-float vAA, vBB, vCC | Perform the identified binary operation on the two source registers, storing the result in the destination register. | Calculates the remainder of the division of the float value in vBB by the float value in vCC and stores the result in vAA. | |
| AB | add-double | AA|op BB CC 23x | add-double vAA, vBB, vCC | Perform the identified binary operation on the two source registers, storing the result in the destination register. | Adds the double value in vBB,vBB+1 to the double value in vCC,vCC+1 and stores the result in vAA,vAA+1. | |
| AC | sub-double | AA|op BB CC 23x | sub-double vAA, vBB, vCC | Perform the identified binary operation on the two source registers, storing the result in the destination register. | Subtracts the double value in vCC,vCC+1 from the double value in vBB,vBB+1 and stores the result in vAA,vAA+1. | |
| AD | mul-double | AA|op BB CC 23x | mul-double vAA, vBB, vCC | Perform the identified binary operation on the two source registers, storing the result in the destination register. | Multiplies the double value in vBB,vBB+1 by the double value in vCC,vCC+1 and stores the result in vAA,vAA+1. | |
| AE | div-double | AA|op BB CC 23x | div-double vAA, vBB, vCC | Perform the identified binary operation on the two source registers, storing the result in the destination register. | Divides the double value in vBB,vBB+1 by the double value in vCC,vCC+1 and stores the result in vAA,vAA+1. | |
| AF | rem-double | AA|op BB CC 23x | rem-double vAA, vBB, vCC | Perform the identified binary operation on the two source registers, storing the result in the destination register. | Calculates the remainder of the division of the double value in vBB,vBB+1 by the double value in vCC,vCC+1 and stores the result in vAA,vAA+1. | |
| B0 | add-int/2addr | B|A|op 12x | add-int/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Adds the int value in vB to the int value in vA and stores the result in vA. | |
| B1 | sub-int/2addr | B|A|op 12x | sub-int/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Subtracts the int value in vB from the int value in vA and stores the result in vA. | |
| B2 | mul-int/2addr | B|A|op 12x | mul-int/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Multiplies the int value in vA by the int value in vB and stores the result in vA. | |
| B3 | div-int/2addr | B|A|op 12x | div-int/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Divides the int value in vA by the int value in vB and stores the result in vA. | |
| B4 | rem-int/2addr | B|A|op 12x | rem-int/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Calculates the remainder of the division of the int value in vA by the int value in vB and stores the result in vA. | |
| B5 | and-int/2addr | B|A|op 12x | and-int/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Performs a bitwise AND operation on the int value in vA and the int value in vB and stores the result in vA. | |
| B6 | or-int/2addr | B|A|op 12x | or-int/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Performs a bitwise OR operation on the int value in vA and the int value in vB and stores the result in vA. | |
| B7 | xor-int/2addr | B|A|op 12x | xor-int/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Performs a bitwise XOR operation on the int value in vA and the int value in vB and stores the result in vA. | |
| B8 | shl-int/2addr | B|A|op 12x | shl-int/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Shifts the int value in vA left by the number of bits specified in vB and stores the result in vA. | |
| B9 | shr-int/2addr | B|A|op 12x | shr-int/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Shifts the int value in vA right by the number of bits specified in vB and stores the result in vA. | |
| BA | ushr-int/2addr | B|A|op 12x | ushr-int/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Performs an unsigned right shift on the int value in vA by the number of bits specified in vB and stores the result in vA. | |
| BB | add-long/2addr | B|A|op 12x | add-long/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Adds the long value in vB,vB+1 to the long value in vA,vA+1 and stores the result in vA,vA+1. | |
| BC | sub-long/2addr | B|A|op 12x | sub-long/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Subtracts the long value in vB,vB+1 from the long value in vA,vA+1 and stores the result in vA,vA+1. | |
| BD | mul-long/2addr | B|A|op 12x | mul-long/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Multiplies the long value in vA,vA+1 by the long value in vB,vB+1 and stores the result in vA,vA+1. | |
| BE | div-long/2addr | B|A|op 12x | div-long/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Divides the long value in vA,vA+1 by the long value in vB,vB+1 and stores the result in vA,vA+1. | |
| BF | rem-long/2addr | B|A|op 12x | rem-long/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Calculates the remainder of the division of the long value in vA,vA+1 by the long value in vB,vB+1 and stores the result in vA,vA+1. | |
| C0 | and-long/2addr | B|A|op 12x | and-long/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Performs a bitwise AND operation on the long value in vA,vA+1 and the long value in vB,vB+1 and stores the result in vA,vA+1. | |
| C1 | or-long/2addr | B|A|op 12x | or-long/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Performs a bitwise OR operation on the long value in vA,vA+1 and the long value in vB,vB+1 and stores the result in vA,vA+1. | |
| C2 | xor-long/2addr | B|A|op 12x | xor-long/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Performs a bitwise XOR operation on the long value in vA,vA+1 and the long value in vB,vB+1 and stores the result in vA,vA+1. | |
| C3 | shl-long/2addr | B|A|op 12x | shl-long/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Shifts the long value in vA,vA+1 left by the number of bits specified in vB and stores the result in vA. | |
| C4 | shr-long/2addr | B|A|op 12x | shr-long/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Shifts the long value in vA,vA+1 right by the number of bits specified in vB and stores the result in vA. | |
| C5 | ushr-long/2addr | B|A|op 12x | ushr-long/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Performs an unsigned right shift on the long value in vA,vA+1 by the number of bits specified in vB and stores the result in vA. | |
| C6 | add-float/2addr | B|A|op 12x | add-float/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Adds the float value in vB to the float value in vA and stores the result in vA. | |
| C7 | sub-float/2addr | B|A|op 12x | sub-float/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Subtracts the float value in vB from the float value in vA and stores the result in vA. | |
| C8 | mul-float/2addr | B|A|op 12x | mul-float/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Multiplies the float value in vA by the float value in vB and stores the result in vA. | |
| C9 | div-float/2addr | B|A|op 12x | div-float/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Divides the float value in vA by the float value in vB and stores the result in vA. | |
| CA | rem-float/2addr | B|A|op 12x | rem-float/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Calculates the remainder of the division of the float value in vA by the float value in vB and stores the result in vA. | |
| CB | add-double/2addr | B|A|op 12x | add-double/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Adds the double value in vB,vB+1 to the double value in vA,vA+1 and stores the result in vA,vA+1. | |
| CC | sub-double/2addr | B|A|op 12x | sub-double/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Subtracts the double value in vB,vB+1 from the double value in vA,vA+1 and stores the result in vA,vA+1. | |
| CD | mul-double/2addr | B|A|op 12x | mul-double/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Multiplies the double value in vA,vA+1 by the double value in vB,vB+1 and stores the result in vA,vA+1. | |
| CE | div-double/2addr | B|A|op 12x | div-double/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Divides the double value in vA,vA+1 by the double value in vB,vB+1 and stores the result in vA,vA+1. | |
| CF | rem-double/2addr | B|A|op 12x | rem-double/2addr vA, vB | Perform the identified binary operation on the two source registers, storing the result in the first source register. | Calculates the remainder of the division of the double value in vA,vA+1 by the double value in vB,vB+1 and stores the result in vA,vA+1. | |
| D0 | add-int/lit16 | B|A|op CCCC 22s | add-int/lit16 vA, vB, #+CCCC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Adds the int value in vB to the literal value CCCC and stores the result in vA. | |
| D1 | rsub-int | B|A|op CCCC 22s | rsub-int/lit16 vA, vB, #+CCCC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Subtracts the int value in vB from the literal value CCCC and stores the result in vA. | |
| D2 | mul-int/lit16 | B|A|op CCCC 22s | mul-int/lit16 vA, vB, #+CCCC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Multiplies the int value in vB by the literal value CCCC and stores the result in vA. | |
| D3 | div-int/lit16 | B|A|op CCCC 22s | div-int/lit16 vA, vB, #+CCCC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Divides the int value in vB by the literal value CCCC and stores the result in vA. | |
| D4 | rem-int/lit16 | B|A|op CCCC 22s | rem-int/lit16 vA, vB, #+CCCC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Calculates the remainder of the division of the int value in vB by the literal value CCCC and stores the result in vA. | |
| D5 | and-int/lit16 | B|A|op CCCC 22s | and-int/lit16 vA, vB, #+CCCC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Performs a bitwise AND operation on the int value in vB and the literal value CCCC and stores the result in vA. | |
| D6 | or-int/lit16 | B|A|op CCCC 22s | or-int/lit16 vA, vB, #+CCCC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Performs a bitwise OR operation on the int value in vB and the literal value CCCC and stores the result in vA. | |
| D7 | xor-int/lit16 | B|A|op CCCC 22s | xor-int/lit16 vA, vB, #+CCCC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Performs a bitwise XOR operation on the int value in vB and the literal value CCCC and stores the result in vA. | |
| D8 | add-int/lit8 | AA|op BB CC 22b | add-int/lit8 vAA, vBB, #+CC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Adds the int value in vBB to the literal value CC and stores the result in vAA. | |
| D9 | rsub-int/lit8 | AA|op BB CC 22b | rsub-int/lit8 vAA, vBB, #+CC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Subtracts the int value in vBB from the literal value CC and stores the result in vAA. | |
| DA | mul-int/lit8 | AA|op BB CC 22b | mul-int/lit8 vAA, vBB, #+CC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Multiplies the int value in vBB by the literal value CC and stores the result in vAA. | |
| DB | div-int/lit8 | AA|op BB CC 22b | div-int/lit8 vAA, vBB, #+CC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Divides the int value in vBB by the literal value CC and stores the result in vAA. | |
| DC | rem-int/lit8 | AA|op BB CC 22b | rem-int/lit8 vAA, vBB, #+CC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Calculates the remainder of the division of the int value in vBB by the literal value CC and stores the result in vAA. | |
| DD | and-int/lit8 | AA|op BB CC 22b | and-int/lit8 vAA, vBB, #+CC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Performs a bitwise AND operation on the int value in vBB and the literal value CC and stores the result in vAA. | |
| DE | or-int/lit8 | AA|op BB CC 22b | or-int/lit8 vAA, vBB, #+CC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Performs a bitwise OR operation on the int value in vBB and the literal value CC and stores the result in vAA. | |
| DF | xor-int/lit8 | AA|op BB CC 22b | xor-int/lit8 vAA, vBB, #+CC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Performs a bitwise XOR operation on the int value in vBB and the literal value CC and stores the result in vAA. | |
| E0 | shl-int/lit8 | AA|op BB CC 22b | shl-int/lit8 vAA, vBB, #+CC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Shifts the int value in vBB left by the number of bits specified by the literal value CC and stores the result in vAA. | |
| E1 | shr-int/lit8 | AA|op BB CC 22b | shr-int/lit8 vAA, vBB, #+CC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Shifts the int value in vBB right by the number of bits specified by the literal value CC and stores the result in vAA. | |
| E2 | ushr-int/lit8 | AA|op BB CC 22b | ushr-int/lit8 vAA, vBB, #+CC | Perform the indicated binary op on the indicated register (first argument) and literal value (second argument), storing the result in the destination register. | Performs an unsigned right shift on the int value in vBB by the number of bits specified by the literal value CC and stores the result in vAA. | |
| E3 | unused_E3 | ØØ|op 10x | unused_E3 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| E4 | unused_E4 | ØØ|op 10x | unused_E4 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| E5 | unused_E5 | ØØ|op 10x | unused_E5 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| E6 | unused_E6 | ØØ|op 10x | unused_E6 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| E7 | unused_E7 | ØØ|op 10x | unused_E7 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| E8 | unused_E8 | ØØ|op 10x | unused_E8 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| E9 | unused_E9 | ØØ|op 10x | unused_E9 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| EA | unused_EA | ØØ|op 10x | unused_EA | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| EB | unused_EB | ØØ|op 10x | unused_EB | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| EC | unused_EC | ØØ|op 10x | unused_EC | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| ED | unused_ED | ØØ|op 10x | unused_ED | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| EE | unused_EE | ØØ|op 10x | unused_EE | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| EF | unused_EF | ØØ|op 10x | unused_EF | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| F0 | unused_F0 | ØØ|op 10x | unused_F0 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| F1 | unused_F1 | ØØ|op 10x | unused_F1 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| F2 | unused_F2 | ØØ|op 10x | unused_F2 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| F3 | unused_F3 | ØØ|op 10x | unused_F3 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| F4 | unused_F4 | ØØ|op 10x | unused_F4 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| F5 | unused_F5 | ØØ|op 10x | unused_F5 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| F6 | unused_F6 | ØØ|op 10x | unused_F6 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| F7 | unused_F7 | ØØ|op 10x | unused_F7 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| F8 | unused_F8 | ØØ|op 10x | unused_F8 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| F9 | unused_F9 | ØØ|op 10x | unused_F9 | Unused opcode. | This opcode is currently unused and reserved for future use. | |
| FA | invoke-polymorphic | A|G|op BBBB F|E|D|C HHHH 45cc | invoke-polymorphic {vC, vD, vE, vF, vG}, meth@BBBB, proto@HHHH | Invoke the indicated signature polymorphic method. | Invokes the signature polymorphic method specified by meth@BBBB with the arguments in registers vC, vD, vE, vF, and vG, according to the prototype specified by proto@HHHH. The method reference must be to a signature polymorphic method, such as `java.lang.invoke.MethodHandle.invoke` or `java.lang.invoke.MethodHandle.invokeExact`. The receiver must be an object supporting the signature polymorphic method being invoked. | |
| FB | invoke-polymorphic/range | AA|op BBBB CCCC HHHH 4rcc | invoke-polymorphic/range {vCCCC .. vNNNN}, meth@BBBB, proto@HHHH | Invoke the indicated signature polymorphic method. | Invokes the signature polymorphic method specified by meth@BBBB with the arguments in the range of registers from vCCCC to vNNNN, according to the prototype specified by proto@HHHH. The method reference must be to a signature polymorphic method. The receiver must be an object supporting the signature polymorphic method being invoked. | |
| FC | invoke-custom | A|G|op BBBB F|E|D|C 35c | invoke-custom {vC, vD, vE, vF, vG}, call_site@BBBB | Resolves and invokes the indicated call site. | Resolves and invokes the call site specified by call_site@BBBB. This instruction executes in two phases: call site resolution and call site invocation. If the call site does not have an associated `java.lang.invoke.CallSite` instance, the bootstrap linker method is invoked. The bootstrap linker method returns a `java.lang.invoke.CallSite` instance, which is then associated with the call site. Call site invocation is made on the `java.lang.invoke.MethodHandle` target of the resolved `java.lang.invoke.CallSite` instance. The target is invoked as if executing `invoke-polymorphic`. | |
| FD | invoke-custom/range | AA|op BBBB CCCC 3rc | invoke-custom/range {vCCCC .. vNNNN}, call_site@BBBB | Resolve and invoke a call site. | Resolves and invokes the call site specified by call_site@BBBB with arguments in the range of registers from vCCCC to vNNNN. This instruction follows the same two-phase execution as `invoke-custom`: call site resolution and call site invocation. | |
| FE | const-method-handle | AA|op BBBB 21c | const-method-handle vAA, method_handle@BBBB | Move a reference to the method handle into the specified register. | Moves a reference to the method handle specified by method_handle@BBBB into vAA. | |
| FF | const-method-type | AA|op BBBB 21c | const-method-type vAA, proto@BBBB | Move a reference to the method prototype into the specified register. | Moves a reference to the method prototype specified by proto@BBBB into vAA. |