diff options
Diffstat (limited to 'src/arch/dalvik/decomp/iget.c')
| -rw-r--r-- | src/arch/dalvik/decomp/iget.c | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/src/arch/dalvik/decomp/iget.c b/src/arch/dalvik/decomp/iget.c index 5d1cf65..9cf603d 100644 --- a/src/arch/dalvik/decomp/iget.c +++ b/src/arch/dalvik/decomp/iget.c @@ -47,6 +47,7 @@  GDecInstruction *dalvik_decomp_instr_iget(const GArchInstruction *instr, GDecContext *ctx)  {      GDecInstruction *result;                /* Instruction à retourner     */ +    vmpa_t addr;                            /* Adresse de l'instruction    */      GArchOperand *operand;                  /* Opérande de l'instruction   */      GDecInstruction *src;                   /* Registre de l'object        */      uint32_t index;                         /* Indice dans la table        */ @@ -55,8 +56,10 @@ GDecInstruction *dalvik_decomp_instr_iget(const GArchInstruction *instr, GDecCon      GDecInstruction *dest;                  /* Registre de destination     */      GDecInstruction *access;                /* Représentation de l'accès   */ +    g_arch_instruction_get_location(instr, NULL, NULL, &addr); +      operand = g_arch_instruction_get_operand(instr, 1); -    src = g_dec_context_convert_register(ctx, operand, false); +    src = g_dec_context_convert_register(ctx, operand, false, addr);      operand = g_arch_instruction_get_operand(instr, 2);      index = g_dalvik_pool_operand_get_index(G_DALVIK_POOL_OPERAND(operand)); @@ -66,7 +69,7 @@ GDecInstruction *dalvik_decomp_instr_iget(const GArchInstruction *instr, GDecCon      g_pseudo_register_set_variable(G_PSEUDO_REGISTER(field), var);      operand = g_arch_instruction_get_operand(instr, 0); -    dest = g_dec_context_convert_register(ctx, operand, true); +    dest = g_dec_context_convert_register(ctx, operand, true, addr);      access = g_access_expression_new(G_DEC_EXPRESSION(src), G_DEC_EXPRESSION(field));      result = g_assign_expression_new(G_DEC_EXPRESSION(dest), G_DEC_EXPRESSION(access)); | 
