diff options
Diffstat (limited to 'm68k_core.c')
-rw-r--r-- | m68k_core.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/m68k_core.c b/m68k_core.c index 7a54966..6218e75 100644 --- a/m68k_core.c +++ b/m68k_core.c @@ -94,7 +94,9 @@ void m68k_write_size(m68k_options *opts, uint8_t size, uint8_t lowfirst) void m68k_save_result(m68kinst * inst, m68k_options * opts) { if (inst->dst.addr_mode != MODE_REG && inst->dst.addr_mode != MODE_AREG && inst->dst.addr_mode != MODE_UNUSED) { - if (inst->dst.addr_mode == MODE_AREG_PREDEC && inst->src.addr_mode == MODE_AREG_PREDEC && inst->op != M68K_MOVE) { + if (inst->dst.addr_mode == MODE_AREG_PREDEC && + ((inst->src.addr_mode == MODE_AREG_PREDEC && inst->op != M68K_MOVE) || (inst->op == M68K_NBCD)) + ) { areg_to_native(opts, inst->dst.params.regs.pri, opts->gen.scratch2); } m68k_write_size(opts, inst->extra.size, 1); |