예제 #1
0
        public void Test2()
        {
            BinaryExpression b   = m.IAdd(id, m.UMul(id, 5));
            Assignment       ass = new Assignment(x, b);
            var rule             = new Add_mul_id_c_id_Rule(new SsaEvaluationContext(null, ssaIds, null));

            Assert.IsTrue(rule.Match(b));
            ass.Src = rule.Transform();
            Assert.AreEqual("x = id *u 0x00000006", ass.ToString());
        }
예제 #2
0
        public void Test1()
        {
            BinaryExpression b   = m.IAdd(m.SMul(id, 4), id);
            Assignment       ass = new Assignment(x, b);
            Statement        stm = new Statement(0, ass, null);

            ssaIds[id].Uses.Add(stm);
            ssaIds[id].Uses.Add(stm);

            ctx.Statement = stm;
            Add_mul_id_c_id_Rule rule = new Add_mul_id_c_id_Rule(ctx);

            Assert.IsTrue(rule.Match(b));
            Assert.AreEqual(2, ssaIds[id].Uses.Count);
            ass.Src = rule.Transform();
            Assert.AreEqual("x = id *s 0x00000005", ass.ToString());
            Assert.AreEqual(1, ssaIds[id].Uses.Count);
        }