예제 #1
0
 public CpuInstanceBuilder(uint resetAddr, uint intAddr)
 {
     m_Importer = new ApiImporter();
     ImporterSystem.Add(m_Importer);
     m_ResetAddr     = resetAddr;
     m_InterruptAddr = intAddr;
     m_Peripherals   = new List <Peripheral>();
 }
예제 #2
0
        public static void Build(BuilderSettings settings, IEnumerable <string> importerArgs)
        {
            TextImporter.ParseImporterArgs(importerArgs.ToArray());
            ImporterSystem.Add(new InstructionDataImporter(), new LinkerImporter(), new RawFileImporter(), new StringFileImporter());

            foreach (PeripheralImporter peripheralImporter in Peripheral.GetPeripheralImporters())
            {
                //Pretend we are starting the CPU to register all external Importers.
                peripheralImporter.GetPeripherals(new List <Peripheral>());
            }

            if (settings.InputFiles == null)
            {
                return;
            }

            foreach (string f in settings.InputFiles)
            {
                string original = Path.GetFullPath(f);
                string file     = original;

                if (!File.Exists(file))
                {
                    EventManager <ErrorEvent> .SendEvent(
                        new FileNotFoundEvent( Path.GetFullPath(file), true )
                        );

                    continue;
                }

                foreach ((string stepName, BuildSteps step) in settings.InstanceBuildSteps)
                {
                    Logger.LogMessage(
                        LoggerSystems.Console,
                        $"Running Build Step '{stepName}'"
                        );

                    string newFile = step(original, file);

                    if (settings.CleanBuildOutput && file != original)
                    {
                        File.Delete(file);
                    }

                    Logger.LogMessage(
                        LoggerSystems.Console,
                        $"'{file}' => '{newFile}'"
                        );

                    file = newFile;
                }

                Logger.LogMessage(LoggerSystems.Console, $"Steps Completed! File: '{original}' => '{file}'");
            }
        }
예제 #3
0
 public SIMDIntrinsics()
 {
     m_Importer = new ApiImporter();
     ImporterSystem.Add(m_Importer);
     m_Start = 0xFFFF9000;
 }