public ProcedureDialogInteractor(IProcessorArchitecture arch, Procedure_v1 proc) { this.arch = arch; this.proc = proc; if (proc.Signature != null && proc.Signature.Arguments == null) { proc.Signature.Arguments = new Argument_v1[0]; } }
public void SudWrite() { Project_v1 ud = new Project_v1(); ud.Input.Address = "0x1000:0x0"; ud.Output.DisassemblyFilename = "foo.asm"; ud.Output.IntermediateFilename = "foo.cod"; Procedure_v1 proc = new Procedure_v1(); proc.Name = "foo"; proc.Signature = new SerializedSignature { ReturnValue = new Argument_v1 { Kind = new Register_v1("eax") }, Arguments = new Argument_v1[] { new Argument_v1 { Kind = new StackVariable_v1(), Type = new PrimitiveType_v1(Domain.SignedInt, 4) }, new Argument_v1 { Kind = new StackVariable_v1(), Type = new PrimitiveType_v1(Domain.SignedInt, 4) } } }; ud.UserProcedures.Add(proc); using (FileUnitTester fut = new FileUnitTester("Core/SudWrite.txt")) { var writer = new FilteringXmlWriter(fut.TextWriter); writer.Formatting = System.Xml.Formatting.Indented; XmlSerializer ser = SerializedLibrary.CreateSerializer_v1(typeof(Project_v1)); ser.Serialize(writer, ud); fut.AssertFilesEqual(); } }
public void EnqueueUserProcedure(Procedure_v1 sp) { Address addr; if (!program.Architecture.TryParseAddress(sp.Address, out addr)) return; var proc = EnsureProcedure(addr, sp.Name); if (sp.Signature != null) { var sser = program.Architecture.CreateProcedureSerializer( new TypeLibraryLoader(program.Architecture, true), program.Platform.DefaultCallingConvention); proc.Signature = sser.Deserialize(sp.Signature, proc.Frame); } if (sp.Characteristics != null) { proc.Characteristics = sp.Characteristics; } queue.Enqueue(PriorityEntryPoint, new ProcedureWorkItem(this, program, addr, sp.Name)); }
public Procedure_v1 Serialize(Procedure proc, Address addr) { Procedure_v1 sproc = new Procedure_v1(); sproc.Address = addr.ToString(); sproc.Name = proc.Name; if (proc.Signature != null) sproc.Signature = Serialize(proc.Signature); return sproc; }
private Procedure_v1 MkMalloc() { Procedure_v1 proc = new Procedure_v1 { Name = "malloc", Signature = new SerializedSignature { Convention = "cdecl", ReturnValue = new Argument_v1 { Kind = new Register_v1("eax"), }, Arguments = new Argument_v1[] { new Argument_v1 { Name = "cb", Kind = new StackVariable_v1(), } } } }; return proc; }
public void Setup() { proc = new Procedure_v1(); interactor = new TestProcedureDialogInteractor(proc); }
public TestProcedureDialogInteractor(Procedure_v1 proc) : base(new IntelArchitecture(ProcessorMode.Protected32), proc) { }