mirror of
https://github.com/sampletext32/ParkanPlayground.git
synced 2025-06-20 16:18:37 +03:00
Added comprehensive test coverage for arithmetic and logical instructions. Implemented AND instruction handlers and added tests for ADC, SBB, and arithmetic unary operations.
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
using X86Disassembler.X86.Handlers.Add;
|
||||
using X86Disassembler.X86.Handlers.And;
|
||||
using X86Disassembler.X86.Handlers.ArithmeticImmediate;
|
||||
using X86Disassembler.X86.Handlers.ArithmeticUnary;
|
||||
using X86Disassembler.X86.Handlers.Call;
|
||||
@ -56,6 +57,7 @@ public class InstructionHandlerFactory
|
||||
// Register handlers in order of priority (most specific first)
|
||||
RegisterArithmeticImmediateHandlers(); // Group 1 instructions (including 0x83)
|
||||
RegisterAddHandlers();
|
||||
RegisterAndHandlers();
|
||||
RegisterArithmeticUnaryHandlers();
|
||||
RegisterCmpHandlers();
|
||||
RegisterXorHandlers();
|
||||
@ -349,6 +351,24 @@ public class InstructionHandlerFactory
|
||||
_handlers.Add(new PopRegHandler(_codeBuffer, _decoder, _length));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Registers all And instruction handlers
|
||||
/// </summary>
|
||||
private void RegisterAndHandlers()
|
||||
{
|
||||
// Add AND handlers
|
||||
_handlers.Add(new AndImmToRm8Handler(_codeBuffer, _decoder, _length));
|
||||
_handlers.Add(new AndImmToRm32Handler(_codeBuffer, _decoder, _length));
|
||||
_handlers.Add(new AndImmToRm32SignExtendedHandler(_codeBuffer, _decoder, _length));
|
||||
|
||||
_handlers.Add(new AndR8Rm8Handler(_codeBuffer, _decoder, _length));
|
||||
_handlers.Add(new AndRm8R8Handler(_codeBuffer, _decoder, _length));
|
||||
_handlers.Add(new AndR32Rm32Handler(_codeBuffer, _decoder, _length));
|
||||
_handlers.Add(new AndMemRegHandler(_codeBuffer, _decoder, _length));
|
||||
_handlers.Add(new AndAlImmHandler(_codeBuffer, _decoder, _length));
|
||||
_handlers.Add(new AndEaxImmHandler(_codeBuffer, _decoder, _length));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the handler that can decode the given opcode
|
||||
/// </summary>
|
||||
|
Reference in New Issue
Block a user