예제 #1
0
        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;
                }
            }
        }