diff --git a/SStream.c b/SStream.c index 4cc60d71..4a916c33 100644 --- a/SStream.c +++ b/SStream.c @@ -77,6 +77,15 @@ void printInt64(SStream *O, int64_t val) } } +// print number in decimal mode +void printInt32BangDec(SStream *O, int32_t val) +{ + if (val >= 0) + SStream_concat(O, "#%u", val); + else + SStream_concat(O, "#-%u", -val); +} + void printInt32Bang(SStream *O, int32_t val) { if (val >= 0) { diff --git a/SStream.h b/SStream.h index 732f89ba..87e5719b 100644 --- a/SStream.h +++ b/SStream.h @@ -27,4 +27,7 @@ void printUInt32Bang(SStream *O, uint32_t val); void printUInt32(SStream *O, uint32_t val); +// print number in decimal mode +void printInt32BangDec(SStream *O, int32_t val); + #endif diff --git a/arch/AArch64/AArch64InstPrinter.c b/arch/AArch64/AArch64InstPrinter.c index 4af3aba3..9f60c973 100644 --- a/arch/AArch64/AArch64InstPrinter.c +++ b/arch/AArch64/AArch64InstPrinter.c @@ -1190,7 +1190,7 @@ static void printShifter(MCInst *MI, unsigned OpNum, SStream *O) return; SStream_concat(O, ", %s ", AArch64_AM_getShiftExtendName(AArch64_AM_getShiftType(Val))); - printInt32Bang(O, AArch64_AM_getShiftValue(Val)); + printInt32BangDec(O, AArch64_AM_getShiftValue(Val)); if (MI->csh->detail) { arm64_shifter shifter = ARM64_SFT_INVALID; switch(AArch64_AM_getShiftType(Val)) {