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); }