Пример #1
0
        public void Decode()
        {
            if (IfId.Instruction == null)
            {
                return;
            }
            var instruction = new Instruction(IfId.Instruction);

            RegisterFile.ReadReg1 = BinaryConverter.BitsToInt(instruction.Rs);
            RegisterFile.ReadReg2 = BinaryConverter.BitsToInt(instruction.Rt);

            _controlUnit.Control(instruction);

            // Execution Stage Control lines
            IdEx.RegDest = _controlUnit.RegDest;
            IdEx.AluSrc  = _controlUnit.AluSrc;
            IdEx.AluOp   = _controlUnit.AluOp;

            // Memory access Stage control lines
            IdEx.Branch   = _controlUnit.Branch;
            IdEx.MemRead  = _controlUnit.MemRead;
            IdEx.MemWrite = _controlUnit.MemWrite;

            // Write back Stage control lines
            IdEx.RegWrite = _controlUnit.RegWrite;
            IdEx.MemToReg = _controlUnit.MemToReg;

            IdEx.Pc        = IfId.Pc;
            IdEx.ReadData1 = RegisterFile.ReadData1;
            IdEx.ReadData2 = RegisterFile.ReadData2;
            IdEx.Rd        = instruction.I15_11;
            IdEx.Rt        = instruction.I20_16;
            IdEx.Offset    = BitwiseOperations.ExtendSign(instruction.I15_0);
        }