Esempio n. 1
0
        public AssemblyCode(string assemblyCode)
        {
            StringBuilder builder = new StringBuilder();

            assemblyCode = Regex.Replace(assemblyCode, "[\t ]{2,}", " ");
            assemblyCode = assemblyCode.Replace("\r\n", "\n");
            assemblyCode = assemblyCode.Replace("\t", " ");
            string[] lines = assemblyCode.Split('\n');
            dataStart = 0;
            codeStart = 0;
            int originalLineCounter = 0;
            int reducedLineCounter  = 0;

            while (originalLineCounter < lines.Length)
            {
                string line = LineFormatter.DeleteComments(lines[originalLineCounter]);
                if (line.Replace(" ", "").Equals(""))
                {
                    originalLineCounter++;
                    continue;
                }
                if (LineFormatter.IsStartData(line))
                {
                    dataStart = reducedLineCounter;
                }
                if (LineFormatter.IsStartCode(line))
                {
                    codeStart = reducedLineCounter;
                }
                if (LineFormatter.IsString(line))
                {
                    line = LineFormatter.GetCharacterArray(line);
                    builder.Append(line);
                    reducedLineCounter += line.Split('\n').Length - 1;
                    originalLineCounter++;
                }
                else
                {
                    builder.Append(line);
                    builder.Append('\n');
                    reducedLineCounter++;
                    originalLineCounter++;
                }
            }
            this.lines = builder.ToString().Split('\n');
        }
 private void GetLabels()
 {
     string[] codeLines = assemblyCode.GetCodeLines();
     for (int i = 0; i < codeLines.Length; i++)
     {
         string line = LineFormatter.DeleteComments(codeLines[i]);
         if (labelManager.IsLabelDeclaration(line) && !LineFormatter.IsCommentLine(line))
         {
             labelManager.addLabel(line, instructionCounter);
         }
         else if (!LineFormatter.ReservedWord(line))
         {
             instructionCounter++;
             if (Instruction.isDoubleCycleInstruction(line))
             {
                 instructionCounter++;
             }
         }
     }
 }