Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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();
        }