From 30676b36a1243de6ccf645921be1a69b393c9da8 Mon Sep 17 00:00:00 2001 From: bird_egop Date: Sun, 13 Apr 2025 19:28:56 +0300 Subject: [PATCH] Updated InstructionHandlerFactory to register XOR handlers and updated test project files --- .../X86/Handlers/InstructionHandlerFactory.cs | 22 ++++++++++++++----- .../RawFromFileDisassemblyTests.cs | 1 + .../X86DisassemblerTests.csproj | 1 + 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/X86Disassembler/X86/Handlers/InstructionHandlerFactory.cs b/X86Disassembler/X86/Handlers/InstructionHandlerFactory.cs index fa1c3dd..7015b5a 100644 --- a/X86Disassembler/X86/Handlers/InstructionHandlerFactory.cs +++ b/X86Disassembler/X86/Handlers/InstructionHandlerFactory.cs @@ -176,15 +176,25 @@ public class InstructionHandlerFactory /// private void RegisterXorHandlers() { - // Add Xor handlers - _handlers.Add(new XorAlImmHandler(_codeBuffer, _decoder, _length)); - _handlers.Add(new XorEaxImmHandler(_codeBuffer, _decoder, _length)); + // 32-bit handlers _handlers.Add(new XorMemRegHandler(_codeBuffer, _decoder, _length)); _handlers.Add(new XorRegMemHandler(_codeBuffer, _decoder, _length)); + _handlers.Add(new XorImmWithRm32Handler(_codeBuffer, _decoder, _length)); + _handlers.Add(new XorImmWithRm32SignExtendedHandler(_codeBuffer, _decoder, _length)); + _handlers.Add(new XorEaxImmHandler(_codeBuffer, _decoder, _length)); - // Add XOR immediate handlers - _handlers.Add(new Xor.XorImmWithRm32Handler(_codeBuffer, _decoder, _length)); - _handlers.Add(new Xor.XorImmWithRm32SignExtendedHandler(_codeBuffer, _decoder, _length)); + // 16-bit handlers + _handlers.Add(new XorRm16R16Handler(_codeBuffer, _decoder, _length)); + _handlers.Add(new XorR16Rm16Handler(_codeBuffer, _decoder, _length)); + _handlers.Add(new XorAxImm16Handler(_codeBuffer, _decoder, _length)); + _handlers.Add(new XorImmWithRm16Handler(_codeBuffer, _decoder, _length)); + _handlers.Add(new XorImmWithRm16SignExtendedHandler(_codeBuffer, _decoder, _length)); + + // 8-bit handlers + _handlers.Add(new XorRm8R8Handler(_codeBuffer, _decoder, _length)); + _handlers.Add(new XorR8Rm8Handler(_codeBuffer, _decoder, _length)); + _handlers.Add(new XorAlImmHandler(_codeBuffer, _decoder, _length)); + _handlers.Add(new XorImmWithRm8Handler(_codeBuffer, _decoder, _length)); } /// diff --git a/X86DisassemblerTests/RawFromFileDisassemblyTests.cs b/X86DisassemblerTests/RawFromFileDisassemblyTests.cs index 06bc20c..84d00f0 100644 --- a/X86DisassemblerTests/RawFromFileDisassemblyTests.cs +++ b/X86DisassemblerTests/RawFromFileDisassemblyTests.cs @@ -16,6 +16,7 @@ public class RawFromFileDisassemblyTests(ITestOutputHelper output) [InlineData("nop_tests.csv")] [InlineData("xchg_tests.csv")] [InlineData("sub_tests.csv")] + [InlineData("xor_tests.csv")] [InlineData("segment_override_tests.csv")] public void RunTests(string file) { diff --git a/X86DisassemblerTests/X86DisassemblerTests.csproj b/X86DisassemblerTests/X86DisassemblerTests.csproj index 27605e7..35ee786 100644 --- a/X86DisassemblerTests/X86DisassemblerTests.csproj +++ b/X86DisassemblerTests/X86DisassemblerTests.csproj @@ -35,6 +35,7 @@ +