本文整理汇总了C#中Reko.UnitTests.Mocks.ProcedureBuilder.Local16方法的典型用法代码示例。如果您正苦于以下问题:C# ProcedureBuilder.Local16方法的具体用法?C# ProcedureBuilder.Local16怎么用?C# ProcedureBuilder.Local16使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Reko.UnitTests.Mocks.ProcedureBuilder
的用法示例。
在下文中一共展示了ProcedureBuilder.Local16方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DpaConstantMemberPointer
public void DpaConstantMemberPointer()
{
ProgramBuilder prog = new ProgramBuilder();
ProcedureBuilder m = new ProcedureBuilder();
Identifier ds = m.Local16("ds");
ds.DataType = PrimitiveType.SegmentSelector;
Identifier bx = m.Local16("bx");
m.Assign(bx, 0x1234);
m.Store(m.SegMemW(ds, bx), m.Int16(0x0042));
prog.Add(m);
RunTest(prog.BuildProgram(), "Typing/DpaConstantMemberPointer.txt");
}
示例2: DtbArrayAccess2
public void DtbArrayAccess2()
{
ProcedureBuilder m = new ProcedureBuilder();
Identifier ds = m.Local(PrimitiveType.SegmentSelector, "ds");
Identifier bx = m.Local16("bx");
Expression e = m.Array(PrimitiveType.Word32, m.Seq(ds, m.Word16(0x300)), m.IMul(bx, 8));
e.Accept(eqb);
TraitCollector coll = new TraitCollector(factory, store, dtb, program);
e.Accept(coll);
Verify("Typing/DtbArrayAccess2.txt");
}
示例3: TrcoArrayAccess
public void TrcoArrayAccess()
{
ProcedureBuilder m = new ProcedureBuilder();
Identifier ds = m.Local(PrimitiveType.SegmentSelector, "ds");
Identifier bx = m.Local16("bx");
Expression e = m.Array(PrimitiveType.Word32, m.Seq(ds, m.Word16(0x300)), m.IMul(bx, 8));
coll = CreateCollector();
e.Accept(eqb);
e.Accept(coll);
StringWriter sb = new StringWriter();
handler.Traits.Write(sb);
string sExp =
"T_1 (in ds : selector)" + nl +
"\ttrait_primitive(selector)" + nl +
"\ttrait_mem_array(300, 8, 0, T_7)" + nl +
"T_2 (in 0x0300 : word16)" + nl +
" trait_primitive(word16)" + nl +
"T_3 (in SEQ(ds, 0x0300) : ptr32)" + nl +
" trait_primitive(ptr32)" + nl +
"T_4 (in bx : word16)" + nl +
" trait_primitive(word16)" + nl +
" trait_primitive(ui16)" + nl +
"T_5 (in 0x0008 : word16)" + nl +
" trait_primitive(word16)" + nl +
" trait_primitive(ui16)" + nl +
"T_6 (in bx * 0x0008 : word16)" + nl +
" trait_primitive(ui16)" + nl +
"T_7 (in SEQ(ds, 0x0300)[bx * 0x0008] : word32)" + nl +
" trait_primitive(word32)" + nl;
Assert.AreEqual(sExp, sb.ToString());
}
示例4: TrcoUnsignedCompare
public void TrcoUnsignedCompare()
{
ProcedureBuilder m = new ProcedureBuilder();
Identifier ds = m.Local16("ds");
Expression e = m.Uge(ds, m.Word16(0x0800));
coll = CreateCollector();
e.Accept(eqb);
e.Accept(coll);
StringWriter sb = new StringWriter();
handler.Traits.Write(sb);
string exp =
"T_1 (in ds : word16)" + nl +
"\ttrait_primitive(word16)" + nl +
"\ttrait_equal(T_2)" + nl +
"\ttrait_primitive(cups16)" + nl +
"T_2 (in 0x0800 : word16)" + nl +
"\ttrait_primitive(word16)" + nl +
"\ttrait_primitive(cups16)" + nl +
"T_3 (in ds >=u 0x0800 : bool)" + nl +
"\ttrait_primitive(bool)" + nl;
Assert.AreEqual(exp, sb.ToString());
}
示例5: TrcoSegMem
public void TrcoSegMem()
{
ProcedureBuilder m = new ProcedureBuilder();
Identifier ds = m.Local16("ds");
Expression e = m.SegMemW(ds, m.Word16(0xC002U));
coll = CreateCollector();
e.Accept(eqb);
e.Accept(coll);
Verify(null, "Typing/TrcoSegMem.txt");
}
示例6: TrcoSegmentedDirectAddress
public void TrcoSegmentedDirectAddress()
{
Program prog = CreateProgram();
prog.TypeStore.EnsureExpressionTypeVariable(prog.TypeFactory, prog.Globals);
ProcedureBuilder m = new ProcedureBuilder();
Identifier ds = m.Local16("ds");
Expression e = m.SegMem(PrimitiveType.Byte, ds, m.Int16(0x0200));
coll = CreateCollector(prog);
e = e.Accept(en);
e.Accept(eqb);
e.Accept(coll);
Verify(null, "Typing/TrcoSegmentedDirectAddress.txt");
}
示例7: TrcoSegmentedAccess
public void TrcoSegmentedAccess()
{
ProcedureBuilder m = new ProcedureBuilder();
Identifier ds = m.Local16("ds");
Identifier bx = m.Local16("bx");
Identifier ax = m.Local16("ax");
Expression e = m.SegMem(PrimitiveType.Word16, ds, m.IAdd(bx, 4));
coll = CreateCollector();
e = e.Accept(en);
e.Accept(eqb);
e.Accept(coll);
Verify(null, "Typing/TrcoSegmentedAccess.txt");
}
示例8: 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");
}
示例9: DtbSequenceWithSegment
public void DtbSequenceWithSegment()
{
ProcedureBuilder m = new ProcedureBuilder();
Identifier ds = m.Local16("ds");
ds.DataType = PrimitiveType.SegmentSelector;
m.SegStore(ds, m.Word16(0x0100), m.Seq(ds, m.Word16(0x1234)));
ProgramBuilder prog = new ProgramBuilder();
prog.Add(m);
RunTest(prog.BuildProgram(), "Typing/DtbSequenceWithSegment.txt");
}
示例10: DtbSignedCompare
public void DtbSignedCompare()
{
ProcedureBuilder m = new ProcedureBuilder();
Identifier p = m.Local32("p");
Identifier ds = m.Local16("ds");
ds.DataType = PrimitiveType.SegmentSelector;
Identifier ds2 = m.Local16("ds2");
ds.DataType = PrimitiveType.SegmentSelector;
m.Assign(ds2, ds);
m.Store(
m.SegMem(PrimitiveType.Bool, ds, m.Word16(0x5400)),
m.Lt(m.SegMemW(ds, m.Word16(0x5404)), m.Word16(20)));
m.Store(m.SegMemW(ds2, m.Word16(0x5404)), m.Word16(0));
ProgramBuilder prog = new ProgramBuilder();
prog.Add(m);
RunTest(prog.BuildProgram(), "Typing/DtbSignedCompare.txt");
}
示例11: DtbSegmentedDirectAddress
public void DtbSegmentedDirectAddress()
{
ProcedureBuilder m = new ProcedureBuilder();
var arch = new Reko.Arch.X86.X86ArchitectureReal();
var prog = new Program
{
Architecture = arch,
Platform = new DefaultPlatform(null, arch)
};
store.EnsureExpressionTypeVariable(factory, prog.Globals);
Identifier ds = m.Local16("ds");
Expression e = m.SegMem(PrimitiveType.Byte, ds, m.Int16(0x0200));
TraitCollector coll = new TraitCollector(factory, store, dtb, prog);
e = e.Accept(aen);
e.Accept(eqb);
e.Accept(coll);
dtb.BuildEquivalenceClassDataTypes();
Verify("Typing/DtbSegmentedDirectAddress.txt");
}
示例12: DtbSegmentedAccess
public void DtbSegmentedAccess()
{
ProcedureBuilder m = new ProcedureBuilder();
Identifier ds = m.Local16("ds");
Identifier bx = m.Local16("bx");
Expression e = m.SegMem(bx.DataType, ds, m.IAdd(bx, 4));
var arch = new Reko.Arch.X86.X86ArchitectureReal();
Program prog = new Program
{
Architecture = arch,
Platform = new DefaultPlatform(null, arch),
};
TraitCollector trco = new TraitCollector(factory, store, dtb, prog);
e = e.Accept(aen);
e.Accept(eqb);
e.Accept(trco);
dtb.BuildEquivalenceClassDataTypes();
Verify("Typing/DtbSegmentedAccess.txt");
}