From 430c60111e5676ae4767b1d5a4883fe4bd7eb8a3 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Tue, 31 Oct 2023 22:42:39 -0400 Subject: [PATCH] CMP doesn't write. --- InstructionSets/x86/Implementation/PerformImplementation.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/InstructionSets/x86/Implementation/PerformImplementation.hpp b/InstructionSets/x86/Implementation/PerformImplementation.hpp index 68844f1e6..9b97b161e 100644 --- a/InstructionSets/x86/Implementation/PerformImplementation.hpp +++ b/InstructionSets/x86/Implementation/PerformImplementation.hpp @@ -862,6 +862,7 @@ void call_far(InstructionT &instruction, const Source source_segment = instruction.data_segment(); + // TODO: preauthorise reads. const uint16_t offset = memory.template access(source_segment, source_address); source_address += 2; const uint16_t segment = memory.template access(source_segment, source_address); @@ -1672,7 +1673,7 @@ template < case Operation::ADD: Primitive::add(destination_rmw(), source_r(), status); break; case Operation::SBB: Primitive::sub(destination_rmw(), source_r(), status); break; case Operation::SUB: Primitive::sub(destination_rmw(), source_r(), status); break; - case Operation::CMP: Primitive::sub(destination_rmw(), source_r(), status); return; + case Operation::CMP: Primitive::sub(destination_r(), source_r(), status); return; case Operation::TEST: Primitive::test(destination_r(), source_r(), status); return; case Operation::MUL: Primitive::mul(pair_high(), pair_low(), source_r(), status); return;