public void DtbInductionVariables() { Identifier i = new Identifier("i", PrimitiveType.Word32, null); MemoryAccess load = new MemoryAccess(MemoryIdentifier.GlobalMemory, i, PrimitiveType.Int32); Identifier i2 = new Identifier("i2", PrimitiveType.Word32, null); MemoryAccess ld2 = new MemoryAccess(MemoryIdentifier.GlobalMemory, i2, PrimitiveType.Int32); LinearInductionVariable iv = new LinearInductionVariable( Constant.Word32(0), Constant.Word32(1), Constant.Word32(10), false); LinearInductionVariable iv2 = new LinearInductionVariable( Constant.Word32(0x0010000), Constant.Word32(4), Constant.Word32(0x0010040), false); program.InductionVariables.Add(i, iv); program.InductionVariables.Add(i2, iv2); program.Platform = new DefaultPlatform(null, arch); TraitCollector trco = new TraitCollector(factory, store, dtb, program); program.Globals.Accept(eqb); load.Accept(eqb); ld2.Accept(eqb); program.Globals.Accept(trco); load.Accept(trco); ld2.Accept(trco); dtb.BuildEquivalenceClassDataTypes(); Verify("Typing/DtbInductionVariables.txt"); }
public void TrcoInductionVariable() { Identifier i = new Identifier("i", PrimitiveType.Word32, null); MemoryAccess load = new MemoryAccess(MemoryIdentifier.GlobalMemory, i, PrimitiveType.Int32); Identifier i2 = new Identifier("i2", PrimitiveType.Word32, null); MemoryAccess ld2 = new MemoryAccess(MemoryIdentifier.GlobalMemory, i2, PrimitiveType.Int32); LinearInductionVariable iv = new LinearInductionVariable( Constant.Word32(0), Constant.Word32(1), Constant.Word32(10), false); LinearInductionVariable iv2 = new LinearInductionVariable( Constant.Word32(0x0010000), Constant.Word32(4), Constant.Word32(0x0010040), false); Program program = CreateProgram(); program.InductionVariables.Add(i, iv); program.InductionVariables.Add(i2, iv2); coll = CreateCollector(program); program.Globals.Accept(eqb); load.Accept(eqb); ld2.Accept(eqb); program.Globals.Accept(coll); load.Accept(coll); ld2.Accept(coll); Verify(null, "Typing/TrcoInductionVariable.txt"); }
public void AtrcoMem() { Identifier pp = m.Local32("pp"); MemoryAccess mem = m.Load(PrimitiveType.Byte, m.Load(PrimitiveType.Word32, pp)); mem.Accept(eqb); atrco.Collect(null, 0, mem, mem.EffectiveAddress); Verify(null, "Typing/AtrcoMem.txt"); }
public void AtrcoIdMinusConst() { Identifier r = m.Local32("r"); MemoryAccess mem = m.Load(PrimitiveType.Word32, m.ISub(r, 4)); mem.Accept(eqb); atrco.Collect(null, 0, mem, mem.EffectiveAddress); Verify(null, "Typing/AtrcoIdMinusConst.txt"); }
public void AtrcoTestidPlusId() { Identifier r = m.Local32("r"); Identifier s = m.Local32("s"); MemoryAccess mem = m.Load(PrimitiveType.Byte, m.IAdd(r, s)); mem.Accept(eqb); atrco.Collect(null, 0, mem, mem.EffectiveAddress); }
public void AtrcoInductionVariableDecrement() { Identifier id = m.Local32("ebx"); LinearInductionVariable iv = Liv32(-1); MemoryAccess mem = m.Load(PrimitiveType.Byte, id); mem.Accept(eqb); atrco.VisitInductionVariable(id, iv, null); Verify(null, "Typing/AtrcoInductionVariableDecr.txt"); }
public void AtrcoSegPtr() { Identifier ds = m.Local16("ds"); Identifier bx = m.Local16("bx"); MemoryAccess mem = m.SegMem(PrimitiveType.Word16, ds, bx); mem.Accept(eqb); atrco.Collect(program.Globals, 2, mem, mem.EffectiveAddress); Verify(null, "Typing/AtrcoSegPtr.txt"); }
public void AtrcoInductionVariableIncr() { Identifier id = m.Local32("esi"); LinearInductionVariable iv = Liv32(1); program.InductionVariables.Add(id, iv); Constant zero = m.Word32(0); MemoryAccess mem = m.Load(PrimitiveType.Byte, m.IAdd(id, zero)); mem.Accept(eqb); atrco.Collect(null, 0, mem, mem.EffectiveAddress); Verify(null, "Typing/AtrcoInductionVariableIncr.txt"); }
public void DtbInductionVariables() { Identifier i = new Identifier("i", PrimitiveType.Word32, null); MemoryAccess load = new MemoryAccess(MemoryIdentifier.GlobalMemory, i, PrimitiveType.Int32); Identifier i2 = new Identifier("i2", PrimitiveType.Word32, null); MemoryAccess ld2 = new MemoryAccess(MemoryIdentifier.GlobalMemory, i2, PrimitiveType.Int32); LinearInductionVariable iv = new LinearInductionVariable( Constant.Word32(0), Constant.Word32(1), Constant.Word32(10), false); LinearInductionVariable iv2 = new LinearInductionVariable( Constant.Word32(0x0010000), Constant.Word32(4), Constant.Word32(0x0010040), false); prog.InductionVariables.Add(i, iv); prog.InductionVariables.Add(i2, iv2); prog.Platform = new DefaultPlatform(null, arch); TraitCollector trco = new TraitCollector(factory, store, dtb, prog); prog.Globals.Accept(eqb); load.Accept(eqb); ld2.Accept(eqb); prog.Globals.Accept(trco); load.Accept(trco); ld2.Accept(trco); dtb.BuildEquivalenceClassDataTypes(); Verify("Typing/DtbInductionVariables.txt"); }
public void TrcoInductionVariable() { Identifier i = new Identifier("i", PrimitiveType.Word32, null); MemoryAccess load = new MemoryAccess(MemoryIdentifier.GlobalMemory, i, PrimitiveType.Int32); Identifier i2 = new Identifier("i2", PrimitiveType.Word32, null); MemoryAccess ld2 = new MemoryAccess(MemoryIdentifier.GlobalMemory, i2, PrimitiveType.Int32); LinearInductionVariable iv = new LinearInductionVariable( Constant.Word32(0), Constant.Word32(1), Constant.Word32(10), false); LinearInductionVariable iv2 = new LinearInductionVariable( Constant.Word32(0x0010000), Constant.Word32(4), Constant.Word32(0x0010040), false); Program prog = CreateProgram(); prog.InductionVariables.Add(i, iv); prog.InductionVariables.Add(i2, iv2); coll = CreateCollector(prog); prog.Globals.Accept(eqb); load.Accept(eqb); ld2.Accept(eqb); prog.Globals.Accept(coll); load.Accept(coll); ld2.Accept(coll); Verify(null, "Typing/TrcoInductionVariable.txt"); }