Esempio n. 1
0
 public void FwdB(ExecuteStage e, ExecuteRegister E, MemoryStage m, MemoryRegister M, WritebackRegister W)
 {
     int[] Set = new int[] { E.dstE, M.dstM, M.dstE, W.dstM, W.dstE };
     int[] Val = new int[] { e.valE, m.valM, M.valE, W.valM, W.valE };
     for (int i = 0; i < 5; i++)
         if (Set[i] == srcB)
         {
             valB = Val[i];
             return;
         }
     valB = rf.Read(srcB);
 }
Esempio n. 2
0
 public void SelFwdA(ExecuteStage e, ExecuteRegister E, MemoryStage m, MemoryRegister M, WritebackRegister W)
 {
     if (icode == ConstVar.IJXX || icode == ConstVar.ICALL)
         valA = D.valP;
     else
     {
         int[] Set = new int[] { E.dstE, M.dstM, M.dstE, W.dstM, W.dstE };
         int[] Val = new int[] { e.valE, m.valM, M.valE, W.valM, W.valE };
         for (int i = 0; i < 5; i++)
             if (Set[i] == srcA)
             {
                 valA = Val[i];
                 return;
             }
         valA = rf.Read(srcA);
     }
 }
Esempio n. 3
0
        public void Init(string inPath, string outPath = "output.txt")
        {
            Mem = new Memory(CodeStart + CodeMaxLen);
            StreamReader IStream = new StreamReader(inPath);
            BinaryReader reader = new BinaryReader(IStream.BaseStream);
            CodeLen = reader.Read(Mem.Data, CodeStart, CodeMaxLen);
            IStream.Close();

            writer = File.CreateText(outPath);

            Circle = 0;

            CL = new ControlLogic();
            CC = new ControlCode();
            rf = new Registerfile();

            f = new FetchStage();
            d = new DecodeStage();
            e = new ExecuteStage();
            m = new MemoryStage();

            F = new FetchRegister();
            D = new DecodeRegister();
            E = new ExecuteRegister();
            M = new MemoryRegister();
            W = new WritebackRegister();

            F.predPC = CodeStart;
            rf.Data[ConstVar.RESP] = CodeStart;

            f.F = F;
            f.Mem = Mem;
            d.D = D;
            d.rf = rf;
            e.E = E;
            e.CC = CC;
            m.M = M;
            m.Mem = Mem;

            CL.set(D, d, E, e, M);
        }
Esempio n. 4
0
 public void set(DecodeRegister D, DecodeStage d, ExecuteRegister E, ExecuteStage e, MemoryRegister M)
 {
     this.D = D;
     this.E = E;
     this.M = M;
     this.d = d;
     this.e = e;
 }
Esempio n. 5
0
 public void SelectPC(MemoryRegister M, WritebackRegister W)
 {
     if (M.icode == ConstVar.IJXX && !M.Bch)
         pc = M.valA;
     else
         if (W.icode == ConstVar.IRET)
             pc = W.valM;
         else
             pc = F.predPC;
 }