diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2011-12-27 16:49:18 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2011-12-27 16:49:18 (GMT) |
commit | ce12c2bb85d26b0f6de5ba42ff53e2ff6788f4e4 (patch) | |
tree | 216c4c4db2b92c05f29143b9c28fc9d8fb6151e2 /src/arch/dalvik/processor.c | |
parent | 8a12f3685fab7c975c307bbc7dc5e721616be6a3 (diff) |
Added support for more Dalvik opcodes.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@220 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/arch/dalvik/processor.c')
-rw-r--r-- | src/arch/dalvik/processor.c | 42 |
1 files changed, 36 insertions, 6 deletions
diff --git a/src/arch/dalvik/processor.c b/src/arch/dalvik/processor.c index fb3d875..8ee586c 100644 --- a/src/arch/dalvik/processor.c +++ b/src/arch/dalvik/processor.c @@ -238,7 +238,11 @@ static GArchInstruction *g_dalvik_processor_decode_instruction(const GDalvikProc [DOP_MOVE] = dalvik_read_instr_move, [DOP_MOVE_FROM_16] = dalvik_read_instr_move_from_16, + + [DOP_MOVE_WIDE_FROM_16] = dalvik_read_instr_move_wide_from_16, + [DOP_MOVE_OBJECT] = dalvik_read_instr_move_object, + [DOP_MOVE_OBJECT_FROM_16] = dalvik_read_instr_move_object_from_16, [DOP_MOVE_RESULT] = dalvik_read_instr_move_result, [DOP_MOVE_RESULT_WIDE] = dalvik_read_instr_move_result_wide, @@ -253,11 +257,12 @@ static GArchInstruction *g_dalvik_processor_decode_instruction(const GDalvikProc [DOP_CONST] = dalvik_read_instr_const, [DOP_CONST_HIGH16] = dalvik_read_instr_const_high16, [DOP_CONST_WIDE_16] = dalvik_read_instr_const_wide_16, - + [DOP_CONST_WIDE_32] = dalvik_read_instr_const_wide_32, [DOP_CONST_WIDE] = dalvik_read_instr_const_wide, - - + [DOP_CONST_WIDE_HIGH16] = dalvik_read_instr_const_wide_high16, [DOP_CONST_STRING] = dalvik_read_instr_const_string, + [DOP_CONST_STRING_JUMBO] = dalvik_read_instr_const_string_jumbo, + [DOP_CONST_CLASS] = dalvik_read_instr_const_class, [DOP_CHECK_CAST] = dalvik_read_instr_check_cast, @@ -270,7 +275,8 @@ static GArchInstruction *g_dalvik_processor_decode_instruction(const GDalvikProc [DOP_GOTO] = dalvik_read_instr_goto, [DOP_GOTO_16] = dalvik_read_instr_goto_16, [DOP_GOTO_32] = dalvik_read_instr_goto_32, - + [DOP_PACKED_SWITCH] = dalvik_read_instr_packed_switch, + [DOP_SPARSE_SWITCH] = dalvik_read_instr_sparse_switch, [DOP_CMPL_FLOAT] = dalvik_read_instr_cmpl_float, [DOP_CMPG_FLOAT] = dalvik_read_instr_cmpg_float, [DOP_CMPL_DOUBLE] = dalvik_read_instr_cmpl_double, @@ -339,6 +345,11 @@ static GArchInstruction *g_dalvik_processor_decode_instruction(const GDalvikProc [DOP_INVOKE_DIRECT] = dalvik_read_instr_invoke_direct, [DOP_INVOKE_STATIC] = dalvik_read_instr_invoke_static, [DOP_INVOKE_INTERFACE] = dalvik_read_instr_invoke_interface, + [DOP_INVOKE_VIRTUAL_RANGE] = dalvik_read_instr_invoke_virtual_range, + [DOP_INVOKE_SUPER_RANGE] = dalvik_read_instr_invoke_super_range, + [DOP_INVOKE_DIRECT_RANGE] = dalvik_read_instr_invoke_direct_range, + [DOP_INVOKE_STATIC_RANGE] = dalvik_read_instr_invoke_static_range, + [DOP_INVOKE_INTERFACE_RANGE]= dalvik_read_instr_invoke_interface_range, [DOP_TO_INT_LONG] = dalvik_read_instr_to_int_long, @@ -365,6 +376,17 @@ static GArchInstruction *g_dalvik_processor_decode_instruction(const GDalvikProc [DOP_OR_INT] = dalvik_read_instr_or_int, [DOP_XOR_INT] = dalvik_read_instr_xor_int, [DOP_SHL_INT] = dalvik_read_instr_shl_int, + [DOP_SHR_INT] = dalvik_read_instr_shr_int, + [DOP_USHR_INT] = dalvik_read_instr_ushr_int, + + + [DOP_MUL_LONG] = dalvik_read_instr_mul_long, + [DOP_DIV_LONG] = dalvik_read_instr_div_long, + + + [DOP_SHL_LONG] = dalvik_read_instr_shl_long, + [DOP_SHR_LONG] = dalvik_read_instr_shr_long, + [DOP_USHR_LONG] = dalvik_read_instr_ushr_long, [DOP_ADD_INT_2ADDR] = dalvik_read_instr_add_int_2addr, @@ -376,6 +398,13 @@ static GArchInstruction *g_dalvik_processor_decode_instruction(const GDalvikProc [DOP_OR_INT_2ADDR] = dalvik_read_instr_or_int_2addr, [DOP_XOR_INT_2ADDR] = dalvik_read_instr_xor_int_2addr, [DOP_SHL_INT_2ADDR] = dalvik_read_instr_shl_int_2addr, + [DOP_SHR_INT_2ADDR] = dalvik_read_instr_shr_int_2addr, + [DOP_USHR_INT_2ADDR] = dalvik_read_instr_ushr_int_2addr, + [DOP_ADD_LONG_2ADDR] = dalvik_read_instr_add_long_2addr, + + [DOP_SHL_LONG_2ADDR] = dalvik_read_instr_shl_long_2addr, + [DOP_SHR_LONG_2ADDR] = dalvik_read_instr_shr_long_2addr, + [DOP_USHR_LONG_2ADDR] = dalvik_read_instr_ushr_long_2addr, [DOP_MUL_DOUBLE_2ADDR] = dalvik_read_instr_mul_double_2addr, @@ -395,8 +424,9 @@ static GArchInstruction *g_dalvik_processor_decode_instruction(const GDalvikProc [DOP_AND_INT_LIT8] = dalvik_read_instr_and_int_lit8, [DOP_OR_INT_LIT8] = dalvik_read_instr_or_int_lit8, [DOP_XOR_INT_LIT8] = dalvik_read_instr_xor_int_lit8, - [DOP_SHL_INT_LIT8] = dalvik_read_instr_shl_int_lit8 - + [DOP_SHL_INT_LIT8] = dalvik_read_instr_shl_int_lit8, + [DOP_SHR_INT_LIT8] = dalvik_read_instr_shr_int_lit8, + [DOP_USHR_INT_LIT8] = dalvik_read_instr_ushr_int_lit8 }; |