public void Test_Runner_Xor_1() { 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, 20 " + Environment.NewLine + " mov rbx, rax " + Environment.NewLine + " xor rbx, rax "; State state = Equal_Forward_Backward(programStr, logToDisplay, tools); ulong result = 20 ^ 20; uint nBits = 64; TestTools.AreEqual(Rn.RBX, result, state); TestTools.AreEqual(Flags.CF, Tv.ZERO, state); TestTools.AreEqual(Flags.OF, Tv.ZERO, state); TestTools.AreEqual(Flags.AF, Tv.UNDEFINED, 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_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); }