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 @@ +