summaryrefslogtreecommitdiff
path: root/src/arch/dalvik/operand.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2010-05-23 10:13:33 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2010-05-23 10:13:33 (GMT)
commit6a2287739080535fd9f82ab2453abe916a9bc28d (patch)
tree837ba4c43768cfce185587483e1c81001eecdb6c /src/arch/dalvik/operand.c
parent8cf0f3612c5fcb940b0a80ab6325a5c08e060430 (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.c34
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;