Ejemplo n.º 1
0
        public bool Build(IProject project)
        {
            AssemblerOutput output;

            using (IAssembler assembler = _assemblerFactory.CreateAssembler())
            {
                AssemblerHelper.SetupAssembler(assembler, _inputFile, _outputFile, project.ProjectDirectory,
                                               project.IncludeDirs);

                string outputString;
                switch (_stepType)
                {
                case BuildStepType.All:
                    outputString =
                        assembler.Assemble(AssemblyFlags.Normal | AssemblyFlags.SymbolTable | AssemblyFlags.List);
                    output = new AssemblerOutput(outputString,
                                                 !outputString.Contains("error") && !outputString.Contains("Couldn't"));
                    project.BuildSystem.ProjectOutput = _outputFile;
                    project.BuildSystem.ListOutput    = _outputFile.ChangeExtension("lst");
                    project.BuildSystem.LabelOutput   = _outputFile.ChangeExtension("lab");
                    break;

                case BuildStepType.Assemble:
                    outputString = assembler.Assemble(AssemblyFlags.Normal);
                    output       = new AssemblerOutput(outputString,
                                                       !outputString.Contains("error") && !outputString.Contains("Couldn't"));
                    project.BuildSystem.ProjectOutput = _outputFile;
                    break;

                case BuildStepType.Listing:
                    outputString = assembler.Assemble(AssemblyFlags.Normal | AssemblyFlags.List);
                    output       = new AssemblerOutput(outputString,
                                                       !outputString.Contains("error") && !outputString.Contains("Couldn't"));
                    project.BuildSystem.ListOutput = _outputFile.ChangeExtension("lst");
                    break;

                case BuildStepType.SymbolTable:
                    outputString = assembler.Assemble(AssemblyFlags.Normal | AssemblyFlags.SymbolTable);
                    output       = new AssemblerOutput(outputString,
                                                       !outputString.Contains("error") && !outputString.Contains("Couldn't"));
                    project.BuildSystem.LabelOutput = _outputFile.ChangeExtension("lab");
                    break;

                default:
                    throw new InvalidOperationException("Unknown step type");
                }
            }
            _outputText = output.OutputText;
            return(output.Succeeded);
        }
Ejemplo n.º 2
0
        public AssemblerOutput AssembleFile(FilePath inputFile, FilePath outputFile, FilePath originalDir,
                                            IEnumerable <FilePath> includeDirs, AssemblyFlags flags = AssemblyFlags.Normal)
        {
            IAssembler assembler = _assemblerFactory.CreateAssembler();

            AssemblerHelper.SetupAssembler(assembler, inputFile, outputFile, originalDir, includeDirs);
            string rawOutput = assembler.Assemble(flags);

            // lets write it to the output window so the user knows whats happening
            string outputText = string.Format(OutputFormatting, Path.GetFileName(inputFile), inputFile, rawOutput);

            bool errors = outputText.Contains("error");

            OnAssemblerFileFinished(this, new AssemblyFinishFileEventArgs(inputFile, outputFile, outputText, !errors));

            // tell if the assembly was successful
            return(new AssemblerOutput(outputText, !errors));
        }