comparison z80_to_x86.c @ 842:ba93a3941300

Set flags for ld a, r
author Michael Pavone <pavone@retrodev.com>
date Sat, 31 Oct 2015 01:07:56 -0700
parents 58606d16d35c
children 74e161fe7d39
comparison
equal deleted inserted replaced
841:58606d16d35c 842:ba93a3941300
402 mov_rrdisp(code, opts->gen.scratch1, dst_op.base, dst_op.disp, size); 402 mov_rrdisp(code, opts->gen.scratch1, dst_op.base, dst_op.disp, size);
403 } else { 403 } else {
404 mov_rdispr(code, src_op.base, src_op.disp, dst_op.base, size); 404 mov_rdispr(code, src_op.base, src_op.disp, dst_op.base, size);
405 } 405 }
406 } 406 }
407 if (inst->ea_reg == Z80_I && inst->addr_mode == Z80_REG) { 407 if ((inst->ea_reg == Z80_I || inst->ea_reg == Z80_R) && inst->addr_mode == Z80_REG) {
408 //ld a, i sets some flags 408 //ld a, i and ld a, r sets some flags
409 cmp_ir(code, 0, dst_op.base, SZ_B); 409 cmp_ir(code, 0, dst_op.base, SZ_B);
410 setcc_rdisp(code, CC_Z, opts->gen.context_reg, zf_off(ZF_Z)); 410 setcc_rdisp(code, CC_Z, opts->gen.context_reg, zf_off(ZF_Z));
411 setcc_rdisp(code, CC_S, opts->gen.context_reg, zf_off(ZF_S)); 411 setcc_rdisp(code, CC_S, opts->gen.context_reg, zf_off(ZF_S));
412 mov_irdisp(code, 0, opts->gen.context_reg, zf_off(ZF_H), SZ_B);; 412 mov_irdisp(code, 0, opts->gen.context_reg, zf_off(ZF_H), SZ_B);;
413 mov_irdisp(code, 0, opts->gen.context_reg, zf_off(ZF_N), SZ_B);; 413 mov_irdisp(code, 0, opts->gen.context_reg, zf_off(ZF_N), SZ_B);;