mirror of
https://github.com/sampletext32/ParkanPlayground.git
synced 2025-05-19 11:51:17 +03:00
Reorganized instruction handlers into more descriptive folders (ArithmeticImmediate and ArithmeticUnary)
This commit is contained in:
parent
f658f4384c
commit
016e1ee54f
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group1;
|
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for ADC r/m32, imm32 instruction (0x81 /2)
|
/// Handler for ADC r/m32, imm32 instruction (0x81 /2)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group1;
|
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for ADC r/m32, imm8 (sign-extended) instruction (0x83 /2)
|
/// Handler for ADC r/m32, imm8 (sign-extended) instruction (0x83 /2)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group1;
|
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for ADD r/m32, imm32 instruction (0x81 /0)
|
/// Handler for ADD r/m32, imm32 instruction (0x81 /0)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group1;
|
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for ADD r/m32, imm8 (sign-extended) instruction (0x83 /0)
|
/// Handler for ADD r/m32, imm8 (sign-extended) instruction (0x83 /0)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group1;
|
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for ADD r/m8, imm8 instruction (0x80 /0)
|
/// Handler for ADD r/m8, imm8 instruction (0x80 /0)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group1;
|
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for AND r/m32, imm32 instruction (0x81 /4)
|
/// Handler for AND r/m32, imm32 instruction (0x81 /4)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group1;
|
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for AND r/m32, imm8 (sign-extended) instruction (0x83 /4)
|
/// Handler for AND r/m32, imm8 (sign-extended) instruction (0x83 /4)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group1;
|
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for CMP r/m32, imm32 instruction (0x81 /7)
|
/// Handler for CMP r/m32, imm32 instruction (0x81 /7)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group1;
|
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for CMP r/m32, imm8 (sign-extended) instruction (0x83 /7)
|
/// Handler for CMP r/m32, imm8 (sign-extended) instruction (0x83 /7)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group1;
|
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for OR r/m32, imm32 instruction (0x81 /1)
|
/// Handler for OR r/m32, imm32 instruction (0x81 /1)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group1;
|
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for OR r/m32, imm8 (sign-extended) instruction (0x83 /1)
|
/// Handler for OR r/m32, imm8 (sign-extended) instruction (0x83 /1)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group1;
|
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for OR r/m8, imm8 instruction (0x80 /1)
|
/// Handler for OR r/m8, imm8 instruction (0x80 /1)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group1;
|
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for SBB r/m32, imm32 instruction (0x81 /3)
|
/// Handler for SBB r/m32, imm32 instruction (0x81 /3)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group1;
|
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for SBB r/m32, imm8 (sign-extended) instruction (0x83 /3)
|
/// Handler for SBB r/m32, imm8 (sign-extended) instruction (0x83 /3)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group1;
|
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for SUB r/m32, imm32 instruction (0x81 /5)
|
/// Handler for SUB r/m32, imm32 instruction (0x81 /5)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group1;
|
namespace X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for SUB r/m32, imm8 (sign-extended) instruction (0x83 /5)
|
/// Handler for SUB r/m32, imm8 (sign-extended) instruction (0x83 /5)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group3;
|
namespace X86Disassembler.X86.Handlers.ArithmeticUnary;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for DIV r/m32 instruction (0xF7 /6)
|
/// Handler for DIV r/m32 instruction (0xF7 /6)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group3;
|
namespace X86Disassembler.X86.Handlers.ArithmeticUnary;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for IDIV r/m32 instruction (0xF7 /7)
|
/// Handler for IDIV r/m32 instruction (0xF7 /7)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group3;
|
namespace X86Disassembler.X86.Handlers.ArithmeticUnary;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for IMUL r/m32 instruction (0xF7 /5)
|
/// Handler for IMUL r/m32 instruction (0xF7 /5)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group3;
|
namespace X86Disassembler.X86.Handlers.ArithmeticUnary;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for MUL r/m32 instruction (0xF7 /4)
|
/// Handler for MUL r/m32 instruction (0xF7 /4)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group3;
|
namespace X86Disassembler.X86.Handlers.ArithmeticUnary;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for NEG r/m32 instruction (0xF7 /3)
|
/// Handler for NEG r/m32 instruction (0xF7 /3)
|
@ -1,4 +1,4 @@
|
|||||||
namespace X86Disassembler.X86.Handlers.Group3;
|
namespace X86Disassembler.X86.Handlers.ArithmeticUnary;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handler for NOT r/m32 instruction (0xF7 /2)
|
/// Handler for NOT r/m32 instruction (0xF7 /2)
|
@ -1,7 +1,7 @@
|
|||||||
|
using X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||||
|
using X86Disassembler.X86.Handlers.ArithmeticUnary;
|
||||||
using X86Disassembler.X86.Handlers.Call;
|
using X86Disassembler.X86.Handlers.Call;
|
||||||
using X86Disassembler.X86.Handlers.FloatingPoint;
|
using X86Disassembler.X86.Handlers.FloatingPoint;
|
||||||
using X86Disassembler.X86.Handlers.Group1;
|
|
||||||
using X86Disassembler.X86.Handlers.Group3;
|
|
||||||
using X86Disassembler.X86.Handlers.Jump;
|
using X86Disassembler.X86.Handlers.Jump;
|
||||||
using X86Disassembler.X86.Handlers.Mov;
|
using X86Disassembler.X86.Handlers.Mov;
|
||||||
using X86Disassembler.X86.Handlers.Pop;
|
using X86Disassembler.X86.Handlers.Pop;
|
||||||
@ -44,8 +44,8 @@ public class InstructionHandlerFactory
|
|||||||
private void RegisterHandlers()
|
private void RegisterHandlers()
|
||||||
{
|
{
|
||||||
// Register group handlers
|
// Register group handlers
|
||||||
RegisterGroup3Handlers();
|
RegisterArithmeticUnaryHandlers();
|
||||||
RegisterGroup1Handlers();
|
RegisterArithmeticImmediateHandlers();
|
||||||
|
|
||||||
// Register specific instruction handlers
|
// Register specific instruction handlers
|
||||||
_handlers.Add(new Int3Handler(_codeBuffer, _decoder, _length));
|
_handlers.Add(new Int3Handler(_codeBuffer, _decoder, _length));
|
||||||
@ -73,9 +73,33 @@ public class InstructionHandlerFactory
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Registers all Group1 instruction handlers
|
/// Registers all ArithmeticUnary instruction handlers
|
||||||
/// </summary>
|
/// </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
|
// ADD handlers
|
||||||
_handlers.Add(new AddImmToRm8Handler(_codeBuffer, _decoder, _length));
|
_handlers.Add(new AddImmToRm8Handler(_codeBuffer, _decoder, _length));
|
||||||
@ -112,30 +136,6 @@ public class InstructionHandlerFactory
|
|||||||
_handlers.Add(new CmpImmWithRm32SignExtendedHandler(_codeBuffer, _decoder, _length));
|
_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>
|
/// <summary>
|
||||||
/// Registers all Return instruction handlers
|
/// Registers all Return instruction handlers
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -3,7 +3,6 @@ namespace X86DisassemblerTests;
|
|||||||
using System;
|
using System;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
using X86Disassembler.X86;
|
using X86Disassembler.X86;
|
||||||
using X86Disassembler.X86.Handlers.Group1;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Tests for Group1 instruction handlers
|
/// Tests for Group1 instruction handlers
|
||||||
|
@ -3,7 +3,6 @@ namespace X86DisassemblerTests;
|
|||||||
using System;
|
using System;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
using X86Disassembler.X86;
|
using X86Disassembler.X86;
|
||||||
using X86Disassembler.X86.Handlers.Group3;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Tests for Group3 instruction handlers
|
/// Tests for Group3 instruction handlers
|
||||||
|
@ -6,7 +6,6 @@ using System;
|
|||||||
using Xunit;
|
using Xunit;
|
||||||
using X86Disassembler.X86;
|
using X86Disassembler.X86;
|
||||||
using X86Disassembler.X86.Handlers;
|
using X86Disassembler.X86.Handlers;
|
||||||
using X86Disassembler.X86.Handlers.Group3;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Tests for TEST instruction handlers
|
/// Tests for TEST instruction handlers
|
||||||
|
Loading…
x
Reference in New Issue
Block a user