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)); }
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)); }
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)); }