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); } }
/* 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(); }
void initialize(){ initializeFuncPtrArray(); clearMemory(); clearRegisters(); clearFregister(); clearDregister(); clearEregister(); clearMregister(); clearWregister(); }
void initialize() { clearMemory(); clearRegisters(); clearFregister(); clearDregister(); clearEregister(); clearMregister(); clearWregister(); initInstructions(); }
/* 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(); }
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); } }