Exemple #1
0
void executeStage(pipelineForward* forward, statusType stat, control* con)
{
  // DR NORRIS SAID THIS IS OK
  unsigned int valE = executeAlu(stat); 
  unsigned int Cnd = getCnd();
  unsigned int dstE = getDstE(Cnd);

  forward->e_valE = valE;
  forward->e_dstE = dstE;

  con->E_icode = E.icode;
  con->E_dstM = E.dstM;
  con->e_Cnd = Cnd;

  // determines if the memory stage should be bubbled
  bool M_bubble = 
    (stat.m_stat == SADR || stat.m_stat == SINS || stat.m_stat == SHLT) ||
    (stat.W_stat == SADR || stat.W_stat == SINS || stat.W_stat == SHLT);

  if(M_bubble)
  {
    clearMregister();
  }
  else
  {
    updateMregister(E.stat, E.icode, Cnd, valE, E.valA, dstE, E.dstM);  
  }
}
Exemple #2
0
/* Function Name: clearRegisters
 * Purpose:       Clears F, D, W, E and M registers
 *
 * Parameters:    none
 * Returns:       none
 * Modifies:      F, D, W, E and M registers
 */
void clearRegisters()
{
   //clears the registers
   clearFregister();
   clearDregister();
   clearWregister();
   clearEregister();
   clearMregister();
}
Exemple #3
0
void initialize(){
    initializeFuncPtrArray();
    clearMemory();
    clearRegisters();
    clearFregister();
    clearDregister();
    clearEregister();
    clearMregister();
    clearWregister();
}
Exemple #4
0
void initialize()
{
    clearMemory();
    clearRegisters();
    clearFregister();
    clearDregister();
    clearEregister();
    clearMregister();
    clearWregister();

    initInstructions();
}
Exemple #5
0
/* initialize
 *      Initializes a bunch of stuff.
 * Params:   none
 * Returns:  void
 * Modifies: W_valE, W_dstE
 */
void initialize() {
    clockCount = 0;
    stop = FALSE;
    
    initFwdStruct();    
    initializeFuncPtrArray();
    initializeCC();
    
    clearMemory();
    clearRegisters();
    
    clearFregister();
    clearDregister();
    clearEregister();
    clearMregister();
    clearWregister();
}
Exemple #6
0
void executeStage(pipelineForward* forward, statusType stat)
{
  // DR NORRIS SAID THIS IS OK
  unsigned int valE = executeAlu(stat); 
  unsigned int Cnd = getCnd();
  unsigned int dstE = getDstE(Cnd);

  forward->e_valE = valE;
  forward->e_dstE = dstE;

  bool M_bubble = 
    (stat.m_stat == SADR || stat.m_stat == SINS || stat.m_stat == SHLT) ||
    (stat.W_stat == SADR || stat.W_stat == SINS || stat.W_stat == SHLT);

  if(M_bubble)
  {
    clearMregister();
  }
  else
  {
    updateMregister(E.stat, E.icode, Cnd, valE, E.valA, dstE, E.dstM);  
  }
}