private void ProcessCode() { instructionCounter = instructions.Count; string[] codeLines = assemblyCode.GetCodeLines(); for (int i = 0; i < codeLines.Length; i++) { if (!labelManager.IsLabelDeclaration(codeLines[i]) && !LineFormatter.ReservedWord(codeLines[i]) && !LineFormatter.IsCommentLine(codeLines[i])) { string line = LineFormatter.FormatCodeLine(codeLines[i]); try { Instruction instruction = InstructionFactory .createInstruction(line, labelManager.labels, variableManager.variablesValues); instructions.Add(instruction); instructionCounter++; if (instruction.GetType() == typeof(Pop1Instruction)) { instructions.Add( InstructionFactory.createInstruction( "2" + line, labelManager.labels, variableManager.variablesValues)); instructionCounter++; } else if (instruction.GetType() == typeof(Ret1Instruction)) { instructions.Add( InstructionFactory.createInstruction( "2" + line, labelManager.labels, variableManager.variablesValues)); instructionCounter++; } } catch (Exception ex) { Console.WriteLine(); Console.WriteLine("ERROR EN LINEA: " + line); Console.WriteLine(); Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); Console.ReadKey(); } } } }
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++; } } } }