in libredex/IROpcode.cpp [40:501]
IROpcode from_dex_opcode(DexOpcode op) {
switch (op) {
case DOPCODE_NOP:
return OPCODE_NOP;
case DOPCODE_MOVE:
return OPCODE_MOVE;
case DOPCODE_MOVE_WIDE:
return OPCODE_MOVE_WIDE;
case DOPCODE_MOVE_OBJECT:
return OPCODE_MOVE_OBJECT;
case DOPCODE_MOVE_RESULT:
return OPCODE_MOVE_RESULT;
case DOPCODE_MOVE_RESULT_WIDE:
return OPCODE_MOVE_RESULT_WIDE;
case DOPCODE_MOVE_RESULT_OBJECT:
return OPCODE_MOVE_RESULT_OBJECT;
case DOPCODE_MOVE_EXCEPTION:
return OPCODE_MOVE_EXCEPTION;
case DOPCODE_RETURN_VOID:
return OPCODE_RETURN_VOID;
case DOPCODE_RETURN:
return OPCODE_RETURN;
case DOPCODE_RETURN_WIDE:
return OPCODE_RETURN_WIDE;
case DOPCODE_RETURN_OBJECT:
return OPCODE_RETURN_OBJECT;
case DOPCODE_CONST_4:
return OPCODE_CONST;
case DOPCODE_MONITOR_ENTER:
return OPCODE_MONITOR_ENTER;
case DOPCODE_MONITOR_EXIT:
return OPCODE_MONITOR_EXIT;
case DOPCODE_THROW:
return OPCODE_THROW;
case DOPCODE_GOTO:
return OPCODE_GOTO;
case DOPCODE_NEG_INT:
return OPCODE_NEG_INT;
case DOPCODE_NOT_INT:
return OPCODE_NOT_INT;
case DOPCODE_NEG_LONG:
return OPCODE_NEG_LONG;
case DOPCODE_NOT_LONG:
return OPCODE_NOT_LONG;
case DOPCODE_NEG_FLOAT:
return OPCODE_NEG_FLOAT;
case DOPCODE_NEG_DOUBLE:
return OPCODE_NEG_DOUBLE;
case DOPCODE_INT_TO_LONG:
return OPCODE_INT_TO_LONG;
case DOPCODE_INT_TO_FLOAT:
return OPCODE_INT_TO_FLOAT;
case DOPCODE_INT_TO_DOUBLE:
return OPCODE_INT_TO_DOUBLE;
case DOPCODE_LONG_TO_INT:
return OPCODE_LONG_TO_INT;
case DOPCODE_LONG_TO_FLOAT:
return OPCODE_LONG_TO_FLOAT;
case DOPCODE_LONG_TO_DOUBLE:
return OPCODE_LONG_TO_DOUBLE;
case DOPCODE_FLOAT_TO_INT:
return OPCODE_FLOAT_TO_INT;
case DOPCODE_FLOAT_TO_LONG:
return OPCODE_FLOAT_TO_LONG;
case DOPCODE_FLOAT_TO_DOUBLE:
return OPCODE_FLOAT_TO_DOUBLE;
case DOPCODE_DOUBLE_TO_INT:
return OPCODE_DOUBLE_TO_INT;
case DOPCODE_DOUBLE_TO_LONG:
return OPCODE_DOUBLE_TO_LONG;
case DOPCODE_DOUBLE_TO_FLOAT:
return OPCODE_DOUBLE_TO_FLOAT;
case DOPCODE_INT_TO_BYTE:
return OPCODE_INT_TO_BYTE;
case DOPCODE_INT_TO_CHAR:
return OPCODE_INT_TO_CHAR;
case DOPCODE_INT_TO_SHORT:
return OPCODE_INT_TO_SHORT;
case DOPCODE_ADD_INT_2ADDR:
return OPCODE_ADD_INT;
case DOPCODE_SUB_INT_2ADDR:
return OPCODE_SUB_INT;
case DOPCODE_MUL_INT_2ADDR:
return OPCODE_MUL_INT;
case DOPCODE_DIV_INT_2ADDR:
return OPCODE_DIV_INT;
case DOPCODE_REM_INT_2ADDR:
return OPCODE_REM_INT;
case DOPCODE_AND_INT_2ADDR:
return OPCODE_AND_INT;
case DOPCODE_OR_INT_2ADDR:
return OPCODE_OR_INT;
case DOPCODE_XOR_INT_2ADDR:
return OPCODE_XOR_INT;
case DOPCODE_SHL_INT_2ADDR:
return OPCODE_SHL_INT;
case DOPCODE_SHR_INT_2ADDR:
return OPCODE_SHR_INT;
case DOPCODE_USHR_INT_2ADDR:
return OPCODE_USHR_INT;
case DOPCODE_ADD_LONG_2ADDR:
return OPCODE_ADD_LONG;
case DOPCODE_SUB_LONG_2ADDR:
return OPCODE_SUB_LONG;
case DOPCODE_MUL_LONG_2ADDR:
return OPCODE_MUL_LONG;
case DOPCODE_DIV_LONG_2ADDR:
return OPCODE_DIV_LONG;
case DOPCODE_REM_LONG_2ADDR:
return OPCODE_REM_LONG;
case DOPCODE_AND_LONG_2ADDR:
return OPCODE_AND_LONG;
case DOPCODE_OR_LONG_2ADDR:
return OPCODE_OR_LONG;
case DOPCODE_XOR_LONG_2ADDR:
return OPCODE_XOR_LONG;
case DOPCODE_SHL_LONG_2ADDR:
return OPCODE_SHL_LONG;
case DOPCODE_SHR_LONG_2ADDR:
return OPCODE_SHR_LONG;
case DOPCODE_USHR_LONG_2ADDR:
return OPCODE_USHR_LONG;
case DOPCODE_ADD_FLOAT_2ADDR:
return OPCODE_ADD_FLOAT;
case DOPCODE_SUB_FLOAT_2ADDR:
return OPCODE_SUB_FLOAT;
case DOPCODE_MUL_FLOAT_2ADDR:
return OPCODE_MUL_FLOAT;
case DOPCODE_DIV_FLOAT_2ADDR:
return OPCODE_DIV_FLOAT;
case DOPCODE_REM_FLOAT_2ADDR:
return OPCODE_REM_FLOAT;
case DOPCODE_ADD_DOUBLE_2ADDR:
return OPCODE_ADD_DOUBLE;
case DOPCODE_SUB_DOUBLE_2ADDR:
return OPCODE_SUB_DOUBLE;
case DOPCODE_MUL_DOUBLE_2ADDR:
return OPCODE_MUL_DOUBLE;
case DOPCODE_DIV_DOUBLE_2ADDR:
return OPCODE_DIV_DOUBLE;
case DOPCODE_REM_DOUBLE_2ADDR:
return OPCODE_REM_DOUBLE;
case DOPCODE_ARRAY_LENGTH:
return OPCODE_ARRAY_LENGTH;
case DOPCODE_MOVE_FROM16:
return OPCODE_MOVE;
case DOPCODE_MOVE_WIDE_FROM16:
return OPCODE_MOVE_WIDE;
case DOPCODE_MOVE_OBJECT_FROM16:
return OPCODE_MOVE_OBJECT;
case DOPCODE_CONST_16:
return OPCODE_CONST;
case DOPCODE_CONST_HIGH16:
return OPCODE_CONST;
case DOPCODE_CONST_WIDE_16:
return OPCODE_CONST_WIDE;
case DOPCODE_CONST_WIDE_HIGH16:
return OPCODE_CONST_WIDE;
case DOPCODE_GOTO_16:
return OPCODE_GOTO;
case DOPCODE_CMPL_FLOAT:
return OPCODE_CMPL_FLOAT;
case DOPCODE_CMPG_FLOAT:
return OPCODE_CMPG_FLOAT;
case DOPCODE_CMPL_DOUBLE:
return OPCODE_CMPL_DOUBLE;
case DOPCODE_CMPG_DOUBLE:
return OPCODE_CMPG_DOUBLE;
case DOPCODE_CMP_LONG:
return OPCODE_CMP_LONG;
case DOPCODE_IF_EQ:
return OPCODE_IF_EQ;
case DOPCODE_IF_NE:
return OPCODE_IF_NE;
case DOPCODE_IF_LT:
return OPCODE_IF_LT;
case DOPCODE_IF_GE:
return OPCODE_IF_GE;
case DOPCODE_IF_GT:
return OPCODE_IF_GT;
case DOPCODE_IF_LE:
return OPCODE_IF_LE;
case DOPCODE_IF_EQZ:
return OPCODE_IF_EQZ;
case DOPCODE_IF_NEZ:
return OPCODE_IF_NEZ;
case DOPCODE_IF_LTZ:
return OPCODE_IF_LTZ;
case DOPCODE_IF_GEZ:
return OPCODE_IF_GEZ;
case DOPCODE_IF_GTZ:
return OPCODE_IF_GTZ;
case DOPCODE_IF_LEZ:
return OPCODE_IF_LEZ;
case DOPCODE_AGET:
return OPCODE_AGET;
case DOPCODE_AGET_WIDE:
return OPCODE_AGET_WIDE;
case DOPCODE_AGET_OBJECT:
return OPCODE_AGET_OBJECT;
case DOPCODE_AGET_BOOLEAN:
return OPCODE_AGET_BOOLEAN;
case DOPCODE_AGET_BYTE:
return OPCODE_AGET_BYTE;
case DOPCODE_AGET_CHAR:
return OPCODE_AGET_CHAR;
case DOPCODE_AGET_SHORT:
return OPCODE_AGET_SHORT;
case DOPCODE_APUT:
return OPCODE_APUT;
case DOPCODE_APUT_WIDE:
return OPCODE_APUT_WIDE;
case DOPCODE_APUT_OBJECT:
return OPCODE_APUT_OBJECT;
case DOPCODE_APUT_BOOLEAN:
return OPCODE_APUT_BOOLEAN;
case DOPCODE_APUT_BYTE:
return OPCODE_APUT_BYTE;
case DOPCODE_APUT_CHAR:
return OPCODE_APUT_CHAR;
case DOPCODE_APUT_SHORT:
return OPCODE_APUT_SHORT;
case DOPCODE_ADD_INT:
return OPCODE_ADD_INT;
case DOPCODE_SUB_INT:
return OPCODE_SUB_INT;
case DOPCODE_MUL_INT:
return OPCODE_MUL_INT;
case DOPCODE_DIV_INT:
return OPCODE_DIV_INT;
case DOPCODE_REM_INT:
return OPCODE_REM_INT;
case DOPCODE_AND_INT:
return OPCODE_AND_INT;
case DOPCODE_OR_INT:
return OPCODE_OR_INT;
case DOPCODE_XOR_INT:
return OPCODE_XOR_INT;
case DOPCODE_SHL_INT:
return OPCODE_SHL_INT;
case DOPCODE_SHR_INT:
return OPCODE_SHR_INT;
case DOPCODE_USHR_INT:
return OPCODE_USHR_INT;
case DOPCODE_ADD_LONG:
return OPCODE_ADD_LONG;
case DOPCODE_SUB_LONG:
return OPCODE_SUB_LONG;
case DOPCODE_MUL_LONG:
return OPCODE_MUL_LONG;
case DOPCODE_DIV_LONG:
return OPCODE_DIV_LONG;
case DOPCODE_REM_LONG:
return OPCODE_REM_LONG;
case DOPCODE_AND_LONG:
return OPCODE_AND_LONG;
case DOPCODE_OR_LONG:
return OPCODE_OR_LONG;
case DOPCODE_XOR_LONG:
return OPCODE_XOR_LONG;
case DOPCODE_SHL_LONG:
return OPCODE_SHL_LONG;
case DOPCODE_SHR_LONG:
return OPCODE_SHR_LONG;
case DOPCODE_USHR_LONG:
return OPCODE_USHR_LONG;
case DOPCODE_ADD_FLOAT:
return OPCODE_ADD_FLOAT;
case DOPCODE_SUB_FLOAT:
return OPCODE_SUB_FLOAT;
case DOPCODE_MUL_FLOAT:
return OPCODE_MUL_FLOAT;
case DOPCODE_DIV_FLOAT:
return OPCODE_DIV_FLOAT;
case DOPCODE_REM_FLOAT:
return OPCODE_REM_FLOAT;
case DOPCODE_ADD_DOUBLE:
return OPCODE_ADD_DOUBLE;
case DOPCODE_SUB_DOUBLE:
return OPCODE_SUB_DOUBLE;
case DOPCODE_MUL_DOUBLE:
return OPCODE_MUL_DOUBLE;
case DOPCODE_DIV_DOUBLE:
return OPCODE_DIV_DOUBLE;
case DOPCODE_REM_DOUBLE:
return OPCODE_REM_DOUBLE;
case DOPCODE_ADD_INT_LIT16:
return OPCODE_ADD_INT_LIT16;
case DOPCODE_RSUB_INT:
return OPCODE_RSUB_INT;
case DOPCODE_MUL_INT_LIT16:
return OPCODE_MUL_INT_LIT16;
case DOPCODE_DIV_INT_LIT16:
return OPCODE_DIV_INT_LIT16;
case DOPCODE_REM_INT_LIT16:
return OPCODE_REM_INT_LIT16;
case DOPCODE_AND_INT_LIT16:
return OPCODE_AND_INT_LIT16;
case DOPCODE_OR_INT_LIT16:
return OPCODE_OR_INT_LIT16;
case DOPCODE_XOR_INT_LIT16:
return OPCODE_XOR_INT_LIT16;
case DOPCODE_ADD_INT_LIT8:
return OPCODE_ADD_INT_LIT8;
case DOPCODE_RSUB_INT_LIT8:
return OPCODE_RSUB_INT_LIT8;
case DOPCODE_MUL_INT_LIT8:
return OPCODE_MUL_INT_LIT8;
case DOPCODE_DIV_INT_LIT8:
return OPCODE_DIV_INT_LIT8;
case DOPCODE_REM_INT_LIT8:
return OPCODE_REM_INT_LIT8;
case DOPCODE_AND_INT_LIT8:
return OPCODE_AND_INT_LIT8;
case DOPCODE_OR_INT_LIT8:
return OPCODE_OR_INT_LIT8;
case DOPCODE_XOR_INT_LIT8:
return OPCODE_XOR_INT_LIT8;
case DOPCODE_SHL_INT_LIT8:
return OPCODE_SHL_INT_LIT8;
case DOPCODE_SHR_INT_LIT8:
return OPCODE_SHR_INT_LIT8;
case DOPCODE_USHR_INT_LIT8:
return OPCODE_USHR_INT_LIT8;
case DOPCODE_MOVE_16:
return OPCODE_MOVE;
case DOPCODE_MOVE_WIDE_16:
return OPCODE_MOVE_WIDE;
case DOPCODE_MOVE_OBJECT_16:
return OPCODE_MOVE_OBJECT;
case DOPCODE_CONST:
return OPCODE_CONST;
case DOPCODE_CONST_WIDE_32:
return OPCODE_CONST_WIDE;
case DOPCODE_FILL_ARRAY_DATA:
return OPCODE_FILL_ARRAY_DATA;
case DOPCODE_GOTO_32:
return OPCODE_GOTO;
case DOPCODE_PACKED_SWITCH:
case DOPCODE_SPARSE_SWITCH:
return OPCODE_SWITCH;
case DOPCODE_CONST_WIDE:
return OPCODE_CONST_WIDE;
case DOPCODE_IGET:
return OPCODE_IGET;
case DOPCODE_IGET_WIDE:
return OPCODE_IGET_WIDE;
case DOPCODE_IGET_OBJECT:
return OPCODE_IGET_OBJECT;
case DOPCODE_IGET_BOOLEAN:
return OPCODE_IGET_BOOLEAN;
case DOPCODE_IGET_BYTE:
return OPCODE_IGET_BYTE;
case DOPCODE_IGET_CHAR:
return OPCODE_IGET_CHAR;
case DOPCODE_IGET_SHORT:
return OPCODE_IGET_SHORT;
case DOPCODE_IPUT:
return OPCODE_IPUT;
case DOPCODE_IPUT_WIDE:
return OPCODE_IPUT_WIDE;
case DOPCODE_IPUT_OBJECT:
return OPCODE_IPUT_OBJECT;
case DOPCODE_IPUT_BOOLEAN:
return OPCODE_IPUT_BOOLEAN;
case DOPCODE_IPUT_BYTE:
return OPCODE_IPUT_BYTE;
case DOPCODE_IPUT_CHAR:
return OPCODE_IPUT_CHAR;
case DOPCODE_IPUT_SHORT:
return OPCODE_IPUT_SHORT;
case DOPCODE_SGET:
return OPCODE_SGET;
case DOPCODE_SGET_WIDE:
return OPCODE_SGET_WIDE;
case DOPCODE_SGET_OBJECT:
return OPCODE_SGET_OBJECT;
case DOPCODE_SGET_BOOLEAN:
return OPCODE_SGET_BOOLEAN;
case DOPCODE_SGET_BYTE:
return OPCODE_SGET_BYTE;
case DOPCODE_SGET_CHAR:
return OPCODE_SGET_CHAR;
case DOPCODE_SGET_SHORT:
return OPCODE_SGET_SHORT;
case DOPCODE_SPUT:
return OPCODE_SPUT;
case DOPCODE_SPUT_WIDE:
return OPCODE_SPUT_WIDE;
case DOPCODE_SPUT_OBJECT:
return OPCODE_SPUT_OBJECT;
case DOPCODE_SPUT_BOOLEAN:
return OPCODE_SPUT_BOOLEAN;
case DOPCODE_SPUT_BYTE:
return OPCODE_SPUT_BYTE;
case DOPCODE_SPUT_CHAR:
return OPCODE_SPUT_CHAR;
case DOPCODE_SPUT_SHORT:
return OPCODE_SPUT_SHORT;
case DOPCODE_INVOKE_VIRTUAL:
return OPCODE_INVOKE_VIRTUAL;
case DOPCODE_INVOKE_SUPER:
return OPCODE_INVOKE_SUPER;
case DOPCODE_INVOKE_DIRECT:
return OPCODE_INVOKE_DIRECT;
case DOPCODE_INVOKE_STATIC:
return OPCODE_INVOKE_STATIC;
case DOPCODE_INVOKE_INTERFACE:
return OPCODE_INVOKE_INTERFACE;
case DOPCODE_INVOKE_POLYMORPHIC:
return OPCODE_INVOKE_POLYMORPHIC;
case DOPCODE_INVOKE_CUSTOM:
return OPCODE_INVOKE_CUSTOM;
case DOPCODE_INVOKE_VIRTUAL_RANGE:
return OPCODE_INVOKE_VIRTUAL;
case DOPCODE_INVOKE_SUPER_RANGE:
return OPCODE_INVOKE_SUPER;
case DOPCODE_INVOKE_DIRECT_RANGE:
return OPCODE_INVOKE_DIRECT;
case DOPCODE_INVOKE_STATIC_RANGE:
return OPCODE_INVOKE_STATIC;
case DOPCODE_INVOKE_INTERFACE_RANGE:
return OPCODE_INVOKE_INTERFACE;
case DOPCODE_INVOKE_CUSTOM_RANGE:
return OPCODE_INVOKE_CUSTOM;
case DOPCODE_INVOKE_POLYMORPHIC_RANGE:
return OPCODE_INVOKE_POLYMORPHIC;
case DOPCODE_CONST_STRING:
case DOPCODE_CONST_STRING_JUMBO:
return OPCODE_CONST_STRING;
case DOPCODE_CONST_CLASS:
return OPCODE_CONST_CLASS;
case DOPCODE_CHECK_CAST:
return OPCODE_CHECK_CAST;
case DOPCODE_INSTANCE_OF:
return OPCODE_INSTANCE_OF;
case DOPCODE_NEW_INSTANCE:
return OPCODE_NEW_INSTANCE;
case DOPCODE_NEW_ARRAY:
return OPCODE_NEW_ARRAY;
case DOPCODE_FILLED_NEW_ARRAY:
return OPCODE_FILLED_NEW_ARRAY;
case DOPCODE_FILLED_NEW_ARRAY_RANGE:
return OPCODE_FILLED_NEW_ARRAY;
case FOPCODE_PACKED_SWITCH:
case FOPCODE_SPARSE_SWITCH:
case FOPCODE_FILLED_ARRAY:
not_reached_log("Cannot create IROpcode from %s", SHOW(op));
// clang-format off
SWITCH_FORMAT_QUICK_FIELD_REF {
not_reached_log("Invalid use of a quick ref opcode %02x\n", op);
}
SWITCH_FORMAT_QUICK_METHOD_REF {
not_reached_log("Invalid use of a quick method opcode %02x\n", op);
}
SWITCH_FORMAT_RETURN_VOID_NO_BARRIER {
not_reached_log("Invalid use of return-void-no-barrier opcode %02x\n", op);
}
// clang-format on
}
not_reached_log("Unknown opcode %02x\n", op);
}