void AssertReferenceOutput(string testName, ComplianceCPUSimilator sim) { var dataSectionAddress = DataSectionAddress() >> 2; var referenceOutput = ReferenceOutput(testName); AssertMemory(sim, dataSectionAddress, referenceOutput); }
ComplianceCPUSimilator Run() { var dataMarkerAddress = DataMarkerAddress(); var sim = new ComplianceCPUSimilator(dataMarkerAddress); sim.ClockCycle(); sim.RunAll(Instructions()); return(sim); }
protected void AssertMemory(ComplianceCPUSimilator sim, int testAddress, uint[] expectedValues) { for (var i = 0; i < expectedValues.Length; i++) { var actualWordAddress = testAddress + i; var expected = expectedValues[i]; var actual = sim.MemoryBlock[actualWordAddress]; if (expected != actual) { throw new AssertFailedException($"Expected:<0x{expected:X8}>. Actual:<0x{actual:X8}>. Failed for value at {i} (0x{(actualWordAddress * 4):X8})"); } } }