pub enum OpCode {
Show 227 variants
NOP,
MOVE,
MOVE_FROM16,
MOVE_16,
MOVE_WIDE,
MOVE_WIDE_FROM16,
MOVE_WIDE_16,
MOVE_OBJECT,
MOVE_OBJECT_FROM16,
MOVE_OBJECT_16,
MOVE_RESULT,
MOVE_RESULT_WIDE,
MOVE_RESULT_OBJECT,
MOVE_EXCEPTION,
RETURN_VOID,
RETURN,
RETURN_WIDE,
RETURN_OBJECT,
CONST_4,
CONST_16,
CONST,
CONST_HIGH16,
CONST_WIDE_16,
CONST_WIDE_32,
CONST_WIDE,
CONST_WIDE_HIGH16,
CONST_STRING,
CONST_STRING_JUMBO,
CONST_CLASS,
MONITOR_ENTER,
MONITOR_EXIT,
CHECK_CAST,
INSTANCE_OF,
ARRAY_LENGTH,
NEW_INSTANCE,
NEW_ARRAY,
FILLED_NEW_ARRAY,
FILLED_NEW_ARRAY_RANGE,
FILL_ARRAY_DATA,
THROW,
GOTO,
GOTO_16,
GOTO_32,
PACKED_SWITCH,
SPARSE_SWITCH,
CMPL_FLOAT,
CMPG_FLOAT,
CMPL_DOUBLE,
CMPG_DOUBLE,
CMP_LONG,
IF_EQ,
IF_NE,
IF_LT,
IF_GE,
IF_GT,
IF_LE,
IF_EQZ,
IF_NEZ,
IF_LTZ,
IF_GEZ,
IF_GTZ,
IF_LEZ,
AGET,
AGET_WIDE,
AGET_OBJECT,
AGET_BOOLEAN,
AGET_BYTE,
AGET_CHAR,
AGET_SHORT,
APUT,
APUT_WIDE,
APUT_OBJECT,
APUT_BOOLEAN,
APUT_BYTE,
APUT_CHAR,
APUT_SHORT,
IGET,
IGET_WIDE,
IGET_OBJECT,
IGET_BOOLEAN,
IGET_BYTE,
IGET_CHAR,
IGET_SHORT,
IPUT,
IPUT_WIDE,
IPUT_OBJECT,
IPUT_BOOLEAN,
IPUT_BYTE,
IPUT_CHAR,
IPUT_SHORT,
SGET,
SGET_WIDE,
SGET_OBJECT,
SGET_BOOLEAN,
SGET_BYTE,
SGET_CHAR,
SGET_SHORT,
SPUT,
SPUT_WIDE,
SPUT_OBJECT,
SPUT_BOOLEAN,
SPUT_BYTE,
SPUT_CHAR,
SPUT_SHORT,
INVOKE_VIRTUAL,
INVOKE_SUPER,
INVOKE_DIRECT,
INVOKE_STATIC,
INVOKE_INTERFACE,
INVOKE_VIRTUAL_RANGE,
INVOKE_SUPER_RANGE,
INVOKE_DIRECT_RANGE,
INVOKE_STATIC_RANGE,
INVOKE_INTERFACE_RANGE,
NEG_INT,
NOT_INT,
NEG_LONG,
NOT_LONG,
NEG_FLOAT,
NEG_DOUBLE,
INT_TO_LONG,
INT_TO_FLOAT,
INT_TO_DOUBLE,
LONG_TO_INT,
LONG_TO_FLOAT,
LONG_TO_DOUBLE,
FLOAT_TO_INT,
FLOAT_TO_LONG,
FLOAT_TO_DOUBLE,
DOUBLE_TO_INT,
DOUBLE_TO_LONG,
DOUBLE_TO_FLOAT,
INT_TO_BYTE,
INT_TO_CHAR,
INT_TO_SHORT,
ADD_INT,
SUB_INT,
MUL_INT,
DIV_INT,
REM_INT,
AND_INT,
OR_INT,
XOR_INT,
SHL_INT,
SHR_INT,
USHR_INT,
ADD_LONG,
SUB_LONG,
MUL_LONG,
DIV_LONG,
REM_LONG,
AND_LONG,
OR_LONG,
XOR_LONG,
SHL_LONG,
SHR_LONG,
USHR_LONG,
ADD_FLOAT,
SUB_FLOAT,
MUL_FLOAT,
DIV_FLOAT,
REM_FLOAT,
ADD_DOUBLE,
SUB_DOUBLE,
MUL_DOUBLE,
DIV_DOUBLE,
REM_DOUBLE,
ADD_INT_2ADDR,
SUB_INT_2ADDR,
MUL_INT_2ADDR,
DIV_INT_2ADDR,
REM_INT_2ADDR,
AND_INT_2ADDR,
OR_INT_2ADDR,
XOR_INT_2ADDR,
SHL_INT_2ADDR,
SHR_INT_2ADDR,
USHR_INT_2ADDR,
ADD_LONG_2ADDR,
SUB_LONG_2ADDR,
MUL_LONG_2ADDR,
DIV_LONG_2ADDR,
REM_LONG_2ADDR,
AND_LONG_2ADDR,
OR_LONG_2ADDR,
XOR_LONG_2ADDR,
SHL_LONG_2ADDR,
SHR_LONG_2ADDR,
USHR_LONG_2ADDR,
ADD_FLOAT_2ADDR,
SUB_FLOAT_2ADDR,
MUL_FLOAT_2ADDR,
DIV_FLOAT_2ADDR,
REM_FLOAT_2ADDR,
ADD_DOUBLE_2ADDR,
SUB_DOUBLE_2ADDR,
MUL_DOUBLE_2ADDR,
DIV_DOUBLE_2ADDR,
REM_DOUBLE_2ADDR,
ADD_INT_LIT16,
RSUB_INT,
MUL_INT_LIT16,
DIV_INT_LIT16,
REM_INT_LIT16,
AND_INT_LIT16,
OR_INT_LIT16,
XOR_INT_LIT16,
ADD_INT_LIT8,
RSUB_INT_LIT8,
MUL_INT_LIT8,
DIV_INT_LIT8,
REM_INT_LIT8,
AND_INT_LIT8,
OR_INT_LIT8,
XOR_INT_LIT8,
SHL_INT_LIT8,
SHR_INT_LIT8,
USHR_INT_LIT8,
INVOKE_POLYMORPHIC,
INVOKE_POLYMORPHIC_RANGE,
INVOKE_CUSTOM,
INVOKE_CUSTOM_RANGE,
CONST_METHOD_HANDLE,
CONST_METHOD_TYPE,
PACKED_SWITCH_PAYLOAD,
SPARSE_SWITCH_PAYLOAD,
FILL_ARRAY_DATA_PAYLOAD,
}Expand description
All existing Dalvik opcodes
Variants§
NOP
MOVE
MOVE_FROM16
MOVE_16
MOVE_WIDE
MOVE_WIDE_FROM16
MOVE_WIDE_16
MOVE_OBJECT
MOVE_OBJECT_FROM16
MOVE_OBJECT_16
MOVE_RESULT
MOVE_RESULT_WIDE
MOVE_RESULT_OBJECT
MOVE_EXCEPTION
RETURN_VOID
RETURN
RETURN_WIDE
RETURN_OBJECT
CONST_4
CONST_16
CONST
CONST_HIGH16
CONST_WIDE_16
CONST_WIDE_32
CONST_WIDE
CONST_WIDE_HIGH16
CONST_STRING
CONST_STRING_JUMBO
CONST_CLASS
MONITOR_ENTER
MONITOR_EXIT
CHECK_CAST
INSTANCE_OF
ARRAY_LENGTH
NEW_INSTANCE
NEW_ARRAY
FILLED_NEW_ARRAY
FILLED_NEW_ARRAY_RANGE
FILL_ARRAY_DATA
THROW
GOTO
GOTO_16
GOTO_32
PACKED_SWITCH
SPARSE_SWITCH
CMPL_FLOAT
CMPG_FLOAT
CMPL_DOUBLE
CMPG_DOUBLE
CMP_LONG
IF_EQ
IF_NE
IF_LT
IF_GE
IF_GT
IF_LE
IF_EQZ
IF_NEZ
IF_LTZ
IF_GEZ
IF_GTZ
IF_LEZ
AGET
AGET_WIDE
AGET_OBJECT
AGET_BOOLEAN
AGET_BYTE
AGET_CHAR
AGET_SHORT
APUT
APUT_WIDE
APUT_OBJECT
APUT_BOOLEAN
APUT_BYTE
APUT_CHAR
APUT_SHORT
IGET
IGET_WIDE
IGET_OBJECT
IGET_BOOLEAN
IGET_BYTE
IGET_CHAR
IGET_SHORT
IPUT
IPUT_WIDE
IPUT_OBJECT
IPUT_BOOLEAN
IPUT_BYTE
IPUT_CHAR
IPUT_SHORT
SGET
SGET_WIDE
SGET_OBJECT
SGET_BOOLEAN
SGET_BYTE
SGET_CHAR
SGET_SHORT
SPUT
SPUT_WIDE
SPUT_OBJECT
SPUT_BOOLEAN
SPUT_BYTE
SPUT_CHAR
SPUT_SHORT
INVOKE_VIRTUAL
INVOKE_SUPER
INVOKE_DIRECT
INVOKE_STATIC
INVOKE_INTERFACE
INVOKE_VIRTUAL_RANGE
INVOKE_SUPER_RANGE
INVOKE_DIRECT_RANGE
INVOKE_STATIC_RANGE
INVOKE_INTERFACE_RANGE
NEG_INT
NOT_INT
NEG_LONG
NOT_LONG
NEG_FLOAT
NEG_DOUBLE
INT_TO_LONG
INT_TO_FLOAT
INT_TO_DOUBLE
LONG_TO_INT
LONG_TO_FLOAT
LONG_TO_DOUBLE
FLOAT_TO_INT
FLOAT_TO_LONG
FLOAT_TO_DOUBLE
DOUBLE_TO_INT
DOUBLE_TO_LONG
DOUBLE_TO_FLOAT
INT_TO_BYTE
INT_TO_CHAR
INT_TO_SHORT
ADD_INT
SUB_INT
MUL_INT
DIV_INT
REM_INT
AND_INT
OR_INT
XOR_INT
SHL_INT
SHR_INT
USHR_INT
ADD_LONG
SUB_LONG
MUL_LONG
DIV_LONG
REM_LONG
AND_LONG
OR_LONG
XOR_LONG
SHL_LONG
SHR_LONG
USHR_LONG
ADD_FLOAT
SUB_FLOAT
MUL_FLOAT
DIV_FLOAT
REM_FLOAT
ADD_DOUBLE
SUB_DOUBLE
MUL_DOUBLE
DIV_DOUBLE
REM_DOUBLE
ADD_INT_2ADDR
SUB_INT_2ADDR
MUL_INT_2ADDR
DIV_INT_2ADDR
REM_INT_2ADDR
AND_INT_2ADDR
OR_INT_2ADDR
XOR_INT_2ADDR
SHL_INT_2ADDR
SHR_INT_2ADDR
USHR_INT_2ADDR
ADD_LONG_2ADDR
SUB_LONG_2ADDR
MUL_LONG_2ADDR
DIV_LONG_2ADDR
REM_LONG_2ADDR
AND_LONG_2ADDR
OR_LONG_2ADDR
XOR_LONG_2ADDR
SHL_LONG_2ADDR
SHR_LONG_2ADDR
USHR_LONG_2ADDR
ADD_FLOAT_2ADDR
SUB_FLOAT_2ADDR
MUL_FLOAT_2ADDR
DIV_FLOAT_2ADDR
REM_FLOAT_2ADDR
ADD_DOUBLE_2ADDR
SUB_DOUBLE_2ADDR
MUL_DOUBLE_2ADDR
DIV_DOUBLE_2ADDR
REM_DOUBLE_2ADDR
ADD_INT_LIT16
RSUB_INT
MUL_INT_LIT16
DIV_INT_LIT16
REM_INT_LIT16
AND_INT_LIT16
OR_INT_LIT16
XOR_INT_LIT16
ADD_INT_LIT8
RSUB_INT_LIT8
MUL_INT_LIT8
DIV_INT_LIT8
REM_INT_LIT8
AND_INT_LIT8
OR_INT_LIT8
XOR_INT_LIT8
SHL_INT_LIT8
SHR_INT_LIT8
USHR_INT_LIT8
INVOKE_POLYMORPHIC
INVOKE_POLYMORPHIC_RANGE
INVOKE_CUSTOM
INVOKE_CUSTOM_RANGE
CONST_METHOD_HANDLE
CONST_METHOD_TYPE
PACKED_SWITCH_PAYLOAD
SPARSE_SWITCH_PAYLOAD
FILL_ARRAY_DATA_PAYLOAD
Implementations§
Trait Implementations§
impl Copy for OpCode
impl StructuralPartialEq for OpCode
Auto Trait Implementations§
impl Freeze for OpCode
impl RefUnwindSafe for OpCode
impl Send for OpCode
impl Sync for OpCode
impl Unpin for OpCode
impl UnwindSafe for OpCode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more