diff options
author | Mike Pavone <pavone@retrodev.com> | 2012-12-20 09:17:31 -0800 |
---|---|---|
committer | Mike Pavone <pavone@retrodev.com> | 2012-12-20 09:17:31 -0800 |
commit | fff86744755e8d884737aae0c736c15b932e2356 (patch) | |
tree | c0c851a4752ad4d37d35164d999166bdb16b067a | |
parent | 597a4c2fff52c16a6b69a4c1573a038b36a1cf6a (diff) |
Make the translator bail out if it hits an instruction I haven't implemented yet
-rw-r--r-- | m68k_to_x86.c | 53 |
1 files changed, 28 insertions, 25 deletions
diff --git a/m68k_to_x86.c b/m68k_to_x86.c index 9773a4a..8b4fa4e 100644 --- a/m68k_to_x86.c +++ b/m68k_to_x86.c @@ -939,8 +939,8 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts) } switch(inst->op) { - case M68K_ABCD: - break; + //case M68K_ABCD: + // break; case M68K_ADD: dst = cycles(dst, BUS); if (src_op.mode == MODE_REG_DIRECT) { @@ -965,8 +965,8 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts) dst = mov_rrind(dst, FLAG_C, CONTEXT, SZ_B); dst = m68k_save_result(inst, dst, opts); break; - case M68K_ADDX: - break; + //case M68K_ADDX: + // break; case M68K_AND: dst = cycles(dst, BUS); if (src_op.mode == MODE_REG_DIRECT) { @@ -990,9 +990,9 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts) dst = mov_ir(dst, 0, FLAG_V, SZ_B); dst = m68k_save_result(inst, dst, opts); break; - case M68K_ANDI_CCR: - case M68K_ANDI_SR: - break; + //case M68K_ANDI_CCR: + //case M68K_ANDI_SR: + // break; case M68K_ASL: case M68K_LSL: dst = translate_shift(dst, inst, &src_op, &dst_op, opts, shl_ir, shl_irdisp8, shl_clr, shl_clrdisp8, shr_ir, shr_irdisp8); @@ -1003,10 +1003,10 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts) case M68K_LSR: dst = translate_shift(dst, inst, &src_op, &dst_op, opts, shr_ir, shr_irdisp8, shr_clr, shr_clrdisp8, shl_ir, shl_irdisp8); break; - case M68K_BCHG: + /*case M68K_BCHG: case M68K_BCLR: case M68K_BSET: - break; + break;*/ case M68K_BTST: dst = cycles(dst, inst->extra.size == OPSIZE_BYTE ? 4 : 6); if (src_op.mode == MODE_IMMED) { @@ -1045,8 +1045,8 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts) dst = pop_r(dst, SCRATCH2); } break; - case M68K_CHK: - break; + /*case M68K_CHK: + break;*/ case M68K_CMP: dst = cycles(dst, BUS); if (src_op.mode == MODE_REG_DIRECT) { @@ -1069,9 +1069,9 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts) dst = setcc_r(dst, CC_S, FLAG_N); dst = setcc_r(dst, CC_O, FLAG_V); break; - case M68K_DIVS: + /*case M68K_DIVS: case M68K_DIVU: - break; + break;*/ case M68K_EOR: dst = cycles(dst, BUS); if (src_op.mode == MODE_REG_DIRECT) { @@ -1095,8 +1095,8 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts) dst = mov_ir(dst, 0, FLAG_V, SZ_B); dst = m68k_save_result(inst, dst, opts); break; - case M68K_EORI_CCR: - case M68K_EORI_SR: + /*case M68K_EORI_CCR: + case M68K_EORI_SR:*/ case M68K_EXG: dst = cycles(dst, 6); if (dst_op.mode == MODE_REG_DIRECT) { @@ -1127,7 +1127,7 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts) dst = mov_rr(dst, CONTEXT, RDI, SZ_Q); dst = call(dst, (uint8_t *)print_regs_exit); break; - case M68K_JSR: + /*case M68K_JSR: case M68K_LEA: case M68K_LINK: case M68K_MOVE_CCR: @@ -1141,7 +1141,7 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts) case M68K_NBCD: case M68K_NEG: case M68K_NEGX: - break; + break;*/ case M68K_NOP: dst = cycles(dst, BUS); break; @@ -1170,7 +1170,7 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts) dst = mov_ir(dst, 0, FLAG_V, SZ_B); dst = m68k_save_result(inst, dst, opts); break; - case M68K_ORI_CCR: + /*case M68K_ORI_CCR: case M68K_ORI_SR: case M68K_PEA: case M68K_RESET: @@ -1183,7 +1183,7 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts) case M68K_SBCD: case M68K_SCC: case M68K_STOP: - break; + break;*/ case M68K_SUB: dst = cycles(dst, BUS); if (src_op.mode == MODE_REG_DIRECT) { @@ -1208,8 +1208,8 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts) dst = mov_rrind(dst, FLAG_C, CONTEXT, SZ_B); dst = m68k_save_result(inst, dst, opts); break; - case M68K_SUBX: - break; + //case M68K_SUBX: + // break; case M68K_SWAP: dst = cycles(dst, BUS); if (src_op.mode == MODE_REG_DIRECT) { @@ -1222,9 +1222,9 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts) dst = setcc_r(dst, CC_S, FLAG_N); dst = mov_ir(dst, 0, FLAG_V, SZ_B); break; - case M68K_TAS: + /*case M68K_TAS: case M68K_TRAP: - case M68K_TRAPV: + case M68K_TRAPV:*/ case M68K_TST: dst = cycles(dst, BUS); if (src_op.mode == MODE_REG_DIRECT) { @@ -1237,9 +1237,12 @@ uint8_t * translate_m68k(uint8_t * dst, m68kinst * inst, x86_68k_options * opts) dst = setcc_r(dst, CC_S, FLAG_N); dst = setcc_r(dst, CC_O, FLAG_V); break; - case M68K_UNLK: + /*case M68K_UNLK: case M68K_INVALID: - break; + break;*/ + default: + printf("instruction %d not yet implemented\n", inst->op); + exit(1); } return dst; } |