private void FindPostDominators(ProcedureBuilder m)
 {
     ProcedureStructureBuilder graphs = new ProcedureStructureBuilder(m.Procedure);
     h = graphs.Build();
     sw = new StringWriter();
     graphs.AnalyzeGraph().Write(sw);
 }
示例#2
0
 protected virtual void RunTest(ProcedureBuilder pm)
 {
     ProcedureStructureBuilder g = new ProcedureStructureBuilder(pm.Procedure);
     g.BuildNodes();
     g.DefineEdges();
     proc = g.CreateProcedureStructure();
     g.SetTimeStamps();
 }
示例#3
0
        private void FindPostDominators(ProcedureBuilder m)
        {
            ProcedureStructureBuilder graphs = new ProcedureStructureBuilder(m.Procedure);

            h  = graphs.Build();
            sw = new StringWriter();
            graphs.AnalyzeGraph().Write(sw);
        }
示例#4
0
        protected virtual void RunTest(ProcedureBuilder pm)
        {
            ProcedureStructureBuilder g = new ProcedureStructureBuilder(pm.Procedure);

            g.BuildNodes();
            g.DefineEdges();
            proc = g.CreateProcedureStructure();
            g.SetTimeStamps();
        }
        private void CompileTest(ProcedureBuilder pm)
        {
            ProcedureStructureBuilder         g     = new ProcedureStructureBuilder(pm.Procedure);
            Dictionary <Block, StructureNode> nodes = new Dictionary <Block, StructureNode>();

            g.BuildNodes();
            g.DefineEdges();
            proc = g.CreateProcedureStructure();
            g.SetTimeStamps();
        }
示例#6
0
        protected virtual void RunTest(Procedure proc)
        {
            ProcedureStructureBuilder graphs = new ProcedureStructureBuilder(proc);

            graphs.BuildNodes();
            graphs.DefineEdges();
            ph = graphs.CreateProcedureStructure();
            graphs.SetTimeStamps();

            IntervalBuilder ib = new IntervalBuilder();

            intervals = ib.BuildIntervals(new StructureGraphAdapter(ph.Nodes), ph.EntryNode);
        }
示例#7
0
        private ProcedureStructure CompileTest(Procedure proc)
        {
            ProcedureStructureBuilder g = new ProcedureStructureBuilder(proc);

            g.BuildNodes();
            g.DefineEdges();
            ProcedureStructure ps = g.CreateProcedureStructure();

            g.SetTimeStamps();

            DerivedSequenceBuilder gr = new DerivedSequenceBuilder(ps);

            return(ps);
        }
示例#8
0
        public void LoopFinder_Reg00013()
        {
            Program prog = RewriteProgramMsdos("Fragments/regressions/r00013.asm", Address.SegPtr(0x800, 0));
            ProcedureStructureBuilder psb = new ProcedureStructureBuilder(prog.Procedures.Values[0]);
            proc = psb.Build();
            psb.AnalyzeGraph();

            proc.Dump();
            var lf = new LoopFinder(proc.Ordering[23], proc.Ordering[0], proc.Ordering);
            var intervalNodes = proc.Nodes[23].Interval.FindIntervalNodes(0);
            var loopNodes = lf.FindNodesInLoop(intervalNodes);
            proc.Dump();
            Loop loop = lf.DetermineLoopType(loopNodes);
            Assert.IsTrue(loop is TestlessLoop);
        }
示例#9
0
        public void LoopFinder_Reg00013()
        {
            Program prog = RewriteProgramMsdos("Fragments/regressions/r00013.asm", Address.SegPtr(0x800, 0));
            ProcedureStructureBuilder psb = new ProcedureStructureBuilder(prog.Procedures.Values[0]);

            proc = psb.Build();
            psb.AnalyzeGraph();

            proc.Dump();
            var lf            = new LoopFinder(proc.Ordering[23], proc.Ordering[0], proc.Ordering);
            var intervalNodes = proc.Nodes[23].Interval.FindIntervalNodes(0);
            var loopNodes     = lf.FindNodesInLoop(intervalNodes);

            proc.Dump();
            Loop loop = lf.DetermineLoopType(loopNodes);

            Assert.IsTrue(loop is TestlessLoop);
        }
示例#10
0
 private void RunTest(ProcedureBuilder m)
 {
     var psb = new ProcedureStructureBuilder(m.Procedure);
     proc = psb.Build();
 }
        private void CompileTest(ProcedureBuilder pm)
        {
            ProcedureStructureBuilder g = new ProcedureStructureBuilder(pm.Procedure);
            Dictionary<Block, StructureNode> nodes = new Dictionary<Block, StructureNode>();
            g.BuildNodes();
            g.DefineEdges();
            proc = g.CreateProcedureStructure();
            g.SetTimeStamps();

        }
示例#12
0
        protected virtual void RunTest(Procedure proc)
        {
            ProcedureStructureBuilder graphs = new ProcedureStructureBuilder(proc);
            graphs.BuildNodes();
            graphs.DefineEdges();
            ph = graphs.CreateProcedureStructure();
            graphs.SetTimeStamps();

            IntervalBuilder ib = new IntervalBuilder();
            intervals = ib.BuildIntervals(new StructureGraphAdapter(ph.Nodes), ph.EntryNode);
        }
示例#13
0
        private void RunTest(ProcedureBuilder m)
        {
            var psb = new ProcedureStructureBuilder(m.Procedure);

            proc = psb.Build();
        }
示例#14
0
        private ProcedureStructure CompileTest(Procedure proc)
        {
            ProcedureStructureBuilder g = new ProcedureStructureBuilder(proc);
            g.BuildNodes();
            g.DefineEdges();
            ProcedureStructure ps = g.CreateProcedureStructure();
            g.SetTimeStamps();

            DerivedSequenceBuilder gr = new DerivedSequenceBuilder(ps);
            return ps;
        }
示例#15
0
 public void BuildProcedureStructure()
 {
     var cfgs = new ProcedureStructureBuilder(proc);
     ProcedureStructure = cfgs.Build();
     cfgs.AnalyzeGraph();
 }