Mercurial > repos > blastem
comparison 68kinst.c @ 412:00d5a2b532f4
Fix movem with pc displacement or pc indexed source
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 19 Jun 2013 00:40:13 -0700 |
parents | 8db584faac4b |
children | 140af5509ce7 |
comparison
equal
deleted
inserted
replaced
411:baf4688901f2 | 412:00d5a2b532f4 |
---|---|
498 decoded->dst.params.immed = *(++istream); | 498 decoded->dst.params.immed = *(++istream); |
499 istream = m68k_decode_op_ex(istream, opmode, reg, decoded->extra.size, &(decoded->src)); | 499 istream = m68k_decode_op_ex(istream, opmode, reg, decoded->extra.size, &(decoded->src)); |
500 if (!istream) { | 500 if (!istream) { |
501 decoded->op = M68K_INVALID; | 501 decoded->op = M68K_INVALID; |
502 return start+1; | 502 return start+1; |
503 } | |
504 if (decoded->src.addr_mode == MODE_PC_DISPLACE || decoded->src.addr_mode == MODE_PC_INDEX_DISP8) { | |
505 //adjust displacement to account for extra instruction word | |
506 decoded->src.params.regs.displacement += 2; | |
503 } | 507 } |
504 } else { | 508 } else { |
505 decoded->src.addr_mode = MODE_REG; | 509 decoded->src.addr_mode = MODE_REG; |
506 decoded->src.params.immed = *(++istream); | 510 decoded->src.params.immed = *(++istream); |
507 istream = m68k_decode_op_ex(istream, opmode, reg, decoded->extra.size, &(decoded->dst)); | 511 istream = m68k_decode_op_ex(istream, opmode, reg, decoded->extra.size, &(decoded->dst)); |