コード例 #1
0
        public void WriteGlobals(Program program, string filename, TextWriter w)
        {
            var headerfile = DecompiledFileService.GenerateDerivedFilename(program, ".h");

            WriteHeaderComment(filename, program, w);
            w.WriteLine("#include \"{0}\"", headerfile);
            w.WriteLine();
            var gdw = new GlobalDataWriter(program, new TextFormatter(w), true, true, services);

            gdw.Write();
            w.WriteLine();
        }
コード例 #2
0
        public void WriteDecompiledObjects(Program program, string filename, IEnumerable <IAddressable> objects, TextWriter w)
        {
            WriteHeaderComment(filename, program, w);
            //$REFACTOR: common code -- hardwired ".h"
            var headerfile = DecompiledFileService.GenerateDerivedFilename(program, ".h");

            w.WriteLine("#include \"{0}\"", headerfile);
            w.WriteLine();
            var          fmt  = new AbsynCodeFormatter(new TextFormatter(w));
            var          gdw  = new GlobalDataWriter(program, fmt.InnerFormatter, false, true, this.services);
            IAddressable?prev = null;

            foreach (var o in objects)
            {
                if (o is Procedure proc)
                {
                    try
                    {
                        if (prev is GlobalVariable)
                        {
                            w.WriteLine();
                        }
                        WriteProcedureHeader(program, proc, w);
                        fmt.Write(proc);
                        w.WriteLine();
                    }
                    catch (Exception ex)
                    {
                        w.WriteLine();
                        w.WriteLine("// Exception {0} when writing procedure.", ex.Message);
                    }
                }
                else if (o is GlobalVariable global)
                {
                    gdw.WriteGlobalVariable(global.Address, global.DataType, global.Name);
                }
            }
        }