diff options
author | Michael Pavone <pavone@retrodev.com> | 2018-10-31 21:58:09 -0700 |
---|---|---|
committer | Michael Pavone <pavone@retrodev.com> | 2018-10-31 21:58:09 -0700 |
commit | 8e211bb1dd9d854fb86499e43bfe101f48e9c4b0 (patch) | |
tree | 66013674340f622df736c45548a6b9bd3e620994 /68kinst.c | |
parent | a55cbc9d5bed67046e6c5b3296b93e982163dc39 (diff) |
Fix cycle count for shift/rotate instructions with a static shift ammount
Diffstat (limited to '68kinst.c')
-rw-r--r-- | 68kinst.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -1537,6 +1537,7 @@ uint16_t * m68k_decode(uint16_t * istream, m68kinst * decoded, uint32_t address) immed = 8; } decoded->src.params.immed = immed; + decoded->variant = VAR_QUICK; } decoded->dst.addr_mode = MODE_REG; decoded->dst.params.regs.pri = *istream & 0x7; @@ -2608,9 +2609,12 @@ int m68k_disasm_ex(m68kinst * decoded, char * dst, uint8_t labels, format_label_ #endif default: size = decoded->extra.size; + uint8_t is_quick = decoded->variant == VAR_QUICK && decoded->op != M68K_ASL && decoded->op != M68K_ASR + && decoded->op != M68K_LSL && decoded->op != M68K_LSR && decoded->op != M68K_ROXR && decoded->op != M68K_ROXL + && decoded->op != M68K_ROR && decoded->op != M68K_ROL; ret = sprintf(dst, "%s%s%s", mnemonics[decoded->op], - decoded->variant == VAR_QUICK ? "q" : (decoded->variant == VAR_IMMEDIATE ? "i" : ""), + is_quick ? "q" : (decoded->variant == VAR_IMMEDIATE ? "i" : ""), size == OPSIZE_BYTE ? ".b" : (size == OPSIZE_WORD ? ".w" : (size == OPSIZE_LONG ? ".l" : ""))); } if (decoded->op == M68K_MOVEM) { |