コード例 #1
0
 public void Exs_Seq_Adjacent_BE_Memory_Accesses_BaseDisplacement()
 {
     Given_BigEndianArchitecture();
     Given_ExpressionSimplifier();
     var(expr, _) = m.Seq(
         m.Mem(PrimitiveType.Word32, foo),
         m.Mem(PrimitiveType.Word32, m.IAddS(foo, 4))).Accept(simplifier);
     expr.DataType = PrimitiveType.Real64;
     Assert.AreEqual("Mem0[foo_1:real64]", expr.ToString());
 }
コード例 #2
0
        public void EnTest2()
        {
            Identifier p = m.Local32("p");
            Identifier i = m.Local32("i");
            Expression e = m.Mem(PrimitiveType.Int32,
                                 m.IAdd(p, m.IAddS(m.SMul(i, 8), 4)));

            e = e.Accept(aen);
            Assert.AreEqual("(p + 4)[i * 0x00000008]", e.ToString());
        }
コード例 #3
0
        public void StrAnls_SwitchWithOffset()
        {
            var r1 = m.Reg32("r1", 1);

            m.Label("head");
            m.Switch(m.IAddS(r1, 1), "case_m1", "case_0", "case_1");

            m.Label("case_m1");
            m.Assign(r1, 3);
            m.Goto("done");

            m.Label("case_0");
            m.Assign(r1, 2);
            m.Goto("done");

            m.Label("case_1");
            m.Assign(r1, 1);
            m.Goto("done");

            m.Label("done");
            m.Return(r1);

            var sExp =
                @"    switch (r1)
    {
    case ~0x00:
        r1 = 0x03;
        break;
    case 0x00:
        r1 = 0x02;
        break;
    case 0x01:
        r1 = 0x01;
        break;
    }
    return r1;
";

            RunTest(sExp, m.Procedure);
        }