public void Test_Runner_Add_2() { Tools tools = CreateTools(); tools.StateConfig.Set_All_Off(); tools.StateConfig.Set_All_Flags_On(); tools.StateConfig.RAX = true; tools.StateConfig.RBX = true; string programStr = " mov rax, 10 " + Environment.NewLine + "" + Environment.NewLine + " mov rbx, 20 " + Environment.NewLine + "" + Environment.NewLine + " add rax, rbx "; State state = Equal_Forward_Backward(programStr, logToDisplay, tools); ulong result = 10 + 20; uint nBits = 64; TestTools.AreEqual(Rn.RAX, result, state); TestTools.AreEqual(Rn.RBX, 20, state); TestTools.AreEqual(Flags.CF, TestTools.ToTv5(TestTools.Calc_CF_Add(nBits, 10, 20)), state); TestTools.AreEqual(Flags.OF, TestTools.ToTv5(TestTools.Calc_OF_Add(nBits, 10, 20)), state); TestTools.AreEqual(Flags.AF, TestTools.ToTv5(TestTools.Calc_AF_Add(10, 20)), state); TestTools.AreEqual(Flags.PF, TestTools.ToTv5(TestTools.Calc_PF(result)), state); TestTools.AreEqual(Flags.ZF, TestTools.ToTv5(TestTools.Calc_ZF(result)), state); TestTools.AreEqual(Flags.SF, TestTools.ToTv5(TestTools.Calc_SF(nBits, result)), state); }
public void Test_FlagTools_Create_OF_Add() { Context ctx = this.CreateContext(); { uint nBits = 8; ulong a = 10; ulong b = 20; BitVecExpr aExpr = ctx.MkBV(a, nBits); BitVecExpr bExpr = ctx.MkBV(b, nBits); BoolExpr resultExpr = ToolsFlags.Create_OF_Add(aExpr, bExpr, nBits, ctx).Simplify() as BoolExpr; Assert.IsTrue((TestTools.Calc_OF_Add(nBits, a, b) ? resultExpr.IsTrue : resultExpr.IsFalse)); } ctx.Dispose(); }