Mercurial > repos > blastem
comparison 68kinst.c @ 181:3b4ef459aa8d
Fix signed division with negative result, fix address reg destination with word-sized operand, fix cmpm decoding and code generation, fix unbalanced pop in bit instructions
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 09 Jan 2013 21:08:37 -0800 |
parents | e2918b5208eb |
children | 2f08d9e90a4c |
comparison
equal
deleted
inserted
replaced
180:8b846bcff6a2 | 181:3b4ef459aa8d |
---|---|
1004 istream = m68k_decode_op(istream, size, &(decoded->dst)); | 1004 istream = m68k_decode_op(istream, size, &(decoded->dst)); |
1005 if (!istream) { | 1005 if (!istream) { |
1006 decoded->op = M68K_INVALID; | 1006 decoded->op = M68K_INVALID; |
1007 return start+1; | 1007 return start+1; |
1008 } | 1008 } |
1009 if (decoded->src.addr_mode == MODE_AREG) { | 1009 decoded->extra.size = size; |
1010 if (decoded->dst.addr_mode == MODE_AREG) { | |
1010 //CMPM | 1011 //CMPM |
1011 decoded->src.addr_mode = decoded->dst.addr_mode = MODE_AREG_POSTINC; | 1012 decoded->src.addr_mode = decoded->dst.addr_mode = MODE_AREG_POSTINC; |
1012 decoded->src.params.regs.pri = decoded->dst.params.regs.pri; | 1013 decoded->src.params.regs.pri = decoded->dst.params.regs.pri; |
1013 decoded->dst.params.regs.pri = m68k_reg_quick_field(*istream); | 1014 decoded->dst.params.regs.pri = m68k_reg_quick_field(*istream); |
1014 } else { | 1015 } else { |
1015 //EOR | 1016 //EOR |
1016 decoded->op = M68K_EOR; | 1017 decoded->op = M68K_EOR; |
1017 decoded->extra.size = size; | |
1018 decoded->src.addr_mode = MODE_REG; | 1018 decoded->src.addr_mode = MODE_REG; |
1019 decoded->src.params.regs.pri = m68k_reg_quick_field(*istream); | 1019 decoded->src.params.regs.pri = m68k_reg_quick_field(*istream); |
1020 } | 1020 } |
1021 } | 1021 } |
1022 } else { | 1022 } else { |