From 74b2508f918ea76dce361f54b714eaeb675dbc45 Mon Sep 17 00:00:00 2001 From: Recolic Keghart <root@recolic.net> Date: Sun, 29 Dec 2019 18:01:26 +0800 Subject: [PATCH] > Manual commit: Finished diff test U201614531 recolic Linux RECOLICPC 5.4.6-arch3-1 #1 SMP PREEMPT Tue, 24 Dec 2019 04:36:53 +0000 x86_64 GNU/Linux 18:01:25 up 23:35, 1 user, load average: 3.32, 3.11, 2.01 fea1bdde59a33e51ea8aace1826b8351a56a154 --- nemu/src/monitor/diff-test/diff-test.cc | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/nemu/src/monitor/diff-test/diff-test.cc b/nemu/src/monitor/diff-test/diff-test.cc index 2c29044..75ebdc0 100644 --- a/nemu/src/monitor/diff-test/diff-test.cc +++ b/nemu/src/monitor/diff-test/diff-test.cc @@ -69,7 +69,22 @@ void difftest_step(uint32_t eip) { ref_difftest_exec(1); ref_difftest_getregs(&ref_r); - // TODO: Check the registers state with the reference design. + // Check the registers state with the reference design. // Set `nemu_state` to `NEMU_ABORT` if they are not the same. - TODO(); + #define RLIB_IMPL_REG_DIFF(which) (ref_r.which xor cpu.which) + if( + RLIB_IMPL_REG_DIFF(eax) or + RLIB_IMPL_REG_DIFF(ecx) or + RLIB_IMPL_REG_DIFF(edx) or + RLIB_IMPL_REG_DIFF(ebx) or + RLIB_IMPL_REG_DIFF(esp) or + RLIB_IMPL_REG_DIFF(ebp) or + RLIB_IMPL_REG_DIFF(esi) or + RLIB_IMPL_REG_DIFF(edi) or + RLIB_IMPL_REG_DIFF(eip) or + true + ) { + nemu_state = NEMU_ABORT; + } + #undef RLIB_IMPL_REG_DIFF } -- GitLab