本文整理汇总了C#中Reko.UnitTests.Mocks.ProcedureBuilder.Load方法的典型用法代码示例。如果您正苦于以下问题:C# ProcedureBuilder.Load方法的具体用法?C# ProcedureBuilder.Load怎么用?C# ProcedureBuilder.Load使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Reko.UnitTests.Mocks.ProcedureBuilder
的用法示例。
在下文中一共展示了ProcedureBuilder.Load方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: VpCastCast
public void VpCastCast()
{
var m = new ProcedureBuilder();
m.Store(
m.Word32(0x1234000),
m.Cast(
PrimitiveType.Real32,
m.Cast(
PrimitiveType.Real64,
m.Load(PrimitiveType.Real32, m.Word32(0x123400)))));
m.Return();
mr.ReplayAll();
RunFileTest(m, "Analysis/VpCastCast.txt");
}
示例2: VpAddress32Const
public void VpAddress32Const()
{
var m = new ProcedureBuilder("VpAddress32Const");
var r1 = m.Reg32("r1", 1);
m.Assign(r1, Address.Ptr32(0x00123400));
m.Assign(r1, m.Load(r1.DataType, m.IAdd(r1, 0x56)));
m.Return();
mr.ReplayAll();
RunFileTest(m, "Analysis/VpAddress32Const.txt");
}
示例3: VpIndirectCall
public void VpIndirectCall()
{
var callee = CreateExternalProcedure("foo", RegArg(1, "r1"), StackArg(4), StackArg(8));
var pc = new ProcedureConstant(PrimitiveType.Pointer32, callee);
var m = new ProcedureBuilder();
var r1 = m.Reg32("r1", 1);
var sp = m.Frame.EnsureRegister(m.Architecture.StackRegister);
m.Assign(r1, pc);
m.Assign(sp, m.ISub(sp, 4));
m.Store(sp, 3);
m.Assign(sp, m.ISub(sp, 4));
m.Store(sp, m.LoadW(m.Word32(0x1231230)));
m.Call(r1, 4);
m.Return();
arch.Stub(a => a.CreateStackAccess(null, 0, null))
.IgnoreArguments()
.Do(new Func<Frame, int, DataType, Expression>((f, off, dt) => m.Load(dt, m.IAdd(sp, off))));
mr.ReplayAll();
var ssa = RunTest(m);
var sExp =
#region Expected
@"r1_0: orig: r1
def: r1_0 = foo
r63:r63
def: def r63
uses: r63_2 = r63 - 0x00000004
Mem3[r63 - 0x00000004:word32] = 0x00000003
r63_4 = r63 - 0x00000008
Mem5[r63 - 0x00000008:word16] = Mem3[0x01231230:word16]
r1_6 = foo(Mem8[r63 - 0x00000008:word32], Mem9[r63 - 0x00000004:word32])
r1_6 = foo(Mem8[r63 - 0x00000008:word32], Mem9[r63 - 0x00000004:word32])
r63_2: orig: r63
def: r63_2 = r63 - 0x00000004
Mem3: orig: Mem0
def: Mem3[r63 - 0x00000004:word32] = 0x00000003
uses: Mem5[r63 - 0x00000008:word16] = Mem3[0x01231230:word16]
r63_4: orig: r63
def: r63_4 = r63 - 0x00000008
Mem5: orig: Mem0
def: Mem5[r63 - 0x00000008:word16] = Mem3[0x01231230:word16]
r1_6: orig: r1
def: r1_6 = foo(Mem8[r63 - 0x00000008:word32], Mem9[r63 - 0x00000004:word32])
r63_7: orig: r63
Mem8: orig: Mem0
uses: r1_6 = foo(Mem8[r63 - 0x00000008:word32], Mem9[r63 - 0x00000004:word32])
Mem9: orig: Mem0
uses: r1_6 = foo(Mem8[r63 - 0x00000008:word32], Mem9[r63 - 0x00000004:word32])
// ProcedureBuilder
// Return size: 0
void ProcedureBuilder()
ProcedureBuilder_entry:
def r63
// succ: l1
l1:
r1_0 = foo
r63_2 = r63 - 0x00000004
Mem3[r63 - 0x00000004:word32] = 0x00000003
r63_4 = r63 - 0x00000008
Mem5[r63 - 0x00000008:word16] = Mem3[0x01231230:word16]
r1_6 = foo(Mem8[r63 - 0x00000008:word32], Mem9[r63 - 0x00000004:word32])
return
// succ: ProcedureBuilder_exit
ProcedureBuilder_exit:
";
#endregion
AssertStringsEqual(sExp, ssa);
}
示例4: TrcoIcall
public void TrcoIcall()
{
ProcedureBuilder m = new ProcedureBuilder();
Identifier pfn = m.Local32("pfn");
Expression l = m.Load(PrimitiveType.Word32, pfn);
CallInstruction icall = new CallInstruction(l, new CallSite(0, 0));
coll = CreateCollector();
icall.Accept(eqb);
icall.Accept(coll);
StringWriter sw = new StringWriter();
handler.Traits.Write(sw);
string exp =
"T_1 (in pfn : word32)" + nl +
"\ttrait_primitive(word32)" + nl +
"\ttrait_mem(T_2, 0)" + nl +
"T_2 (in Mem0[pfn:word32] : word32)" + nl +
"\ttrait_primitive((ptr code))" + nl +
"\ttrait_primitive(word32)" + nl;
Console.WriteLine(sw.ToString());
Assert.AreEqual(exp, sw.ToString());
}
示例5: TrcoMemberPointer
public void TrcoMemberPointer()
{
ProcedureBuilder m = new ProcedureBuilder();
Identifier ds = m.Local16("ds");
Identifier bx = m.Local16("bx");
Identifier ax = m.Local16("ax");
MemberPointerSelector mps = m.MembPtrW(ds, m.IAdd(bx, 4));
Expression e = m.Load(PrimitiveType.Byte, mps);
coll = CreateCollector();
e = e.Accept(en);
e.Accept(eqb);
e.Accept(coll);
Assert.IsNotNull(mps.BasePointer.TypeVariable, "Base pointer should have type variable");
Verify(null, "Typing/TrcoMemberPointer.txt");
}
示例6: TrcoGlobalArray
public void TrcoGlobalArray()
{
Program prog = CreateProgram();
ProcedureBuilder m = new ProcedureBuilder();
Identifier i = m.Local32("i");
Expression ea = m.IAdd(prog.Globals, m.IAdd(m.Shl(i, 2), 0x3000));
Expression e = m.Load(PrimitiveType.Int32, ea);
coll = CreateCollector(prog);
e = e.Accept(en);
e.Accept(eqb);
e.Accept(coll);
Verify(null, "Typing/TrcoGlobalArray.txt");
}
示例7: TrcoArrayExpression
public void TrcoArrayExpression()
{
var b = new Identifier("base", PrimitiveType.Word32, null);
var i = new Identifier("idx", PrimitiveType.Word32, null);
var s = Constant.Word32(4);
ProcedureBuilder m = new ProcedureBuilder();
// e ::= Mem[(b+0x1003000)+(i*s):word16]
Expression e = m.Load(
PrimitiveType.Word16,
m.IAdd(m.IAdd(b, Constant.Word32(0x10030000)),
m.SMul(i, s)));
coll = CreateCollector();
e = e.Accept(en);
e.Accept(eqb);
e.Accept(coll);
Verify(null, "Typing/TrcoArrayExpression.txt");
}