From becbf36711351c32e96b3d80b8d6e7af8b0fd815 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 18 Jul 2020 00:16:51 +0200 Subject: [PATCH] UserspaceEmulator: Fix XCHG_AX_reg16 overwriting entire EAX This instruction should only write to the lower 16 bits (AX) --- DevTools/UserspaceEmulator/SoftCPU.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DevTools/UserspaceEmulator/SoftCPU.cpp b/DevTools/UserspaceEmulator/SoftCPU.cpp index b9a215dea1..73323d322d 100644 --- a/DevTools/UserspaceEmulator/SoftCPU.cpp +++ b/DevTools/UserspaceEmulator/SoftCPU.cpp @@ -2138,7 +2138,7 @@ void SoftCPU::XCHG_AX_reg16(const X86::Instruction& insn) { auto temp = gpr16(insn.reg16()); gpr16(insn.reg16()) = eax(); - set_eax(temp); + set_ax(temp); } void SoftCPU::XCHG_EAX_reg32(const X86::Instruction& insn)