public static Instruction Parse(List <AssemblyInstruction> instructions, String line) { AssemblyInstruction instruction = AssemblyParser.GetAssemblyInstructionFromString(instructions, line); String[] parameters = GetParametersString(line); Register destination, register1, register2; ushort immediate; switch (instruction.Type) { case InstructionType.R: destination = AssemblyParser.GetRegister(parameters, 0); register1 = AssemblyParser.GetRegister(parameters, 1); register2 = AssemblyParser.GetRegister(parameters, 2); return(new RInstruction(instruction, line, destination, register1, register2)); case InstructionType.I: register1 = AssemblyParser.GetRegister(parameters, 0); register2 = AssemblyParser.GetRegister(parameters, 1); immediate = GetValue(parameters, 2); return(new IInstruction(instruction, line, register1, register2, immediate)); case InstructionType.J: immediate = GetValue(parameters, 0); return(new JInstruction(instruction, line, immediate)); } return(null); }
private void LoadFromFile() { using (StreamReader reader = new StreamReader("code.txt")) { while (!reader.EndOfStream) { String line = reader.ReadLine(); Instruction i = AssemblyParser.Parse(instructions, line); Instructions.Add(i); int var = i.InstructionCode; } } }