コード例 #1
0
ファイル: Program.TestCompiler.cs プロジェクト: Orvid/Cosmos
        //private const string KernelFile = CosmosRoot + @"\Users\Emile\TestBed\TestBed\bin\Debug\TestBed.dll";
        //private const string OutputFile = CosmosRoot + @"\Users\Emile\TestBed\TestBed\bin\Debug\TestBedBoot.asm";

        private static void Main(string[] args)
        {
            //Console.SetOut(new StreamWriter("out", false));

            var xSW = Stopwatch.StartNew();
            try
            {
                CosmosPaths.DebugStubSrc = Path.Combine(CosmosRoot, "source", "Cosmos.Debug.DebugStub");
                var xTask = new CompilerEngine();
                xTask.DebugEnabled = true;
                xTask.StackCorruptionDetectionEnabled = true;
                xTask.StackCorruptionDetectionLevel = "AllInstructions";
                xTask.DebugMode = "Source";
                xTask.TraceAssemblies = "All";
                xTask.DebugCom = 1;
                xTask.UseNAsm = true;
                xTask.OutputFilename = OutputFile;
                xTask.EnableLogging = true;
                xTask.EmitDebugSymbols = true;
                xTask.IgnoreDebugStubAttribute = false;
                xTask.References = GetReferences();
                xTask.OnLogError = (m) => Console.WriteLine("Error: {0}", m);
                xTask.OnLogWarning = (m) => Console.WriteLine("Warning: {0}", m);
                xTask.OnLogMessage = (m) =>
                                     {
                                         Console.WriteLine("Message: {0}", m);
                                     };
                xTask.OnLogException = (m) => Console.WriteLine("Exception: {0}", m.ToString());

                if (xTask.Execute())
                {
                    Console.WriteLine("Executed OK");
                }
                else
                {
                    Console.WriteLine("Errorred");
                }
                xSW.Stop();

            }
            catch (Exception E)
            {
                Console.Out.Flush();
                Console.WriteLine(E.ToString());
                //Console.ReadLine();
                return;
            }
            Console.WriteLine("Run took {0}", xSW.Elapsed);
            Console.WriteLine("Generated {0} Guids", DebugInfo.GeneratedIdsCount());
            Console.Out.Flush();
            Console.ReadKey();
        }
コード例 #2
0
        private static bool RunCompilerEngine(string[] aArgs, Action <string> aLogMessage, Action <string> aLogError)
        {
            var xSettings = new ConsoleCompilerEngineSettings(aArgs, aLogMessage, aLogError);

            var xEngine = new CompilerEngine(xSettings)
            {
                OnLogError     = aLogError,
                OnLogWarning   = m => aLogMessage(String.Format("Warning: {0}", m)),
                OnLogMessage   = aLogMessage,
                OnLogException = m => aLogError(String.Format("Exception: {0}", m.ToString()))
            };

            return(xEngine.Execute());
        }
