diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2010-05-23 10:13:33 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2010-05-23 10:13:33 (GMT) |
commit | 6a2287739080535fd9f82ab2453abe916a9bc28d (patch) | |
tree | 837ba4c43768cfce185587483e1c81001eecdb6c /src/arch/dalvik/operand.c | |
parent | 8cf0f3612c5fcb940b0a80ab6325a5c08e060430 (diff) |
Supported extra Dalvik opcodes.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@163 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/arch/dalvik/operand.c')
-rw-r--r-- | src/arch/dalvik/operand.c | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/src/arch/dalvik/operand.c b/src/arch/dalvik/operand.c index 7e8bf43..184a6e6 100644 --- a/src/arch/dalvik/operand.c +++ b/src/arch/dalvik/operand.c @@ -870,25 +870,25 @@ static bool dalvik_read_basic_operands(GArchInstruction *instr, const bin_t *dat switch (model & ~DALVIK_OP_POOL_MASK) { - case DALVIK_OPT_12X: + case DALVIK_OPT_11N: types = (DalvikOperandID []) { DOI_REGISTER_4, - DOI_REGISTER_4, + DOI_IMMEDIATE_4, DOI_INVALID }; break; - case DALVIK_OPT_11N: + case DALVIK_OPT_11X: types = (DalvikOperandID []) { - DOI_REGISTER_4, - DOI_IMMEDIATE_4, + DOI_REGISTER_8, DOI_INVALID }; break; - case DALVIK_OPT_11X: + case DALVIK_OPT_12X: types = (DalvikOperandID []) { - DOI_REGISTER_8, + DOI_REGISTER_4, + DOI_REGISTER_4, DOI_INVALID }; break; @@ -935,6 +935,24 @@ static bool dalvik_read_basic_operands(GArchInstruction *instr, const bin_t *dat }; break; + case DALVIK_OPT_22S: + types = (DalvikOperandID []) { + DOI_REGISTER_4, + DOI_REGISTER_4, + DOI_IMMEDIATE_16, + DOI_INVALID + }; + break; + + case DALVIK_OPT_23X: + types = (DalvikOperandID []) { + DOI_REGISTER_8, + DOI_REGISTER_8, + DOI_REGISTER_8, + DOI_INVALID + }; + break; + default: types = (DalvikOperandID []) { DOI_INVALID @@ -1149,6 +1167,8 @@ bool dalvik_read_operands(GArchInstruction *instr, const bin_t *data, off_t *pos case DALVIK_OPT_21S: case DALVIK_OPT_22B: case DALVIK_OPT_22C: + case DALVIK_OPT_22S: + case DALVIK_OPT_23X: result = dalvik_read_basic_operands(instr, data, pos, len, &low, endian, model); break; |