comparison z80_to_x86.c @ 301:6e15509a1257

Compare src_op.mode with the correct constant in shift/rotate instructions
author Mike Pavone <pavone@retrodev.com>
date Wed, 08 May 2013 23:03:18 -0700
parents 9adc1dce39bf
children 3b831fe32c15
comparison
equal deleted inserted replaced
300:9adc1dce39bf 301:6e15509a1257
887 } else { 887 } else {
888 src_op.mode = Z80_UNUSED; 888 src_op.mode = Z80_UNUSED;
889 dst = translate_z80_reg(inst, &dst_op, dst, opts); 889 dst = translate_z80_reg(inst, &dst_op, dst, opts);
890 } 890 }
891 dst = rol_ir(dst, 1, dst_op.base, SZ_B); 891 dst = rol_ir(dst, 1, dst_op.base, SZ_B);
892 if (src_op.mode != Z80_UNUSED) { 892 if (src_op.mode != MODE_UNUSED) {
893 dst = mov_rr(dst, dst_op.base, src_op.base, SZ_B); 893 dst = mov_rr(dst, dst_op.base, src_op.base, SZ_B);
894 } 894 }
895 dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_C)); 895 dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_C));
896 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B); 896 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B);
897 //TODO: Implement half-carry flag 897 //TODO: Implement half-carry flag
919 src_op.mode = Z80_UNUSED; 919 src_op.mode = Z80_UNUSED;
920 dst = translate_z80_reg(inst, &dst_op, dst, opts); 920 dst = translate_z80_reg(inst, &dst_op, dst, opts);
921 } 921 }
922 dst = bt_irdisp8(dst, 0, CONTEXT, zf_off(ZF_C), SZ_B); 922 dst = bt_irdisp8(dst, 0, CONTEXT, zf_off(ZF_C), SZ_B);
923 dst = rcl_ir(dst, 1, dst_op.base, SZ_B); 923 dst = rcl_ir(dst, 1, dst_op.base, SZ_B);
924 if (src_op.mode != Z80_UNUSED) { 924 if (src_op.mode != MODE_UNUSED) {
925 dst = mov_rr(dst, dst_op.base, src_op.base, SZ_B); 925 dst = mov_rr(dst, dst_op.base, src_op.base, SZ_B);
926 } 926 }
927 dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_C)); 927 dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_C));
928 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B); 928 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B);
929 //TODO: Implement half-carry flag 929 //TODO: Implement half-carry flag
950 } else { 950 } else {
951 src_op.mode = Z80_UNUSED; 951 src_op.mode = Z80_UNUSED;
952 dst = translate_z80_reg(inst, &dst_op, dst, opts); 952 dst = translate_z80_reg(inst, &dst_op, dst, opts);
953 } 953 }
954 dst = ror_ir(dst, 1, dst_op.base, SZ_B); 954 dst = ror_ir(dst, 1, dst_op.base, SZ_B);
955 if (src_op.mode != Z80_UNUSED) { 955 if (src_op.mode != MODE_UNUSED) {
956 dst = mov_rr(dst, dst_op.base, src_op.base, SZ_B); 956 dst = mov_rr(dst, dst_op.base, src_op.base, SZ_B);
957 } 957 }
958 dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_C)); 958 dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_C));
959 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B); 959 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B);
960 //TODO: Implement half-carry flag 960 //TODO: Implement half-carry flag
982 src_op.mode = Z80_UNUSED; 982 src_op.mode = Z80_UNUSED;
983 dst = translate_z80_reg(inst, &dst_op, dst, opts); 983 dst = translate_z80_reg(inst, &dst_op, dst, opts);
984 } 984 }
985 dst = bt_irdisp8(dst, 0, CONTEXT, zf_off(ZF_C), SZ_B); 985 dst = bt_irdisp8(dst, 0, CONTEXT, zf_off(ZF_C), SZ_B);
986 dst = rcr_ir(dst, 1, dst_op.base, SZ_B); 986 dst = rcr_ir(dst, 1, dst_op.base, SZ_B);
987 if (src_op.mode != Z80_UNUSED) { 987 if (src_op.mode != MODE_UNUSED) {
988 dst = mov_rr(dst, dst_op.base, src_op.base, SZ_B); 988 dst = mov_rr(dst, dst_op.base, src_op.base, SZ_B);
989 } 989 }
990 dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_C)); 990 dst = setcc_rdisp8(dst, CC_C, CONTEXT, zf_off(ZF_C));
991 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B); 991 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B);
992 //TODO: Implement half-carry flag 992 //TODO: Implement half-carry flag
1014 } else { 1014 } else {
1015 src_op.mode = Z80_UNUSED; 1015 src_op.mode = Z80_UNUSED;
1016 dst = translate_z80_reg(inst, &dst_op, dst, opts); 1016 dst = translate_z80_reg(inst, &dst_op, dst, opts);
1017 } 1017 }
1018 dst = shl_ir(dst, 1, dst_op.base, SZ_B); 1018 dst = shl_ir(dst, 1, dst_op.base, SZ_B);
1019 if (src_op.mode != Z80_UNUSED) { 1019 if (src_op.mode != MODE_UNUSED) {
1020 dst = mov_rr(dst, dst_op.base, src_op.base, SZ_B); 1020 dst = mov_rr(dst, dst_op.base, src_op.base, SZ_B);
1021 } 1021 }
1022 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B); 1022 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B);
1023 //TODO: Implement half-carry flag 1023 //TODO: Implement half-carry flag
1024 dst = cmp_ir(dst, 0, dst_op.base, SZ_B); 1024 dst = cmp_ir(dst, 0, dst_op.base, SZ_B);
1044 } else { 1044 } else {
1045 src_op.mode = Z80_UNUSED; 1045 src_op.mode = Z80_UNUSED;
1046 dst = translate_z80_reg(inst, &dst_op, dst, opts); 1046 dst = translate_z80_reg(inst, &dst_op, dst, opts);
1047 } 1047 }
1048 dst = sar_ir(dst, 1, dst_op.base, SZ_B); 1048 dst = sar_ir(dst, 1, dst_op.base, SZ_B);
1049 if (src_op.mode != Z80_UNUSED) { 1049 if (src_op.mode != MODE_UNUSED) {
1050 dst = mov_rr(dst, dst_op.base, src_op.base, SZ_B); 1050 dst = mov_rr(dst, dst_op.base, src_op.base, SZ_B);
1051 } 1051 }
1052 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B); 1052 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B);
1053 //TODO: Implement half-carry flag 1053 //TODO: Implement half-carry flag
1054 dst = cmp_ir(dst, 0, dst_op.base, SZ_B); 1054 dst = cmp_ir(dst, 0, dst_op.base, SZ_B);
1074 } else { 1074 } else {
1075 src_op.mode = Z80_UNUSED; 1075 src_op.mode = Z80_UNUSED;
1076 dst = translate_z80_reg(inst, &dst_op, dst, opts); 1076 dst = translate_z80_reg(inst, &dst_op, dst, opts);
1077 } 1077 }
1078 dst = shr_ir(dst, 1, dst_op.base, SZ_B); 1078 dst = shr_ir(dst, 1, dst_op.base, SZ_B);
1079 if (src_op.mode != Z80_UNUSED) { 1079 if (src_op.mode != MODE_UNUSED) {
1080 dst = mov_rr(dst, dst_op.base, src_op.base, SZ_B); 1080 dst = mov_rr(dst, dst_op.base, src_op.base, SZ_B);
1081 } 1081 }
1082 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B); 1082 dst = mov_irdisp8(dst, 0, CONTEXT, zf_off(ZF_N), SZ_B);
1083 //TODO: Implement half-carry flag 1083 //TODO: Implement half-carry flag
1084 dst = cmp_ir(dst, 0, dst_op.base, SZ_B); 1084 dst = cmp_ir(dst, 0, dst_op.base, SZ_B);