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