public void DumpProgram()
{
foreach (Procedure proc in program.Procedures.Values)
{
StringWriter output = new StringWriter();
ProcedureFlow pf= this.flow[proc];
TextFormatter f = new TextFormatter(output);
if (pf.Signature != null)
pf.Signature.Emit(proc.Name, FunctionType.EmitFlags.None, f);
else if (proc.Signature != null)
proc.Signature.Emit(proc.Name, FunctionType.EmitFlags.None, f);
else
output.Write("Warning: no signature found for {0}", proc.Name);
output.WriteLine();
pf.Emit(program.Architecture, output);
output.WriteLine("// {0}", proc.Name);
proc.Signature.Emit(proc.Name, FunctionType.EmitFlags.None, f);
output.WriteLine();
foreach (Block block in proc.ControlGraph.Blocks)
{
if (block != null)
{
BlockFlow bf = this.flow[block];
bf.Emit(program.Architecture, output);
output.WriteLine();
block.Write(output);
}
}
Debug.WriteLine(output.ToString());
}
}