diff --git a/arch/ARM/ARMInstPrinter.c b/arch/ARM/ARMInstPrinter.c index ef08a33455..ed4f4cd1fc 100644 --- a/arch/ARM/ARMInstPrinter.c +++ b/arch/ARM/ARMInstPrinter.c @@ -260,7 +260,7 @@ static void printInst(MCInst *MI, SStream *O, void *info) Writeback = false; } - SStream_concat0(O, " ldm"); + SStream_concat0(O, "ldm"); printPredicateOperand(MI, 1, O); SStream_concat0(O, " "); @@ -268,17 +268,9 @@ static void printInst(MCInst *MI, SStream *O, void *info) printOperand(MI, 0, O); if (Writeback) { SStream_concat0(O, "!"); - // TODO: Do this in a static function called by ARMMapping.c::ARM_printer(). - if (MI->flat_insn->detail) { - ARM_get_detail_op(MI, -1)->access |= - CS_AC_WRITE; - MI->flat_insn->detail->writeback = true; - } } SStream_concat0(O, ", "); printRegisterList(MI, 3, O); - // TODO: Do this in a static function called by ARMMapping.c::ARM_printer(). - MI->flat_insn->id = ARM_INS_VPOP; return; } diff --git a/arch/ARM/ARMMapping.c b/arch/ARM/ARMMapping.c index 7dc546c8ad..e0d9a8daae 100644 --- a/arch/ARM/ARMMapping.c +++ b/arch/ARM/ARMMapping.c @@ -1322,10 +1322,10 @@ static void add_cs_detail_general(MCInst *MI, arm_op_group op_group, MCInst_getOpVal(MI, OpNum)); ARM_set_detail_op_mem(MI, OpNum + 1, true, 0, 0, MCInst_getOpVal(MI, OpNum + 1)); - unsigned ShAmt = MCInst_getOpVal(MI, OpNum); + unsigned ShAmt = MCInst_getOpVal(MI, OpNum + 2); if (ShAmt) { - ARM_get_detail_op(MI, 2)->shift.type = ARM_SFT_LSL; - ARM_get_detail_op(MI, 2)->shift.value = ShAmt; + ARM_get_detail_op(MI, 0)->shift.type = ARM_SFT_LSL; + ARM_get_detail_op(MI, 0)->shift.value = ShAmt; } ARM_set_mem_access(MI, false); break; @@ -1536,12 +1536,12 @@ static void add_cs_detail_template_1(MCInst *MI, arm_op_group op_group, ARM_set_mem_access(MI, false); break; } - unsigned ImmOffs = ARM_AM_getAM3Offset( - MCOperand_getImm(MCInst_getOperand(MI, OpNum + 2))); + unsigned ImmOffs = + ARM_AM_getAM3Offset(MCInst_getOpVal(MI, OpNum + 2)); if (AlwaysPrintImm0 || ImmOffs || Sign == ARM_AM_sub) { ARM_set_detail_op_mem(MI, OpNum + 2, false, 0, 0, - MCInst_getOpVal(MI, OpNum + 2)); + ImmOffs); ARM_get_detail_op(MI, 0)->subtracted = Sign == ARM_AM_sub; }