Esempio n. 1
0
 public void ParseError(string msg, params object[] args)
 {
     if (lastFileNamePrinted != FileName)
     {
         lastFileNamePrinted = FileName;
         Console.WriteLine("File {0}:", lastFileNamePrinted);
     }
     AssemblerErrors.AddError(FileName, String.Format(msg, args));
 }
Esempio n. 2
0
        private void errorHandler(object sendingProcess, DataReceivedEventArgs outLine)
        {
            // parse the line of error output; it has the following format
            //      FILENAME:LINENUMBER: ERROR MESSAGE
            string line = outLine.Data;

            if (line == null)
            {
                return;
            }
            int lineNum;
            // look for 2 consecutive colons separated only by decimal digits
            int colon1pos = -1;
            int colon2pos = -1;

            do
            {
                colon2pos = line.IndexOf(':', colon1pos + 1);
                if (colon2pos <= colon1pos)
                {
                    return;
                }
                lineNum = 0;
                for (int i = colon1pos + 1; i < colon2pos; i++)
                {
                    char c = line[i];
                    if (!Char.IsDigit(c))
                    {
                        colon1pos = colon2pos;
                        break;
                    }
                    lineNum = lineNum * 10 + (int)c - (int)'0';
                }
            } while (colon1pos == colon2pos);
            string message = line.Substring(colon2pos + 1);

            AssemblerErrors.AddError(fileName, lineNum, 0, message);
            errorCnt++;
        }
Esempio n. 3
0
        // methods

        private void initialize()
        {
            // ArmInstructionTemplate.ForceInitialization();
            AssemblerErrors.Initialize();
            FileInfoTable = new List <ArmFileInfo>();
            for (int i = 0; i < fileList.Count; i++)
            {
                FileInfoTable.Add(null);
            }
            for (int i = 0; i < passComplete.Length; i++)
            {
                passComplete[i] = false;
            }
            //tempFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            tempFolder    = System.IO.Path.GetTempPath();
            listing       = new List <string>(128);
            symTabListing = new List <string>(32);
            assemblerProg = System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath);

            string assemblerExecutableName;

            if (ARMSim.ARMSimUtil.RunningOnWindows)
            {
                assemblerExecutableName = "arm-none-eabi-as.exe";
            }
            else
            {
                assemblerExecutableName = "arm-none-eabi-as";
            }

            assemblerProg = Path.Combine(assemblerProg, assemblerExecutableName);
            if (!File.Exists(assemblerProg))
            {
                throw new AsmException("Cannot access the Gnu Assembler at path " + assemblerProg);
            }
        }