public static void Build(Dictionary <string, string> args) { BuilderSettings settings = new BuilderSettings(); AssemblyGeneratorSettings asettings = SettingsManager.GetSettings <AssemblyGeneratorSettings>(); LinkerSettings ls = SettingsManager.GetSettings <LinkerSettings>(); HlCompilerSettings hls = SettingsManager.GetSettings <HlCompilerSettings>(); ArgumentSyntaxParser.Parse( args, settings, asettings, ls, hls ); SettingsManager.SaveSettings(ls); SettingsManager.SaveSettings(asettings); SettingsManager.SaveSettings(hls); List <string> ar = new List <string>(); foreach (string key in args.Keys) { ar.Add('-' + key); string[] vals = args[key].Split(' '); ar.AddRange(vals); } Build(settings, ar.ToArray()); }
public override void Help() { BuilderSettings settings = new BuilderSettings(); AssemblyGeneratorSettings asettings = SettingsManager.GetSettings <AssemblyGeneratorSettings>(); LinkerSettings ls = SettingsManager.GetSettings <LinkerSettings>(); HlCompilerSettings hls = SettingsManager.GetSettings <HlCompilerSettings>(); HelpSubSystem.WriteSubsystem("vis build", settings, asettings, ls, hls); }
private static void Main(string[] args) { if (args.Length == 0) { Console.WriteLine("Arguments:"); Console.WriteLine("\t-c : Compile Main File"); Console.WriteLine("\t-clean : Clean Build Directory"); Console.WriteLine("\t-r : Run Dynamic Commandline"); Console.WriteLine("\t-o : Optimize Assembly"); Console.WriteLine("\t-d : Debug(Make all labels and data sections visible)"); return; } bool compile = args.Any(x => x == "-c"); bool clean = args.Any(x => x == "-clean"); bool run = args.Any(x => x == "-r"); bool optimized = args.Any(x => x == "-o"); bool debug = args.Any(x => x == "-d"); FirstSetup.Start(); LinkerSettings linkerSettings = SettingsManager.GetSettings <LinkerSettings>(); linkerSettings.NoHiddenItems = debug; SettingsManager.SaveSettings(linkerSettings); AssemblyGeneratorSettings gsettings = SettingsManager.GetSettings <AssemblyGeneratorSettings>(); gsettings.Format = "v1"; //Set Raw Assembly Mode SettingsManager.SaveSettings(gsettings); HlCompilerSettings settings = SettingsManager.GetSettings <HlCompilerSettings>(); settings.OptimizeAll = optimized; SettingsManager.SaveSettings(settings); string output = null; output = compile ? VisHelper.Compile(clean) : FirstSetup.DefaultFile; if (run) { if (output == null) { Console.WriteLine($"Output file error."); FirstSetup.End(EndOptions.Default); return; } ConsoleLoop(output); } FirstSetup.End(EndOptions.Default); }
public override void Help() { CpuSettings cpuSettings = SettingsManager.GetSettings <CpuSettings>(); RunnerSettings settings = new RunnerSettings(); HlCompilerSettings hls = SettingsManager.GetSettings <HlCompilerSettings>(); MemorySettings ms = SettingsManager.GetSettings <MemorySettings>(); MemoryBusSettings mbs = SettingsManager.GetSettings <MemoryBusSettings>(); HelpSubSystem.WriteSubsystem("vis run", settings, hls, ms, mbs, cpuSettings); }
public static Cpu Create( IEnumerable <string> args, CpuSettings cpuSettings = null, RunnerSettings settings = null, HlCompilerSettings hls = null, MemorySettings ms = null, MemoryBusSettings mbs = null) { Logger.LogMessage(LoggerSystems.Console, "Creating CPU..."); cpuSettings = cpuSettings ?? SettingsManager.GetSettings <CpuSettings>(); settings = settings ?? new RunnerSettings(); hls = hls ?? SettingsManager.GetSettings <HlCompilerSettings>(); ms = ms ?? SettingsManager.GetSettings <MemorySettings>(); mbs = mbs ?? SettingsManager.GetSettings <MemoryBusSettings>(); ArgumentSyntaxParser.Parse( args.ToArray(), settings, hls, ms, mbs, cpuSettings ); SettingsManager.SaveSettings(hls); SettingsManager.SaveSettings(ms); SettingsManager.SaveSettings(mbs); SettingsManager.SaveSettings(cpuSettings); if (settings.InputFiles == null) { Logger.LogMessage(LoggerSystems.Console, "No Files Specified"); return(null); } MemoryBus bus = CreateBus(mbs); Cpu cpu = new Cpu(bus, cpuSettings.CpuResetAddr, cpuSettings.CpuIntAddr); return(cpu); }
public static void Build(IEnumerable <string> args) { BuilderSettings settings = new BuilderSettings(); AssemblyGeneratorSettings asettings = SettingsManager.GetSettings <AssemblyGeneratorSettings>(); LinkerSettings ls = SettingsManager.GetSettings <LinkerSettings>(); HlCompilerSettings hls = SettingsManager.GetSettings <HlCompilerSettings>(); ArgumentSyntaxParser.Parse( args.ToArray(), settings, asettings, ls, hls ); SettingsManager.SaveSettings(ls); SettingsManager.SaveSettings(asettings); SettingsManager.SaveSettings(hls); Build(settings, args); }
public static void Run(Dictionary <string, string> args) { CpuSettings cpuSettings = SettingsManager.GetSettings <CpuSettings>(); RunnerSettings settings = new RunnerSettings(); HlCompilerSettings hls = SettingsManager.GetSettings <HlCompilerSettings>(); MemorySettings ms = SettingsManager.GetSettings <MemorySettings>(); MemoryBusSettings mbs = SettingsManager.GetSettings <MemoryBusSettings>(); ArgumentSyntaxParser.Parse( args, settings, hls, ms, mbs, cpuSettings ); SettingsManager.SaveSettings(hls); SettingsManager.SaveSettings(ms); SettingsManager.SaveSettings(mbs); SettingsManager.SaveSettings(cpuSettings); if (settings.InputFiles == null) { return; } string origPath = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(settings.WorkingDir); foreach (string f in settings.InputFiles) { string file = Path.GetFullPath(f); file = RunPreRunSteps(settings, file); if (file == null || !File.Exists(file)) { EventManager <ErrorEvent> .SendEvent(new FileNotFoundEvent( file, true )); continue; } Logger.LogMessage(LoggerSystems.Console, "Run File: '{0}'", file); uint[] fileCode = File.ReadAllBytes(file).ToUInt(); if (settings.TrimMemoryToProgram) { ms.Size = ( uint )fileCode.Length; SettingsManager.SaveSettings(ms); } MemoryBus bus = CreateBus(mbs); Cpu cpu = new Cpu(bus, cpuSettings.CpuResetAddr, cpuSettings.CpuIntAddr); if (settings.LoadDebugSymbols) { cpu.SymbolServer.LoadSymbols(file); if (settings.AdditionalSymbols != null) { foreach (string symPath in settings.AdditionalSymbols) { cpu.SymbolServer.LoadSymbols(symPath); } } cpu.SetInterruptHandler(InterruptHandler); } cpu.LoadBinary(fileCode); cpu.Run(); } Directory.SetCurrentDirectory(origPath); }