コード例 #3
0
        public void Execute()
        {
            if (String.IsNullOrWhiteSpace(OutputFile))
            {
                throw new InvalidOperationException("No OutputFile specified!");
            }
            if (References.Count == 0)
            {
                throw new InvalidOperationException("No References specified!");
            }
            
            DebugInfo.SetRange(DebugInfo.AssemblerDebugSymbolsRange); 
            Console.WriteLine("Compiling to '{0}'", OutputFile);
            var xTask = new CompilerEngine();
            xTask.DebugEnabled = false;
            xTask.StackCorruptionDetectionEnabled = false;
            xTask.StackCorruptionDetectionLevel = "MethodFooters";
            xTask.DebugMode = "Source";
            xTask.TraceAssemblies = "User";
            xTask.DebugCom = 1;
            xTask.UseNAsm = true;
            xTask.OutputFilename = OutputFile;
            xTask.EnableLogging = true;
            xTask.EmitDebugSymbols = true;
            xTask.IgnoreDebugStubAttribute = false;
            xTask.References = GetReferences();
            xTask.AssemblerLog = AssemblerLogFile;
            xTask.OnLogError = m =>
                               {
                                   throw new Exception("Error during compilation: " + m);
                               };
            xTask.OnLogWarning = (m) => Console.WriteLine("Warning: {0}", m);
            xTask.OnLogMessage = (m) =>
                                 {
                                     Console.WriteLine("Message: {0}", m);
                                 };
            xTask.OnLogException = (m) => Console.WriteLine("Exception: {0}", m.ToString());

            if (!xTask.Execute())
            {
                throw new Exception("Error occurred while running compiler!");
            }
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: jamesphenry/IL2CPU
        public static int Run(string[] args, Action <string> logMessage, Action <string> logError)
        {
            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }
            if (logMessage == null)
            {
                throw new ArgumentNullException(nameof(logMessage));
            }
            if (logError == null)
            {
                throw new ArgumentNullException(nameof(logError));
            }

            try
            {
                var tmp = "";
                foreach (var s in args)
                {
                    tmp += s;
                    string[] s1    = s.Split(':');
                    string   argID = s1[0].ToLower();
                    if (argID == "References".ToLower())
                    {
                        References.Add(s.Replace(s1[0] + ":", ""));
                    }
                    else if (argID == "AdditionalReferences".ToLower())
                    {
                        AdditionalReferences.Add(s.Replace(s1[0] + ":", ""));
                    }
                    else if (argID == "AssemblySearchDirs".ToLower())
                    {
                        AssemblySearchDirs.Add(s.Replace(s1[0] + ":", ""));
                    }
                    else
                    {
                        CmdOptions.Add(argID, s.Replace(s1[0] + ":", ""));
                    }
                }

                var xEngine = new CompilerEngine();

                CompilerEngine.KernelPkg = "";
                if (CmdOptions.ContainsKey("KernelPkg".ToLower()))
                {
                    CompilerEngine.KernelPkg = Convert.ToString(CmdOptions["KernelPkg".ToLower()]);
                }

                xEngine.DebugEnabled = Convert.ToBoolean(CmdOptions["DebugEnabled".ToLower()]);
                logMessage("Loaded : DebugEnabled");
                xEngine.StackCorruptionDetectionEnabled =
                    Convert.ToBoolean(CmdOptions["StackCorruptionDetectionEnabled".ToLower()]);
                logMessage("Loaded : StackCorruptionDetectionEnabled");
                xEngine.DebugMode = CmdOptions["DebugMode".ToLower()];
                logMessage("Loaded : DebugMode");
                xEngine.StackCorruptionDetectionLevel = CmdOptions["StackCorruptionDetectionLevel".ToLower()];
                logMessage("Loaded : StackCorruptionDetectionLevel");
                xEngine.TraceAssemblies = CmdOptions["TraceAssemblies".ToLower()];
                logMessage("Loaded : TraceAssemblies");
                xEngine.DebugCom = Convert.ToByte(CmdOptions["DebugCom".ToLower()]);
                logMessage("Loaded : DebugCom");
                xEngine.OutputFilename = CmdOptions["OutputFilename".ToLower()];
                logMessage("Loaded : OutputFilename");
                xEngine.EnableLogging = Convert.ToBoolean(CmdOptions["EnableLogging".ToLower()]);
                logMessage("Loaded : EnableLogging");
                xEngine.EmitDebugSymbols = Convert.ToBoolean(CmdOptions["EmitDebugSymbols".ToLower()]);
                logMessage("Loaded : EmitDebugSymbols");
                xEngine.IgnoreDebugStubAttribute = Convert.ToBoolean(CmdOptions["IgnoreDebugStubAttribute".ToLower()]);
                logMessage("Loaded : IgnoreDebugStubAttribute");
                xEngine.References = References.ToArray();
                logMessage("Loaded : References");
                xEngine.AssemblySearchDirs = AssemblySearchDirs.ToArray();
                logMessage("Loaded : AssemblySearchDirs");

                xEngine.OnLogError     = logError;
                xEngine.OnLogWarning   = m => logMessage(String.Format("Warning: {0}", m));
                xEngine.OnLogMessage   = logMessage;
                xEngine.OnLogException = (m) => logError(String.Format("Exception: {0}", m.ToString()));
                xEngine.AssemblerLog   = "XSharp.Assembler.log";
                if (xEngine.Execute())
                {
                    logMessage("Executed OK");
                    return(0);
                }
                else
                {
                    logMessage("Errored");
                    return(2);
                }
            }
            catch (Exception E)
            {
                logError(String.Format("Error occurred: " + E.ToString()));
                return(1);
            }
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: iSalva/Cosmos
    public static int Main(string[] args)
    {
      try {
        var tmp = "";
        foreach (var s in args)
        {

          tmp += s;
          string[] s1 = s.Split(':');
          string argID = s1[0].ToLower();
          if (argID != "References".ToLower())
          {
            CmdOptions.Add(argID, s.Replace(s1[0] + ":",""));
          }
          else
          {

            References.Add(s.Replace(s1[0] + ":",""));
          }

        }
        //File.WriteAllText("C:\\Users\\Emile\\Desktop\\dump.txt",tmp);

        var xTask = new CompilerEngine();
        xTask.DebugEnabled = Convert.ToBoolean(CmdOptions["DebugEnabled".ToLower()]);
        Console.WriteLine("Loaded : DebugEnabled");
        xTask.StackCorruptionDetectionEnabled = Convert.ToBoolean(CmdOptions["StackCorruptionDetectionEnabled".ToLower()]);
        Console.WriteLine("Loaded : StackCorruptionDetectionEnabled");
        xTask.DebugMode = CmdOptions["DebugMode".ToLower()];
        Console.WriteLine("Loaded : DebugMode");
        xTask.TraceAssemblies = null;
        Console.WriteLine("Loaded : TraceAssemblies");
        xTask.DebugCom = Convert.ToByte(CmdOptions["DebugCom".ToLower()]);
        Console.WriteLine("Loaded : DebugCom");
        xTask.UseNAsm = Convert.ToBoolean(CmdOptions["UseNAsm".ToLower()]);
        Console.WriteLine("Loaded : UseNAsm");
        xTask.OutputFilename = CmdOptions["OutputFilename".ToLower()]; ;
        Console.WriteLine("Loaded : OutputFilename");
        xTask.EnableLogging = Convert.ToBoolean(CmdOptions["EnableLogging".ToLower()]); ;
        Console.WriteLine("Loaded : EnableLogging");
        xTask.EmitDebugSymbols = Convert.ToBoolean(CmdOptions["EmitDebugSymbols".ToLower()]); ;
        Console.WriteLine("Loaded : EmitDebugSymbols");
        xTask.IgnoreDebugStubAttribute = Convert.ToBoolean(CmdOptions["IgnoreDebugStubAttribute".ToLower()]);
        Console.WriteLine("Loaded : IgnoreDebugStubAttribute");
        xTask.References = References.ToArray();
        Console.WriteLine("Loaded : References");

        xTask.OnLogError = (m) => Console.Error.WriteLine("Error: {0}", m);
        xTask.OnLogWarning = (m) => Console.WriteLine("Warning: {0}", m);
        xTask.OnLogMessage = (m) =>
        {
          Console.WriteLine("Message: {0}", m);
        };
        xTask.OnLogException = (m) => Console.Error.WriteLine("Exception: {0}", m.ToString());
        xTask.AssemblerLog = "Cosmos.Assembler.log";
        if (xTask.Execute())
        {
          Console.WriteLine("Executed OK");
//          File.WriteAllText(@"e:\compiler.log", "OK");
          return 0;
        }
        else
        {
          Console.WriteLine("Errorred");
//          File.WriteAllText(@"e:\compiler.log", "Errored");
          return 2;
        }
      }
      catch (Exception E)
      {
       // Console.Out.Flush();
      // File.WriteAllText("./ErrorDump.txt",E.ToString()  + " " + E.Source);
        Console.WriteLine("Error occurred: " + E.ToString());
//        File.WriteAllText(@"e:\compiler.log", "Exception: " + E.ToString());
        return 1;
      }
    }
コード例 #6
0
ファイル: Program.cs プロジェクト: renanyoy/Cosmos
    public static int Run(string[] args, Action<string> logMessage, Action<string> logError)
    {
      if (args == null)
      {
        throw new ArgumentNullException("args");
      }
      if (logMessage == null)
      {
        throw new ArgumentNullException("logMessage");
      }
      if (logError == null)
      {
        throw new ArgumentNullException("logError");
      }

      try
      {
        var tmp = "";
        foreach (var s in args)
        {

          tmp += s;
          string[] s1 = s.Split(':');
          string argID = s1[0].ToLower();
          if (argID != "References".ToLower())
          {
            CmdOptions.Add(argID, s.Replace(s1[0] + ":", ""));
          }
          else
          {

            References.Add(s.Replace(s1[0] + ":", ""));
          }

        }

        var xTask = new CompilerEngine();
        xTask.DebugEnabled = Convert.ToBoolean(CmdOptions["DebugEnabled".ToLower()]);
        logMessage("Loaded : DebugEnabled");
        xTask.StackCorruptionDetectionEnabled = Convert.ToBoolean(CmdOptions["StackCorruptionDetectionEnabled".ToLower()]);
        logMessage("Loaded : StackCorruptionDetectionEnabled");
        xTask.DebugMode = CmdOptions["DebugMode".ToLower()];
        logMessage("Loaded : DebugMode");
        xTask.TraceAssemblies = null;
        logMessage("Loaded : TraceAssemblies");
        xTask.DebugCom = Convert.ToByte(CmdOptions["DebugCom".ToLower()]);
        logMessage("Loaded : DebugCom");
        xTask.UseNAsm = Convert.ToBoolean(CmdOptions["UseNAsm".ToLower()]);
        logMessage("Loaded : UseNAsm");
        xTask.OutputFilename = CmdOptions["OutputFilename".ToLower()]; ;
        logMessage("Loaded : OutputFilename");
        xTask.EnableLogging = Convert.ToBoolean(CmdOptions["EnableLogging".ToLower()]); ;
        logMessage("Loaded : EnableLogging");
        xTask.EmitDebugSymbols = Convert.ToBoolean(CmdOptions["EmitDebugSymbols".ToLower()]); ;
        logMessage("Loaded : EmitDebugSymbols");
        xTask.IgnoreDebugStubAttribute = Convert.ToBoolean(CmdOptions["IgnoreDebugStubAttribute".ToLower()]);
        logMessage("Loaded : IgnoreDebugStubAttribute");
        xTask.References = References.ToArray();
        logMessage("Loaded : References");

        xTask.OnLogError = logError;
        xTask.OnLogWarning = m => logMessage(String.Format("Warning: {0}", m));
        xTask.OnLogMessage = logMessage;
        xTask.OnLogException = (m) => logError(String.Format("Exception: {0}", m.ToString()));
        xTask.AssemblerLog = "Cosmos.Assembler.log";
        if (xTask.Execute())
        {
          logMessage("Executed OK");
          //          File.WriteAllText(@"e:\compiler.log", "OK");
          return 0;
        }
        else
        {
          logMessage("Errorred");
          //          File.WriteAllText(@"e:\compiler.log", "Errored");
          return 2;
        }
      }
      catch (Exception E)
      {
        logError(String.Format("Error occurred: " + E.ToString()));
        return 1;
      }
    }