Exemple #1
0
        private void Sbc()
        {
            var mem = RewriteOperand(instrCur.Operand);
            var a   = frame.EnsureRegister(Registers.a);
            var c   = frame.EnsureFlagGroup((uint)FlagM.CF, "C", PrimitiveType.Bool);

            emitter.Assign(
                a,
                emitter.ISub(
                    emitter.ISub(a, mem),
                    emitter.Not(c)));
            emitter.Assign(
                frame.EnsureFlagGroup((uint)Instruction.DefCc(instrCur.Code), "NVZC", PrimitiveType.Byte),
                emitter.Cond(a));
        }
Exemple #2
0
        private void Sbc()
        {
            var mem = RewriteOperand(instrCur.Operands[0]);
            var a   = binder.EnsureRegister(Registers.a);
            var c   = binder.EnsureFlagGroup(Registers.p, (uint)FlagM.CF, "C", PrimitiveType.Bool);

            m.Assign(
                a,
                m.ISub(
                    m.ISub(a, mem),
                    m.Not(c)));
            m.Assign(
                binder.EnsureFlagGroup(Registers.p, (uint)Instruction.DefCc(instrCur.Mnemonic), "NVZC", PrimitiveType.Byte),
                m.Cond(a));
        }
Exemple #3
0
        private void Adc()
        {
            var mem = RewriteOperand(instrCur.Operand);
            var a   = binder.EnsureRegister(Registers.a);
            var c   = binder.EnsureFlagGroup(Registers.p, (uint)FlagM.CF, "C", PrimitiveType.Bool);

            m.Assign(
                a,
                m.IAdd(
                    m.IAdd(a, mem),
                    c));
            m.Assign(
                binder.EnsureFlagGroup(Registers.p, (uint)Instruction.DefCc(instrCur.Code), "NVZC", PrimitiveType.Byte),
                m.Cond(a));
        }