0
mirror of https://github.com/sampletext32/ParkanPlayground.git synced 2025-06-20 16:18:37 +03:00

Fixed instruction handlers and tests for Group1, Group3, and XOR instructions

This commit is contained in:
bird_egop
2025-04-12 21:48:41 +03:00
parent f107b8e763
commit a0e40c8a52
6 changed files with 79 additions and 24 deletions

View File

@ -37,11 +37,24 @@ public class InstructionHandlerFactory
/// </summary>
private void RegisterHandlers()
{
// Register Group3 handlers first to ensure they take precedence
// over generic handlers for the same opcodes
RegisterGroup3Handlers();
// Register Group1 handlers
RegisterGroup1Handlers();
// Register specific instruction handlers
_handlers.Add(new RetHandler(_codeBuffer, _decoder, _length));
_handlers.Add(new RetImmHandler(_codeBuffer, _decoder, _length));
_handlers.Add(new CallRel32Handler(_codeBuffer, _decoder, _length));
// XOR handlers
_handlers.Add(new XorRegMemHandler(_codeBuffer, _decoder, _length));
_handlers.Add(new XorMemRegHandler(_codeBuffer, _decoder, _length));
_handlers.Add(new XorAlImmHandler(_codeBuffer, _decoder, _length));
_handlers.Add(new XorEaxImmHandler(_codeBuffer, _decoder, _length));
_handlers.Add(new FnstswHandler(_codeBuffer, _decoder, _length));
// TEST handlers
@ -57,12 +70,6 @@ public class InstructionHandlerFactory
_handlers.Add(new JmpRel8Handler(_codeBuffer, _decoder, _length));
_handlers.Add(new ConditionalJumpHandler(_codeBuffer, _decoder, _length));
_handlers.Add(new TwoByteConditionalJumpHandler(_codeBuffer, _decoder, _length));
// Register Group1 handlers
RegisterGroup1Handlers();
// Register Group3 handlers
RegisterGroup3Handlers();
// Register group handlers for instructions that share similar decoding logic
_handlers.Add(new FloatingPointHandler(_codeBuffer, _decoder, _length));