Example #1
0
        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");
        }
Example #2
0
        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");
        }
Example #9
0
        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");
        }
Example #10
0
		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");
		}