comparison 68kinst.c @ 1627:dc1eab3ec092

Fix cycle count for shift/rotate instructions with a static shift ammount
author Michael Pavone <pavone@retrodev.com>
date Wed, 31 Oct 2018 21:58:09 -0700
parents 63f309cfbef9
children 8554751f17b5
comparison
equal deleted inserted replaced
1626:2c3536082c0f 1627:dc1eab3ec092
1535 decoded->src.addr_mode = MODE_IMMEDIATE; 1535 decoded->src.addr_mode = MODE_IMMEDIATE;
1536 if (!immed) { 1536 if (!immed) {
1537 immed = 8; 1537 immed = 8;
1538 } 1538 }
1539 decoded->src.params.immed = immed; 1539 decoded->src.params.immed = immed;
1540 decoded->variant = VAR_QUICK;
1540 } 1541 }
1541 decoded->dst.addr_mode = MODE_REG; 1542 decoded->dst.addr_mode = MODE_REG;
1542 decoded->dst.params.regs.pri = *istream & 0x7; 1543 decoded->dst.params.regs.pri = *istream & 0x7;
1543 1544
1544 } else { 1545 } else {
2606 } 2607 }
2607 return ret; 2608 return ret;
2608 #endif 2609 #endif
2609 default: 2610 default:
2610 size = decoded->extra.size; 2611 size = decoded->extra.size;
2612 uint8_t is_quick = decoded->variant == VAR_QUICK && decoded->op != M68K_ASL && decoded->op != M68K_ASR
2613 && decoded->op != M68K_LSL && decoded->op != M68K_LSR && decoded->op != M68K_ROXR && decoded->op != M68K_ROXL
2614 && decoded->op != M68K_ROR && decoded->op != M68K_ROL;
2611 ret = sprintf(dst, "%s%s%s", 2615 ret = sprintf(dst, "%s%s%s",
2612 mnemonics[decoded->op], 2616 mnemonics[decoded->op],
2613 decoded->variant == VAR_QUICK ? "q" : (decoded->variant == VAR_IMMEDIATE ? "i" : ""), 2617 is_quick ? "q" : (decoded->variant == VAR_IMMEDIATE ? "i" : ""),
2614 size == OPSIZE_BYTE ? ".b" : (size == OPSIZE_WORD ? ".w" : (size == OPSIZE_LONG ? ".l" : ""))); 2618 size == OPSIZE_BYTE ? ".b" : (size == OPSIZE_WORD ? ".w" : (size == OPSIZE_LONG ? ".l" : "")));
2615 } 2619 }
2616 if (decoded->op == M68K_MOVEM) { 2620 if (decoded->op == M68K_MOVEM) {
2617 op1len = m68k_disasm_movem_op(&(decoded->src), &(decoded->dst), dst + ret, 0, labels, decoded->address, label_fun, data); 2621 op1len = m68k_disasm_movem_op(&(decoded->src), &(decoded->dst), dst + ret, 0, labels, decoded->address, label_fun, data);
2618 ret += op1len; 2622 ret += op1len;