blob: f7c7788d0d816f0d9b5479ac0f836e946fc1e2b0 [file] [log] [blame]
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dexfuzz.rawdex;
public enum Opcode {
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,
UNUSED_3E,
UNUSED_3F,
UNUSED_40,
UNUSED_41,
UNUSED_42,
UNUSED_43,
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,
RETURN_VOID_NO_BARRIER,
INVOKE_VIRTUAL_RANGE,
INVOKE_SUPER_RANGE,
INVOKE_DIRECT_RANGE,
INVOKE_STATIC_RANGE,
INVOKE_INTERFACE_RANGE,
UNUSED_79,
UNUSED_7A,
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,
IGET_QUICK,
IGET_WIDE_QUICK,
IGET_OBJECT_QUICK,
IPUT_QUICK,
IPUT_WIDE_QUICK,
IPUT_OBJECT_QUICK,
INVOKE_VIRTUAL_QUICK,
INVOKE_VIRTUAL_QUICK_RANGE,
IPUT_BOOLEAN_QUICK,
IPUT_BYTE_QUICK,
IPUT_CHAR_QUICK,
IPUT_SHORT_QUICK,
UNUSED_EF,
UNUSED_F0,
UNUSED_F1,
UNUSED_F2,
UNUSED_F3,
UNUSED_F4,
UNUSED_F5,
UNUSED_F6,
UNUSED_F7,
UNUSED_F8,
UNUSED_F9,
UNUSED_FA,
UNUSED_FB,
UNUSED_FC,
UNUSED_FD,
UNUSED_FE,
UNUSED_FF;
public static boolean isBetween(Opcode opcode, Opcode opcode1, Opcode opcode2) {
return (opcode.ordinal() >= opcode1.ordinal() && opcode.ordinal() <= opcode2.ordinal());
}
}