comparison 68kinst.c @ 94:a668a35a3463

Fix decoding bug for addq/subq
author Mike Pavone <pavone@retrodev.com>
date Thu, 27 Dec 2012 18:47:33 -0800
parents f63b0e58e2d5
children dd3c680c618c
comparison
equal deleted inserted replaced
93:f63b0e58e2d5 94:a668a35a3463
707 //ADDQ, SUBQ 707 //ADDQ, SUBQ
708 decoded->variant = VAR_QUICK; 708 decoded->variant = VAR_QUICK;
709 decoded->extra.size = size; 709 decoded->extra.size = size;
710 decoded->src.addr_mode = MODE_IMMEDIATE; 710 decoded->src.addr_mode = MODE_IMMEDIATE;
711 immed = m68k_reg_quick_field(*istream); 711 immed = m68k_reg_quick_field(*istream);
712 istream = m68k_decode_op(istream, size, &(decoded->dst));
713 if (!immed) { 712 if (!immed) {
714 immed = 8; 713 immed = 8;
715 } 714 }
716 decoded->src.params.immed = immed; 715 decoded->src.params.immed = immed;
717 if (*istream & 0x100) { 716 if (*istream & 0x100) {
718 decoded->op = M68K_SUB; 717 decoded->op = M68K_SUB;
719 } else { 718 } else {
720 decoded->op = M68K_ADD; 719 decoded->op = M68K_ADD;
721 } 720 }
721 istream = m68k_decode_op(istream, size, &(decoded->dst));
722 } 722 }
723 break; 723 break;
724 case BRANCH: 724 case BRANCH:
725 m68k_decode_cond(*istream, decoded); 725 m68k_decode_cond(*istream, decoded);
726 decoded->op = decoded->extra.cond == COND_FALSE ? M68K_BSR : M68K_BCC; 726 decoded->op = decoded->extra.cond == COND_FALSE ? M68K_BSR : M68K_BCC;