示例#1
0
        private Procedure RunFuncTest(params string[] lines)
        {
            var program = new Program
            {
                Architecture = arch,
                Platform     = new DefaultPlatform(sc, arch),
            };

            var parser = new LLVMParser(new StringReader(
                                            string.Join(Environment.NewLine, lines)));
            var fn = parser.ParseFunctionDefinition();

            mr.ReplayAll();

            var pb = new ProgramBuilder(sc, program);

            foreach (var de in globals)
            {
                pb.Globals.Add(de.Key, de.Value);
            }
            var proc = pb.RegisterFunction(fn, addrFn);

            pb.TranslateFunction(fn);
            return(proc);
        }
示例#2
0
        private void RunModuleTest()
        {
            var rdr    = new StringReader(llir);
            var parser = new LLVMParser(new LLVMLexer(rdr));
            var module = parser.ParseModule();

            Assert.AreEqual(sExp, module.ToString());
        }
示例#3
0
        private void RunTypeTest()
        {
            var rdr    = new StringReader(llir);
            var parser = new LLVMParser(new LLVMLexer(rdr));
            var type   = parser.ParseType();

            Assert.AreEqual(sExp, type.ToString());
        }
示例#4
0
        private void RunInstrTest()
        {
            var rdr    = new StringReader(llir);
            var parser = new LLVMParser(new LLVMLexer(rdr));
            var instr  = parser.ParseInstruction();

            Assert.AreEqual(sExp, instr.ToString());
        }
示例#5
0
        public void LLPB_File()
        {
            using (var rdr = File.OpenText(@"D:\dev\uxmal\reko\LLVM\more_llvm\more_llvm\c4\c4.ll"))
            {
                var parser  = new LLVMParser(new LLVMLexer(rdr));
                var module  = parser.ParseModule();
                var program = new Program();
                mr.ReplayAll();

                var pb = new ProgramBuilder(sc, program);
                program = pb.BuildProgram(module);
            }
        }