public void ID() throws RAWException, IrregularWriteOperationException, IrregularStringOfBitsException { // if source registers are valid passing their own values into temporary registers Register rs = cpu.getRegister(params.get(RS_FIELD)); Register rt = cpu.getRegister(params.get(RT_FIELD)); if (rs.getWriteSemaphore() > 0 || rt.getWriteSemaphore() > 0) throw new RAWException(); TR[RS_FIELD] = rs; TR[RT_FIELD] = rt; // locking the destination register cpu.getLO().incrWriteSemaphore(); cpu.getHI().incrWriteSemaphore(); }