summaryrefslogtreecommitdiff
path: root/src/arch/dalvik/processor.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2011-12-27 16:49:18 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2011-12-27 16:49:18 (GMT)
commitce12c2bb85d26b0f6de5ba42ff53e2ff6788f4e4 (patch)
tree216c4c4db2b92c05f29143b9c28fc9d8fb6151e2 /src/arch/dalvik/processor.c
parent8a12f3685fab7c975c307bbc7dc5e721616be6a3 (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.c42
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
};