public void CmpPtrIntPtrInt() { Pointer p1 = new Pointer(PrimitiveType.Int32, 4); Pointer p2 = new Pointer(PrimitiveType.Int32, 4); DataTypeComparer c = new DataTypeComparer(); Assert.AreEqual(0, c.Compare(p1, p2)); }
public TypedExpressionRewriter(Program program) { this.program = program; this.globals = program.Globals; this.compTypes = new DataTypeComparer(); this.tcr = new TypedConstantRewriter(program); this.m = new ExpressionEmitter(); this.unifier = new Unifier(); }
public void CmpRecursiveEqualStructs() { // struct str1{struct *str2} == struct str2{struct *str1} StructureType s1 = new StructureType(); StructureType s2 = new StructureType(); s1.Fields.Add(0, new Pointer(s2, 4)); s2.Fields.Add(0, new Pointer(s1, 4)); DataTypeComparer c = new DataTypeComparer(); Assert.AreEqual(0, c.Compare(s1, s2)); }
public TypedExpressionRewriter(Program program, DecompilerEventListener eventListener) { this.program = program; this.globals = program.Globals; this.eventListener = eventListener; this.compTypes = new DataTypeComparer(); this.tcr = new TypedConstantRewriter(program, eventListener); this.m = new ExpressionEmitter(); this.unifier = new Unifier(); }
public TypedExpressionRewriter(Program prog) { this.prog = prog; this.platform = prog.Platform; this.store = prog.TypeStore; this.globals = prog.Globals; this.compTypes = new DataTypeComparer(); this.tcr = new TypedConstantRewriter(prog); this.m = new ExpressionEmitter(); this.unifier = new Unifier(); }
public void CmpUnionToUnion() { //Warning : inner types were selected in such a way as to force UnionAlternativeCollection // to place them in provided order. DataType inner1 = PrimitiveType.UInt32; DataType inner2 = PrimitiveType.UInt16; DataType inner3 = PrimitiveType.UInt8; UnionType u1 = new UnionType("Union1",inner1,inner3,inner1); UnionType u2 = new UnionType("Union1",inner1,inner3,inner2); DataTypeComparer c = new DataTypeComparer(); Assert.AreNotEqual(0, c.Compare(u1, u2)); }
public void Dtcmp_Functions() { var sig1 = new FunctionType( new Identifier("", PrimitiveType.Int32, null), new Identifier("arg1", PrimitiveType.Real64, null)); var sig2 = new FunctionType( new Identifier("", PrimitiveType.Int32, null), new Identifier("arg1", PrimitiveType.Real64, null)); var dtcmp = new DataTypeComparer(); Assert.AreEqual(dtcmp.GetHashCode(sig1), dtcmp.GetHashCode(sig2)); Assert.AreEqual(0, dtcmp.Compare(sig1, sig2)); }
public void CmpUnionToUnion() { //Warning : inner types were selected in such a way as to force UnionAlternativeCollection // to place them in provided order. DataType inner1 = PrimitiveType.UInt32; DataType inner2 = PrimitiveType.UInt16; DataType inner3 = PrimitiveType.UInt8; UnionType u1 = new UnionType("Union1", inner1, inner3, inner1); UnionType u2 = new UnionType("Union1", inner1, inner3, inner2); DataTypeComparer c = new DataTypeComparer(); Assert.AreNotEqual(0, c.Compare(u1, u2)); }
public void CmpRecursiveNotEqualStructs() { // struct str1{struct *str2; int f1} != struct str2{struct *str1; float f2} DataType u32 = PrimitiveType.UInt32; DataType r32 = PrimitiveType.Real32; StructureType s1 = new StructureType(); StructureType s2 = new StructureType(); s1.Fields.Add(0, new Pointer(s2, 32)); s1.Fields.Add(4, u32); s2.Fields.Add(0, new Pointer(s1, 32)); s2.Fields.Add(4, r32); DataTypeComparer c = new DataTypeComparer(); Assert.AreNotEqual(0, c.Compare(s1, s2)); Assert.AreNotEqual(0, c.Compare(r32, u32)); }
public void CmpRecursiveNotEqualStructs() { // struct str1{struct *str2; int f1} != struct str2{struct *str1; float f2} DataType u32 = PrimitiveType.UInt32; DataType r32 = PrimitiveType.Real32; StructureType s1 = new StructureType(); StructureType s2 = new StructureType(); s1.Fields.Add(0, new Pointer(s2, 4)); s1.Fields.Add(4, u32); s2.Fields.Add(0, new Pointer(s1, 4)); s2.Fields.Add(4, r32); DataTypeComparer c = new DataTypeComparer(); Assert.AreNotEqual(0, c.Compare(s1, s2)); Assert.AreNotEqual(0, c.Compare(r32, u32)); }
public ComplexExpressionBuilder( DataType dtResult, DataType dt, DataType dtOrig, Expression basePointer, Expression complexExp, Expression indexExp, int offset) { this.dtResult = dtResult; this.dt = dt; this.dtOriginal = dtOrig; this.basePointer = basePointer; this.complexExp = complexExp; this.indexExp = indexExp; this.offset = offset; this.comp = new DataTypeComparer(); }
public GlobalDataWriter(Program program, IServiceProvider services) { this.program = program; this.services = services; this.cmp = new DataTypeComparer(); }