0
mirror of https://github.com/sampletext32/ParkanPlayground.git synced 2025-05-19 03:41:18 +03:00

Reorganized instruction handlers into more descriptive folders (ArithmeticImmediate and ArithmeticUnary)

This commit is contained in:
bird_egop 2025-04-12 23:46:05 +03:00
parent f658f4384c
commit 016e1ee54f
26 changed files with 52 additions and 55 deletions

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group1;
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
/// <summary>
/// Handler for ADC r/m32, imm32 instruction (0x81 /2)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group1;
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
/// <summary>
/// Handler for ADC r/m32, imm8 (sign-extended) instruction (0x83 /2)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group1;
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
/// <summary>
/// Handler for ADD r/m32, imm32 instruction (0x81 /0)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group1;
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
/// <summary>
/// Handler for ADD r/m32, imm8 (sign-extended) instruction (0x83 /0)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group1;
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
/// <summary>
/// Handler for ADD r/m8, imm8 instruction (0x80 /0)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group1;
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
/// <summary>
/// Handler for AND r/m32, imm32 instruction (0x81 /4)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group1;
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
/// <summary>
/// Handler for AND r/m32, imm8 (sign-extended) instruction (0x83 /4)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group1;
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
/// <summary>
/// Handler for CMP r/m32, imm32 instruction (0x81 /7)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group1;
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
/// <summary>
/// Handler for CMP r/m32, imm8 (sign-extended) instruction (0x83 /7)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group1;
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
/// <summary>
/// Handler for OR r/m32, imm32 instruction (0x81 /1)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group1;
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
/// <summary>
/// Handler for OR r/m32, imm8 (sign-extended) instruction (0x83 /1)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group1;
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
/// <summary>
/// Handler for OR r/m8, imm8 instruction (0x80 /1)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group1;
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
/// <summary>
/// Handler for SBB r/m32, imm32 instruction (0x81 /3)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group1;
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
/// <summary>
/// Handler for SBB r/m32, imm8 (sign-extended) instruction (0x83 /3)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group1;
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
/// <summary>
/// Handler for SUB r/m32, imm32 instruction (0x81 /5)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group1;
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
/// <summary>
/// Handler for SUB r/m32, imm8 (sign-extended) instruction (0x83 /5)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group3;
namespace X86Disassembler.X86.Handlers.ArithmeticUnary;
/// <summary>
/// Handler for DIV r/m32 instruction (0xF7 /6)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group3;
namespace X86Disassembler.X86.Handlers.ArithmeticUnary;
/// <summary>
/// Handler for IDIV r/m32 instruction (0xF7 /7)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group3;
namespace X86Disassembler.X86.Handlers.ArithmeticUnary;
/// <summary>
/// Handler for IMUL r/m32 instruction (0xF7 /5)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group3;
namespace X86Disassembler.X86.Handlers.ArithmeticUnary;
/// <summary>
/// Handler for MUL r/m32 instruction (0xF7 /4)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group3;
namespace X86Disassembler.X86.Handlers.ArithmeticUnary;
/// <summary>
/// Handler for NEG r/m32 instruction (0xF7 /3)

View File

@ -1,4 +1,4 @@
namespace X86Disassembler.X86.Handlers.Group3;
namespace X86Disassembler.X86.Handlers.ArithmeticUnary;
/// <summary>
/// Handler for NOT r/m32 instruction (0xF7 /2)

View File

@ -1,7 +1,7 @@
using X86Disassembler.X86.Handlers.ArithmeticImmediate;
using X86Disassembler.X86.Handlers.ArithmeticUnary;
using X86Disassembler.X86.Handlers.Call;
using X86Disassembler.X86.Handlers.FloatingPoint;
using X86Disassembler.X86.Handlers.Group1;
using X86Disassembler.X86.Handlers.Group3;
using X86Disassembler.X86.Handlers.Jump;
using X86Disassembler.X86.Handlers.Mov;
using X86Disassembler.X86.Handlers.Pop;
@ -44,8 +44,8 @@ public class InstructionHandlerFactory
private void RegisterHandlers()
{
// Register group handlers
RegisterGroup3Handlers();
RegisterGroup1Handlers();
RegisterArithmeticUnaryHandlers();
RegisterArithmeticImmediateHandlers();
// Register specific instruction handlers
_handlers.Add(new Int3Handler(_codeBuffer, _decoder, _length));
@ -73,9 +73,33 @@ public class InstructionHandlerFactory
}
/// <summary>
/// Registers all Group1 instruction handlers
/// Registers all ArithmeticUnary instruction handlers
/// </summary>
private void RegisterGroup1Handlers()
private void RegisterArithmeticUnaryHandlers()
{
// NOT handler
_handlers.Add(new NotRm32Handler(_codeBuffer, _decoder, _length));
// NEG handler
_handlers.Add(new NegRm32Handler(_codeBuffer, _decoder, _length));
// MUL handler
_handlers.Add(new MulRm32Handler(_codeBuffer, _decoder, _length));
// IMUL handler
_handlers.Add(new ImulRm32Handler(_codeBuffer, _decoder, _length));
// DIV handler
_handlers.Add(new DivRm32Handler(_codeBuffer, _decoder, _length));
// IDIV handler
_handlers.Add(new IdivRm32Handler(_codeBuffer, _decoder, _length));
}
/// <summary>
/// Registers all ArithmeticImmediate instruction handlers
/// </summary>
private void RegisterArithmeticImmediateHandlers()
{
// ADD handlers
_handlers.Add(new AddImmToRm8Handler(_codeBuffer, _decoder, _length));
@ -112,30 +136,6 @@ public class InstructionHandlerFactory
_handlers.Add(new CmpImmWithRm32SignExtendedHandler(_codeBuffer, _decoder, _length));
}
/// <summary>
/// Registers all Group3 instruction handlers
/// </summary>
private void RegisterGroup3Handlers()
{
// NOT handler
_handlers.Add(new NotRm32Handler(_codeBuffer, _decoder, _length));
// NEG handler
_handlers.Add(new NegRm32Handler(_codeBuffer, _decoder, _length));
// MUL handler
_handlers.Add(new MulRm32Handler(_codeBuffer, _decoder, _length));
// IMUL handler
_handlers.Add(new ImulRm32Handler(_codeBuffer, _decoder, _length));
// DIV handler
_handlers.Add(new DivRm32Handler(_codeBuffer, _decoder, _length));
// IDIV handler
_handlers.Add(new IdivRm32Handler(_codeBuffer, _decoder, _length));
}
/// <summary>
/// Registers all Return instruction handlers
/// </summary>

View File

@ -3,7 +3,6 @@ namespace X86DisassemblerTests;
using System;
using Xunit;
using X86Disassembler.X86;
using X86Disassembler.X86.Handlers.Group1;
/// <summary>
/// Tests for Group1 instruction handlers

View File

@ -3,7 +3,6 @@ namespace X86DisassemblerTests;
using System;
using Xunit;
using X86Disassembler.X86;
using X86Disassembler.X86.Handlers.Group3;
/// <summary>
/// Tests for Group3 instruction handlers

View File

@ -6,7 +6,6 @@ using System;
using Xunit;
using X86Disassembler.X86;
using X86Disassembler.X86.Handlers;
using X86Disassembler.X86.Handlers.Group3;
/// <summary>
/// Tests for TEST instruction handlers