public void Assemble() { if (Options.InputFiles.Count == 0) { return; } if (Options.PrintVersion && DisplayingBanner != null) { Console.WriteLine(DisplayingBanner.Invoke(this, true)); if (Options.ArgsPassed > 1) { Console.WriteLine("Additional options ignored."); } return; } if (Options.Quiet) { Console.SetOut(TextWriter.Null); } if (DisplayingBanner != null) { Console.WriteLine(DisplayingBanner.Invoke(this, false)); } DateTime asmTime = DateTime.Now; var source = Preprocess(); if (Log.HasErrors == false) { FirstPass(source); if (Log.HasErrors == false) { SecondPass(); if (Log.HasErrors == false) { SaveOutput(); ToListing(); } } } PrintStatus(asmTime); }
public void Assemble() { if (Assembler.Options.PrintVersion && DisplayingBanner != null) { Console.WriteLine(DisplayingBanner.Invoke(this, true)); if (Assembler.Options.ArgsPassed > 1) { Console.WriteLine("Additional options ignored."); } return; } if (Assembler.Options.InputFiles.Count == 0) { return; } if (Assembler.Options.Quiet) { Console.SetOut(TextWriter.Null); } if (DisplayingBanner != null) { Console.WriteLine(DisplayingBanner.Invoke(this, false)); } var stopwatch = new Stopwatch(); stopwatch.Start(); var source = Preprocess(); if (Assembler.Log.HasErrors == false) { DoPasses(source); if (Assembler.Log.HasErrors == false) { SaveOutput(); ToListing(); } } stopwatch.Stop(); PrintStatus(stopwatch); }
void ToListing() { if (string.IsNullOrEmpty(Assembler.Options.ListingFile) && string.IsNullOrEmpty(Assembler.Options.LabelFile)) { return; } string listing; if (!string.IsNullOrEmpty(Assembler.Options.ListingFile)) { listing = GetListing(); using (StreamWriter writer = new StreamWriter(Assembler.Options.ListingFile)) { var exec = Path.GetFileName(System.Reflection.Assembly.GetEntryAssembly().Location); var argstring = string.Join(" ", Assembler.Options.Arguments); var bannerstring = DisplayingBanner != null?DisplayingBanner.Invoke(this, false) : string.Empty; writer.WriteLine(";; {0}", bannerstring.Split(new char[] { '\n', '\r' }).First()); writer.WriteLine(";; {0} {1}", exec, argstring); writer.WriteLine(";; {0:f}\n", DateTime.Now); writer.WriteLine(";; Input files:\n"); _sourceHandler.FileRegistry.ToList().ForEach(f => writer.WriteLine(";; {0}", f)); writer.WriteLine(); writer.Write(listing); } } if (!string.IsNullOrEmpty(Assembler.Options.LabelFile)) { listing = GetLabelsAndVariables(); using (StreamWriter writer = new StreamWriter(Assembler.Options.LabelFile, false)) { writer.WriteLine(";; Input files:\n"); _sourceHandler.FileRegistry.ToList().ForEach(f => writer.WriteLine(";; {0}", f)); writer.WriteLine(); writer.WriteLine(listing); } } }