public void PprReplaceInts() { var arch = new FakeArchitecture(); var program = new Program { Architecture = arch, Platform = new DefaultPlatform(null, arch) }; TypeFactory factory = new TypeFactory(); store = new TypeStore(); TypeVariable tv1 = store.CreateTypeVariable(factory); TypeVariable tv2 = store.CreateTypeVariable(factory); Assert.IsNotNull(tv1.Class, "Expected store.EnsureTypeVariable to create equivalence class"); Assert.IsNotNull(tv2.Class, "Expected store.EnsureTypeVariable to create equivalence class"); tv1.Class.DataType = PrimitiveType.Word32; tv2.Class.DataType = PrimitiveType.Word16; program.Globals.TypeVariable = store.CreateTypeVariable(factory); program.Globals.DataType = factory.CreateStructureType(); TypeVariable tv3 = store.CreateTypeVariable(factory); Assert.IsNotNull(tv3.Class, "Expected store.EnsureTypeVariable to create equivalence class"); StructureType mem = factory.CreateStructureType(null, 0); mem.Fields.Add(0, tv1); mem.Fields.Add(4, tv2); tv3.Class.DataType = factory.CreatePointer(mem, 4); store.CopyClassDataTypesToTypeVariables(); TypeVariableReplacer tvr = new TypeVariableReplacer(store); tvr.ReplaceTypeVariables(); var ppr = new PtrPrimitiveReplacer(factory, store, program); ppr.ReplaceAll(new FakeDecompilerEventListener()); Verify(null, "Typing/PprReplaceInts.txt"); }
public void TystCopyClassToTypes() { TypeStore store = new TypeStore(); TypeFactory factory = new TypeFactory(); TypeVariable tv1 = store.CreateTypeVariable(factory); TypeVariable tv2 = store.CreateTypeVariable(factory); Assert.IsNotNull(tv1.Class, "Expected store.EnsureTypeVariable to create an equivalence class"); Assert.IsNotNull(tv2.Class, "Expected store.EnsureTypeVariable to create an equivalence class"); EquivalenceClass e = store.MergeClasses(tv1, tv2); e.DataType = PrimitiveType.Word16; store.CopyClassDataTypesToTypeVariables(); foreach (TypeVariable tv in store.TypeVariables) { Assert.IsNotNull(tv.DataType); } }
public void NameStructure() { var store = new TypeStore(); var factory = new TypeFactory(); var tv1 = store.CreateTypeVariable(factory); tv1.Class.DataType = new StructureType(null, 0); tv1.DataType = tv1.Class.DataType; var ctn = new ComplexTypeNamer(); ctn.RenameAllTypes(store); Assert.AreEqual("Eq_1", tv1.Class.DataType.Name); }
public void Setup() { store = new TypeStore(); factory = new TypeFactory(); globals = new Identifier("globals", PrimitiveType.Word32, null); StructureType point = new StructureType("Point", 0) { Fields = { { 0, PrimitiveType.Word32, null }, { 4, PrimitiveType.Word32, null } } }; TypeVariable tvPoint = store.CreateTypeVariable(factory); EquivalenceClass eq = new EquivalenceClass(tvPoint) { DataType = point }; tvPoint.DataType = eq; ptrPoint = new Pointer(eq, 4); UnionType u = new UnionType("RealInt", null) { Alternatives = { new UnionAlternative("w", PrimitiveType.Word32, 0), new UnionAlternative("r", PrimitiveType.Real32, 1), } }; TypeVariable tvUnion = store.CreateTypeVariable(factory); eq = new EquivalenceClass(tvUnion) { DataType = u }; tvUnion.DataType = eq; ptrUnion = new Pointer(eq, 4); ptrInt = new Pointer(PrimitiveType.Int32, 4); ptrWord = new Pointer(PrimitiveType.Word32, 4); m = new ExpressionEmitter(); }