|
|
|
@ -469,8 +469,11 @@ void ARM_printInst(MCInst *MI, SStream *O, void *Info) |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case ARM_LDR_POST_IMM: |
|
|
|
|
if (MCOperand_getReg(MCInst_getOperand(MI, 2)) == ARM_SP && |
|
|
|
|
MCOperand_getImm(MCInst_getOperand(MI, 4)) == 4) { |
|
|
|
|
if (MCOperand_getReg(MCInst_getOperand(MI, 2)) == ARM_SP) { |
|
|
|
|
MCOperand *MO2 = MCInst_getOperand(MI, 4); |
|
|
|
|
if ((getAM2Op((unsigned int)MCOperand_getImm(MO2)) == ARM_AM_add && |
|
|
|
|
getAM2Offset((unsigned int)MCOperand_getImm(MO2)) == 4) || |
|
|
|
|
MCOperand_getImm(MO2) == 4) { |
|
|
|
|
SStream_concat0(O, "pop"); |
|
|
|
|
MCInst_setOpcodePub(MI, ARM_INS_POP); |
|
|
|
|
printPredicateOperand(MI, 5, O); |
|
|
|
@ -484,6 +487,7 @@ void ARM_printInst(MCInst *MI, SStream *O, void *Info) |
|
|
|
|
SStream_concat0(O, "}"); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
// A8.6.355 VPUSH
|
|
|
|
@ -650,6 +654,7 @@ static void printOperand(MCInst *MI, unsigned OpNo, SStream *O) |
|
|
|
|
case ARM_INS_ORR: |
|
|
|
|
case ARM_INS_EOR: |
|
|
|
|
case ARM_INS_BIC: |
|
|
|
|
case ARM_INS_MVN: |
|
|
|
|
// do not print number in negative form
|
|
|
|
|
if (imm >= 0 && imm <= HEX_THRESHOLD) |
|
|
|
|
SStream_concat(O, "#%u", imm); |
|
|
|
|