Пример #1
0
        public void Execute()
        {
            _alu.Data1 = IdEx.ReadData1;
            _alu.Data2 = IdEx.AluSrc ? BinaryConverter.BitsToInt(IdEx.Offset) : IdEx.ReadData2;
            _alu.Compute(IdEx.AluOp);

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

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

            ExMem.PcJump    = IdEx.Pc + (uint)BinaryConverter.BitsToInt(BitwiseOperations.LogicalShl(IdEx.Offset, 2));
            ExMem.ZeroFlag  = _alu.ZeroFlag;
            ExMem.Result    = _alu.Result;
            ExMem.ReadData2 = IdEx.ReadData2;
            ExMem.RegDest   = IdEx.RegDest ? IdEx.Rd : IdEx.Rt;
        }