Пример #1
0
        protected override void RunTest(Program program, TextWriter fut)
        {
            InitProgram(program);
            IImportResolver  importResolver = null;
            var              eventListener  = new FakeDecompilerEventListener();
            DataFlowAnalysis dfa            = new DataFlowAnalysis(
                program,
                importResolver,
                eventListener);

            dfa.UntangleProcedures();

            foreach (Procedure proc in program.Procedures.Values)
            {
                SsaTransform sst = new SsaTransform(
                    dfa.ProgramDataFlow,
                    proc,
                    importResolver,
                    proc.CreateBlockDominatorGraph(),
                    new HashSet <RegisterStorage>());
                SsaState ssa = sst.SsaState;

                var icrw = new IndirectCallRewriter(
                    program,
                    ssa,
                    eventListener);
                icrw.Rewrite();

                ssa.Write(fut);
                proc.Write(false, fut);
                fut.WriteLine();
            }
        }
Пример #2
0
        public void RunIndirectCallRewriter()
        {
            var eventListener = new FakeDecompilerEventListener();
            var program       = new Program
            {
                Architecture = m.Architecture,
            };
            var icrw = new IndirectCallRewriter(
                program,
                m.Ssa,
                eventListener);

            icrw.Rewrite();
            m.Ssa.Validate(s => Assert.Fail(s));
        }