@Test public void shouldSimulateStoreWordWithoutHazard() throws UnreachableLabelException, InvalidInstructionException { Instruction first = new InstructionIType("sw $t0, 15($s1)"); Datapath datapath = new Datapath(Arrays.asList(first), new HashMap<String, Integer>()); rBank.setValue("t0", 7); // First Stage datapath.moveForward(); // Second Stage datapath.moveForward(); assertEquals(new Integer(0), datapath.getIdEx().getReadData1()); assertEquals(new Integer(15), datapath.getIdEx().getReadData2()); // Third Stage datapath.moveForward(); // o valor do registrador ser� registrado no endere�o 15 da mem�ria. assertEquals( 15, datapath .getExMem() .getALUOut()); // $s1 estava como zero, por isso a soma � 15 (que � a constante) assertTrue(datapath.getExMem().isMemWrite()); assertFalse(datapath.getExMem().isMemRead()); assertFalse(datapath.getExMem().isRegWrite()); // Fourth Stage datapath.moveForward(); assertEquals(7, memory.read(15)); // grava o valor do registrador na mem�ria }