Mercurial > repos > blastem
comparison 68kinst.c @ 1253:2a6049dddab0
immediate and predecrement are illegal source address modes for movem. Fixes ticket:8 and ticket:9
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 28 Feb 2017 21:59:58 -0800 |
parents | 000953a7641b |
children | 78416556ae02 |
comparison
equal
deleted
inserted
replaced
1252:8e3adc6264d3 | 1253:2a6049dddab0 |
---|---|
690 reg = *istream & 0x7; | 690 reg = *istream & 0x7; |
691 if(*istream & 0x400) { | 691 if(*istream & 0x400) { |
692 decoded->dst.addr_mode = MODE_REG; | 692 decoded->dst.addr_mode = MODE_REG; |
693 decoded->dst.params.immed = *(++istream); | 693 decoded->dst.params.immed = *(++istream); |
694 istream = m68k_decode_op_ex(istream, opmode, reg, decoded->extra.size, &(decoded->src)); | 694 istream = m68k_decode_op_ex(istream, opmode, reg, decoded->extra.size, &(decoded->src)); |
695 if (!istream) { | 695 if (!istream || decoded->src.addr_mode == MODE_AREG_PREDEC || decoded->src.addr_mode == MODE_IMMEDIATE) { |
696 decoded->op = M68K_INVALID; | 696 decoded->op = M68K_INVALID; |
697 break; | 697 break; |
698 } | 698 } |
699 if (decoded->src.addr_mode == MODE_PC_DISPLACE || decoded->src.addr_mode == MODE_PC_INDEX_DISP8) { | 699 if (decoded->src.addr_mode == MODE_PC_DISPLACE || decoded->src.addr_mode == MODE_PC_INDEX_DISP8) { |
700 //adjust displacement to account for extra instruction word | 700 //adjust displacement to account for extra instruction word |