public void Setup()
 {
     arch = new FakeArchitecture();
     proc = new Procedure("Test", new Frame(arch.FramePointerType));
     flow = new ProcedureFlow(proc, arch);
     ctx = new SymbolicEvaluationContext(arch, proc.Frame);
     trs = new TrashedRegisterSummarizer(arch, proc, flow, ctx);
 }
示例#2
0
        public void PropagateToProcedureSummary(Procedure proc)
        {
            var  prop    = new TrashedRegisterSummarizer(program.Architecture, proc, flow[proc], ctx);
            bool changed = prop.PropagateToProcedureSummary();

            if (changed)
            {
                foreach (Statement stm in program.CallGraph.CallerStatements(proc))
                {
                    if (visited.Contains(stm.Block))
                    {
                        worklist.Add(stm.Block);
                    }
                }
            }
        }