summaryrefslogtreecommitdiff
path: root/src/arch/dalvik/processor.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2010-06-20 20:47:17 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2010-06-20 20:47:17 (GMT)
commitdad83b556250a85a9b2ccf68e5fb6f4df7dca1f4 (patch)
tree81f90d9966d712d006aa639d90874627ccd6970b /src/arch/dalvik/processor.c
parent0d7908e0c8282050ebbcc8a7c18fafd13152a36e (diff)
Supported more Dalvik opcodes.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@169 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/arch/dalvik/processor.c')
-rw-r--r--src/arch/dalvik/processor.c95
1 files changed, 83 insertions, 12 deletions
diff --git a/src/arch/dalvik/processor.c b/src/arch/dalvik/processor.c
index e05d6d0..adfa2a3 100644
--- a/src/arch/dalvik/processor.c
+++ b/src/arch/dalvik/processor.c
@@ -152,28 +152,74 @@ static GArchInstruction *g_dalvik_processor_decode_instruction(const GDalvikProc
static const dalvik_read_instr decodings[DOP_COUNT] = {
[DOP_NOP] = dalvik_read_instr_nop,
+ [DOP_MOVE] = dalvik_read_instr_move,
+ [DOP_MOVE_OBJECT] = dalvik_read_instr_move_object,
+ [DOP_MOVE_RESULT] = dalvik_read_instr_move_result,
+ [DOP_MOVE_RESULT_WIDE] = dalvik_read_instr_move_result_wide,
[DOP_MOVE_RESULT_OBJECT] = dalvik_read_instr_move_result_object,
-
-
+ [DOP_MOVE_EXCEPTION] = dalvik_read_instr_move_exception,
+ [DOP_RETURN_VOID] = dalvik_read_instr_return_void,
+ [DOP_RETURN] = dalvik_read_instr_return,
+ [DOP_RETURN_WIDE] = dalvik_read_instr_return_wide,
+ [DOP_RETURN_OBJECT] = dalvik_read_instr_return_object,
[DOP_CONST_4] = dalvik_read_instr_const_4,
[DOP_CONST_16] = dalvik_read_instr_const_16,
-
-
+ [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_STRING] = dalvik_read_instr_const_string,
+ [DOP_CONST_WIDE] = dalvik_read_instr_const_wide,
+ [DOP_CONST_STRING] = dalvik_read_instr_const_string,
- [DOP_RETURN_VOID] = dalvik_read_instr_return_void,
- [DOP_RETURN] = dalvik_read_instr_return,
+ [DOP_CHECK_CAST] = dalvik_read_instr_check_cast,
+ [DOP_ARRAY_LENGTH] = dalvik_read_instr_array_length,
[DOP_NEW_INSTANCE] = dalvik_read_instr_new_instance,
-
-
+ [DOP_NEW_ARRAY] = dalvik_read_instr_new_array,
+
+ [DOP_GOTO] = dalvik_read_instr_goto,
+ [DOP_GOTO_16] = dalvik_read_instr_goto_16,
+ [DOP_GOTO_32] = dalvik_read_instr_goto_32,
+
+ [DOP_CMPL_FLOAT] = dalvik_read_instr_cmpl_float,
+ [DOP_CMPG_FLOAT] = dalvik_read_instr_cmpg_float,
+ [DOP_CMPL_DOUBLE] = dalvik_read_instr_cmpl_double,
+ [DOP_CMPG_DOUBLE] = dalvik_read_instr_cmpg_double,
+ [DOP_CMP_LONG] = dalvik_read_instr_cmp_long,
+ [DOP_IF_EQ] = dalvik_read_instr_if_eq,
+ [DOP_IF_EQZ] = dalvik_read_instr_if_eqz,
+ [DOP_IF_GE] = dalvik_read_instr_if_ge,
+ [DOP_IF_GEZ] = dalvik_read_instr_if_gez,
+ [DOP_IF_GT] = dalvik_read_instr_if_gt,
+ [DOP_IF_GTZ] = dalvik_read_instr_if_gtz,
+ [DOP_IF_LE] = dalvik_read_instr_if_le,
+ [DOP_IF_LEZ] = dalvik_read_instr_if_lez,
+ [DOP_IF_LT] = dalvik_read_instr_if_lt,
+ [DOP_IF_LTZ] = dalvik_read_instr_if_ltz,
+ [DOP_IF_NE] = dalvik_read_instr_if_ne,
+ [DOP_IF_NEZ] = dalvik_read_instr_if_nez,
+
+
+
+
+ [DOP_AGET] = dalvik_read_instr_aget,
+ [DOP_AGET_WIDE] = dalvik_read_instr_aget_wide,
+ [DOP_AGET_OBJECT] = dalvik_read_instr_aget_object,
+ [DOP_AGET_BOOLEAN] = dalvik_read_instr_aget_boolean,
+ [DOP_AGET_BYTE] = dalvik_read_instr_aget_byte,
+ [DOP_AGET_CHAR] = dalvik_read_instr_aget_char,
+ [DOP_AGET_SHORT] = dalvik_read_instr_aget_short,
+ [DOP_APUT] = dalvik_read_instr_aput,
+ [DOP_APUT_WIDE] = dalvik_read_instr_aput_wide,
+ [DOP_APUT_OBJECT] = dalvik_read_instr_aput_object,
+ [DOP_APUT_BOOLEAN] = dalvik_read_instr_aput_boolean,
+ [DOP_APUT_BYTE] = dalvik_read_instr_aput_byte,
+ [DOP_APUT_CHAR] = dalvik_read_instr_aput_char,
+ [DOP_APUT_SHORT] = dalvik_read_instr_aput_short,
[DOP_IGET] = dalvik_read_instr_iget,
[DOP_IGET_WIDE] = dalvik_read_instr_iget_wide,
[DOP_IGET_OBJECT] = dalvik_read_instr_iget_object,
@@ -191,8 +237,17 @@ static GArchInstruction *g_dalvik_processor_decode_instruction(const GDalvikProc
[DOP_SGET] = dalvik_read_instr_sget,
[DOP_SGET_WIDE] = dalvik_read_instr_sget_wide,
[DOP_SGET_OBJECT] = dalvik_read_instr_sget_object,
-
-
+ [DOP_SGET_BOOLEAN] = dalvik_read_instr_sget_boolean,
+ [DOP_SGET_BYTE] = dalvik_read_instr_sget_byte,
+ [DOP_SGET_CHAR] = dalvik_read_instr_sget_char,
+ [DOP_SGET_SHORT] = dalvik_read_instr_sget_short,
+ [DOP_SPUT] = dalvik_read_instr_sput,
+ [DOP_SPUT_WIDE] = dalvik_read_instr_sput_wide,
+ [DOP_SPUT_OBJECT] = dalvik_read_instr_sput_object,
+ [DOP_SPUT_BOOLEAN] = dalvik_read_instr_sput_boolean,
+ [DOP_SPUT_BYTE] = dalvik_read_instr_sput_byte,
+ [DOP_SPUT_CHAR] = dalvik_read_instr_sput_char,
+ [DOP_SPUT_SHORT] = dalvik_read_instr_sput_short,
[DOP_INVOKE_VIRTUAL] = dalvik_read_instr_invoke_virtual,
[DOP_INVOKE_SUPER] = dalvik_read_instr_invoke_super,
[DOP_INVOKE_DIRECT] = dalvik_read_instr_invoke_direct,
@@ -200,6 +255,21 @@ static GArchInstruction *g_dalvik_processor_decode_instruction(const GDalvikProc
[DOP_INVOKE_INTERFACE] = dalvik_read_instr_invoke_interface,
+ [DOP_TO_INT_LONG] = dalvik_read_instr_to_int_long,
+ [DOP_TO_INT_FLOAT] = dalvik_read_instr_to_int_float,
+ [DOP_TO_INT_DOUBLE] = dalvik_read_instr_to_int_double,
+ [DOP_TO_LONG_INT] = dalvik_read_instr_to_long_int,
+ [DOP_TO_LONG_FLOAT] = dalvik_read_instr_to_long_float,
+ [DOP_TO_LONG_DOUBLE] = dalvik_read_instr_to_long_double,
+ [DOP_TO_FLOAT_INT] = dalvik_read_instr_to_float_int,
+ [DOP_TO_FLOAT_LONG] = dalvik_read_instr_to_float_long,
+ [DOP_TO_FLOAT_DOUBLE] = dalvik_read_instr_to_float_double,
+ [DOP_TO_DOUBLE_INT] = dalvik_read_instr_to_double_int,
+ [DOP_TO_DOUBLE_LONG] = dalvik_read_instr_to_double_long,
+ [DOP_TO_DOUBLE_FLOAT] = dalvik_read_instr_to_double_float,
+ [DOP_TO_INT_BYTE] = dalvik_read_instr_to_int_byte,
+ [DOP_TO_INT_CHAR] = dalvik_read_instr_to_int_char,
+ [DOP_TO_INT_SHORT] = dalvik_read_instr_to_int_short,
[DOP_ADD_INT] = dalvik_read_instr_add_int,
[DOP_MUL_INT] = dalvik_read_instr_mul_int,
@@ -219,6 +289,7 @@ 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_MUL_DOUBLE_2ADDR] = dalvik_read_instr_mul_double_2addr,
[DOP_ADD_INT_LIT16] = dalvik_read_instr_add_int_lit16,
[DOP_RSUB_INT] = dalvik_read_instr_rsub_int,