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()); }
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()); }
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); }