0
mirror of https://github.com/sampletext32/ParkanPlayground.git synced 2025-07-02 04:50:27 +03:00

Added 16-bit ADD handlers for r/m16, imm16 and r/m16, imm8 instructions

This commit is contained in:
bird_egop
2025-04-17 01:43:45 +03:00
parent 3fc0ebf1d5
commit dd97a00c2b
3 changed files with 182 additions and 12 deletions

View File

@ -292,20 +292,22 @@ public class InstructionHandlerFactory
/// </summary>
private void RegisterAddHandlers()
{
// Add ADD handlers
_handlers.Add(new AddR32Rm32Handler(_decoder));
_handlers.Add(new AddRm32R32Handler(_decoder));
_handlers.Add(new AddEaxImmHandler(_decoder));
// Add ADD register-to-register handlers (32-bit)
_handlers.Add(new AddR32Rm32Handler(_decoder)); // ADD r32, r/m32 (opcode 03)
_handlers.Add(new AddRm32R32Handler(_decoder)); // ADD r/m32, r32 (opcode 01)
_handlers.Add(new AddEaxImmHandler(_decoder)); // ADD EAX, imm32 (opcode 05)
// Add 8-bit ADD handlers
_handlers.Add(new AddRm8R8Handler(_decoder)); // ADD r/m8, r8 (opcode 00)
_handlers.Add(new AddR8Rm8Handler(_decoder)); // ADD r8, r/m8 (opcode 02)
_handlers.Add(new AddAlImmHandler(_decoder)); // ADD AL, imm8 (opcode 04)
// Add ADD register-to-register handlers (8-bit)
_handlers.Add(new AddRm8R8Handler(_decoder)); // ADD r/m8, r8 (opcode 00)
_handlers.Add(new AddR8Rm8Handler(_decoder)); // ADD r8, r/m8 (opcode 02)
_handlers.Add(new AddAlImmHandler(_decoder)); // ADD AL, imm8 (opcode 04)
// Add ADD immediate handlers from ArithmeticImmediate namespace
_handlers.Add(new AddImmToRm8Handler(_decoder));
_handlers.Add(new AddImmToRm32Handler(_decoder));
_handlers.Add(new AddImmToRm32SignExtendedHandler(_decoder));
// Add ADD immediate handlers
_handlers.Add(new AddImmToRm8Handler(_decoder)); // ADD r/m8, imm8 (opcode 80 /0)
_handlers.Add(new AddImmToRm16Handler(_decoder)); // ADD r/m16, imm16 (opcode 81 /0 with 0x66 prefix)
_handlers.Add(new AddImmToRm16SignExtendedHandler(_decoder)); // ADD r/m16, imm8 (opcode 83 /0 with 0x66 prefix)
_handlers.Add(new AddImmToRm32Handler(_decoder)); // ADD r/m32, imm32 (opcode 81 /0)
_handlers.Add(new AddImmToRm32SignExtendedHandler(_decoder)); // ADD r/m32, imm8 (opcode 83 /0)
}
/// <summary>