Mercurial > repos > blastem
comparison z80_to_x86.c @ 1057:ff46d8fc2de8
Fix handling of undocumented flag bits for ADD in 32-bit builds
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 30 Jul 2016 16:01:57 -0700 |
parents | 47c748455365 |
children | 56713dac6a69 |
comparison
equal
deleted
inserted
replaced
1056:47c748455365 | 1057:ff46d8fc2de8 |
---|---|
907 add_irdisp(code, src_op.disp, dst_op.base, dst_op.disp, z80_size(inst)); | 907 add_irdisp(code, src_op.disp, dst_op.base, dst_op.disp, z80_size(inst)); |
908 } else { | 908 } else { |
909 mov_rdispr(code, src_op.base, src_op.disp, opts->gen.scratch1, z80_size(inst)); | 909 mov_rdispr(code, src_op.base, src_op.disp, opts->gen.scratch1, z80_size(inst)); |
910 add_rrdisp(code, opts->gen.scratch1, dst_op.base, dst_op.disp, z80_size(inst)); | 910 add_rrdisp(code, opts->gen.scratch1, dst_op.base, dst_op.disp, z80_size(inst)); |
911 } | 911 } |
912 mov_rdispr(code, dst_op.base, dst_op.disp + z80_size(inst) == SZ_B ? 0 : 8, opts->gen.scratch1, SZ_B); | 912 mov_rdispr(code, dst_op.base, dst_op.disp + (z80_size(inst) == SZ_B ? 0 : 1), opts->gen.scratch1, SZ_B); |
913 mov_rrdisp(code, opts->gen.scratch1, opts->gen.context_reg, zf_off(ZF_XY), SZ_B); | 913 mov_rrdisp(code, opts->gen.scratch1, opts->gen.context_reg, zf_off(ZF_XY), SZ_B); |
914 } | 914 } |
915 setcc_rdisp(code, CC_C, opts->gen.context_reg, zf_off(ZF_C)); | 915 setcc_rdisp(code, CC_C, opts->gen.context_reg, zf_off(ZF_C)); |
916 mov_irdisp(code, 0, opts->gen.context_reg, zf_off(ZF_N), SZ_B); | 916 mov_irdisp(code, 0, opts->gen.context_reg, zf_off(ZF_N), SZ_B); |
917 if (z80_size(inst) == SZ_B) { | 917 if (z80_size(inst) == SZ_B) { |