bird_egop
193f9cd2d8
refactor modrm decoder more
2025-04-16 19:14:11 +03:00
bird_egop
a91d6af8fc
Refactored ModRMDecoder class into smaller, more focused components. Created RegisterMapper and SIBDecoder classes to improve maintainability.
2025-04-16 19:11:36 +03:00
bird_egop
9445fb225f
fixes and removed unused code
2025-04-16 19:07:32 +03:00
bird_egop
9ddaa02471
Fixed ModRM handling for 8-bit operands with SIB byte. Updated test to match implementation.
2025-04-16 18:42:15 +03:00
bird_egop
deb98183b1
more fixes
2025-04-16 18:32:41 +03:00
bird_egop
6719cff2af
Test fixes
2025-04-16 18:30:17 +03:00
bird_egop
d4eb920e2f
Updated instruction handlers to use factory methods instead of directly setting Size property
2025-04-16 01:39:23 +03:00
bird_egop
e06ea2beb3
Refactored register operands to separate 8-bit registers into dedicated Register8Operand class
2025-04-16 01:10:33 +03:00
bird_egop
46592d4877
fix various tests
2025-04-15 23:54:51 +03:00
bird_egop
4327464b98
add new add handlers
2025-04-15 23:54:37 +03:00
bird_egop
0dac4481f6
fix segment override tests according to ghidra
2025-04-15 23:22:14 +03:00
bird_egop
6882f0bd86
Update TestDataProvider to use CSV files directly from filesystem instead of embedded resources
2025-04-15 23:21:52 +03:00
bird_egop
61e92a50a5
Split FPU tests by instruction type for better organization and readability
2025-04-15 22:45:46 +03:00
bird_egop
0a2d551cb4
Enhanced test coverage for floating-point instructions
2025-04-15 22:40:09 +03:00
bird_egop
904f0eed47
Enhanced test coverage for DIV, flag control, and FNSTSW instructions
2025-04-15 22:35:14 +03:00
bird_egop
6169d68967
Enhanced test coverage for CMP, BIT and CALL instructions
2025-04-15 22:32:37 +03:00
bird_egop
d6903f2e5b
Enhanced test coverage for AND instructions
2025-04-15 22:28:54 +03:00
bird_egop
2fde1f2ae3
Enhanced test coverage for ADC and ADD instructions
2025-04-15 22:27:51 +03:00
bird_egop
2123ed2c5d
add tons of tests
2025-04-15 22:20:46 +03:00
bird_egop
abe4d38d4b
more cleanup
2025-04-15 02:42:47 +03:00
bird_egop
49f1d7d221
cleanup
2025-04-15 02:32:14 +03:00
bird_egop
3ea327064a
Fix x86 disassembler issues with direct memory addressing and immediate value formatting
2025-04-15 02:29:32 +03:00
bird_egop
d351f41808
Fixed x86 disassembler issues: 1) Corrected ModRMDecoder to use RegisterIndex.Sp instead of RegisterIndex.Si for SIB detection 2) Updated floating point instruction handlers to use proper instruction types 3) Enhanced ImmediateOperand.ToString() to show full 32-bit representation for sign-extended values
2025-04-15 00:14:28 +03:00
bird_egop
9117830ff1
unbreak tests
2025-04-14 23:08:52 +03:00
bird_egop
685eeda03d
Updated instruction handlers to use Type and StructuredOperands instead of Mnemonic and Operands
2025-04-14 22:09:05 +03:00
bird_egop
c516e063e7
basic decompiler and fixes
2025-04-14 02:07:17 +03:00
bird_egop
157171fa90
remove more special cases. use standardized api
2025-04-14 01:52:33 +03:00
bird_egop
c9e854a663
remove direct position changes from modrmdecoder
2025-04-14 01:15:26 +03:00
bird_egop
99b93523a4
more refactoring
2025-04-14 01:08:14 +03:00
bird_egop
f54dc10596
Simplified XorImmWithRm16Handler by improving boundary checking and removing redundant code
2025-04-14 01:01:31 +03:00
bird_egop
4567465570
Simplified TestRegMemHandler by improving boundary checking and removing redundant code
2025-04-14 00:56:57 +03:00
bird_egop
d3d2c4c63f
Simplified TestRegMem8Handler by removing unused variables and improving code structure
2025-04-14 00:54:16 +03:00
bird_egop
b7c6092b7f
Simplified TEST instruction handlers by removing special cases and improving code structure
2025-04-14 00:53:16 +03:00
bird_egop
dae52fc3ec
Simplified SubImmFromRm32SignExtendedHandler by removing special case for operand type-based formatting
2025-04-14 00:41:58 +03:00
bird_egop
5b09d6f9b8
Simplified SubImmFromRm16SignExtendedHandler by removing special case for register name conversion
2025-04-14 00:39:58 +03:00
bird_egop
689195c6e5
Simplified SubImmFromRm16Handler by removing special case for register name conversion and improving boundary checking
2025-04-14 00:38:47 +03:00
bird_egop
e134452eda
Improved PUSH handlers by moving reg field check to CanHandle and adding proper boundary checking
2025-04-14 00:33:39 +03:00
bird_egop
53696a9f1c
Removed special case check for 0x83 in OrRm8R8Handler to avoid introducing special cases in general solutions
2025-04-14 00:30:53 +03:00
bird_egop
243789892d
Further simplified MultiByteNopHandler by using an array of tuples and matching patterns from longest to shortest
2025-04-14 00:23:58 +03:00
bird_egop
4b549f4b1b
Simplified MultiByteNopHandler by using a dictionary-based approach to replace complex conditional logic
2025-04-14 00:21:24 +03:00
bird_egop
c9901aa9b8
Simplified MovRm32Imm32Handler by improving boundary checking and error handling, and updated test to match expected behavior
2025-04-14 00:19:36 +03:00
bird_egop
2d0f701dd1
Simplified TwoByteConditionalJumpHandler and MovRegMemHandler by improving boundary checking and target address calculation
2025-04-14 00:17:31 +03:00
bird_egop
996be18172
Simplified JmpRel32Handler by improving target address calculation and code organization
2025-04-14 00:11:55 +03:00
bird_egop
38770de005
Simplified jump instruction handlers by using consistent decoder methods and improving code organization
2025-04-14 00:09:44 +03:00
bird_egop
5daab494e1
Simplified LoadStoreInt32Handler by replacing if-else logic with a dictionary-based approach
2025-04-14 00:00:30 +03:00
bird_egop
fac1339fec
Simplified LoadStoreInt16Handler by replacing complex logic with a dictionary-based approach and improving memory operand handling
2025-04-13 23:53:27 +03:00
bird_egop
4e837f5c63
Simplified LoadStoreFloat64Handler by replacing if-else logic with a dictionary-based approach
2025-04-13 23:52:00 +03:00
bird_egop
b531db77d5
Simplified LoadStoreControlHandler by replacing complex switch statements with a dictionary-based approach
2025-04-13 23:50:23 +03:00
bird_egop
0ff20494e1
Simplified Int32OperationHandler by replacing complex if-else logic with a dictionary-based approach
2025-04-13 23:48:45 +03:00
bird_egop
46a4696481
Simplified Int16OperationHandler by replacing complex if-else logic with a dictionary-based approach
2025-04-13 23:47:10 +03:00
bird_egop
7ab388f26d
Simplified FnstswHandler by using CanReadByte for boundary checking and improving code readability
2025-04-13 23:45:26 +03:00
bird_egop
ec1aa4a124
Simplified CmpImmWithRm8Handler by removing unnecessary raw bytes handling and improving operand formatting
2025-04-13 23:41:30 +03:00
bird_egop
ec70b31058
Simplified CmpImmWithRm32Handler and added AndImmWithRm32Handler
2025-04-13 23:39:57 +03:00
bird_egop
8d1522b6cb
Added XML documentation comments to buffer reading methods in InstructionDecoder
2025-04-13 23:36:53 +03:00
bird_egop
6827cb735e
Simplified StringInstructionHandler by combining mnemonic and operands into a single dictionary and removing redundant switch statement
2025-04-13 23:24:14 +03:00
bird_egop
00547ed273
simplify reading logic
2025-04-13 23:22:30 +03:00
bird_egop
0ea3294c61
Simplified AndImmToRm32SignExtendedHandler for better maintainability and consistency
2025-04-13 23:18:38 +03:00
bird_egop
f19f2254fe
Simplified AndImmToRm8Handler for better maintainability and consistency
2025-04-13 23:16:34 +03:00
bird_egop
cf1e1acf71
Simplified instruction handlers for better maintainability and consistency. Fixed operand size handling in XOR handlers with 16-bit registers. Added support for 6-byte NOP variant. Fixed formatting of immediate values to maintain consistent output.
2025-04-13 23:15:11 +03:00
bird_egop
11a2cfada4
nice big refactor
2025-04-13 23:06:52 +03:00
bird_egop
59df064ca4
broken tests
2025-04-13 20:20:51 +03:00
bird_egop
89b2b32cd6
fix xor AX, 16bit imm
2025-04-13 19:55:13 +03:00
bird_egop
b0ade45f1b
refactor xors
2025-04-13 19:35:28 +03:00
bird_egop
30676b36a1
Updated InstructionHandlerFactory to register XOR handlers and updated test project files
2025-04-13 19:28:56 +03:00
bird_egop
56c12b552c
Fixed XOR instruction handlers for consistent immediate value handling
2025-04-13 19:26:08 +03:00
bird_egop
e91a0223f7
Refactor SUB handlers
2025-04-13 18:22:44 +03:00
bird_egop
a04a16af7d
Updated NOP instruction handlers to match Ghidra's output format
2025-04-13 18:09:13 +03:00
bird_egop
8cf26060f2
Implemented NOP instruction handlers for multi-byte NOP variants
2025-04-13 18:00:26 +03:00
bird_egop
032030169e
Added comprehensive test cases for SUB instructions with complex addressing modes
2025-04-13 17:55:29 +03:00
bird_egop
b11b39ac4e
Implemented 16-bit SUB instruction handlers and fixed test data
2025-04-13 17:51:54 +03:00
bird_egop
d1d52af511
Added CSV test files for various instruction types and enabled comments in CSV files
2025-04-13 17:17:28 +03:00
bird_egop
3f4b9a8547
Optimized HexStringToByteArray method using spans for better performance
2025-04-13 17:07:09 +03:00
bird_egop
2cdd9f1e83
move tests to csv
2025-04-13 17:02:46 +03:00
bird_egop
565158d9bd
Fixed immediate value formatting in Group1 instruction handlers
2025-04-13 16:00:46 +03:00
bird_egop
2c85192d13
Fixed byte order handling in SUB instruction handlers and updated tests
...
Implemented SUB r32, r/m32 instruction handlers and tests
Added comprehensive tests for Push/Pop, Xchg, Sub instructions and enhanced segment override tests
2025-04-13 14:36:49 +03:00
bird_egop
44c73321ea
move handlers to respective folders
2025-04-13 04:13:44 +03:00
bird_egop
e8a16e7ecd
Moved AND instruction handlers from ArithmeticImmediate to dedicated And namespace for better organization
2025-04-13 04:11:06 +03:00
bird_egop
af94b88868
Added comprehensive test coverage for arithmetic and logical instructions. Implemented AND instruction handlers and added tests for ADC, SBB, and arithmetic unary operations.
2025-04-13 04:07:37 +03:00
bird_egop
b215908d76
fixups
2025-04-13 03:56:39 +03:00
bird_egop
611dce32e5
Fixed operand order in MOV instructions and updated tests to match disassembler output
2025-04-13 03:56:09 +03:00
bird_egop
b2929c38e9
Replaced all Assert.Contains with strict Assert.Equal in tests for better validation
2025-04-13 03:38:50 +03:00
bird_egop
0d271abdcb
Replaced Assert.Contains with strict Assert.Equal in tests for better validation
2025-04-13 03:33:51 +03:00
bird_egop
b718745d7a
Fixed MovRm32Imm32Handler to properly handle instruction boundaries
2025-04-13 03:25:20 +03:00
bird_egop
17ef78a7a7
Fixed instruction boundary detection and added JGE instruction handler
2025-04-13 03:19:42 +03:00
bird_egop
e12f5b5bdf
Fixed instruction boundary detection for complex instruction sequences
2025-04-13 03:08:37 +03:00
bird_egop
33b151d856
Fixed instruction boundary detection by improving MovRm8Imm8Handler
2025-04-13 03:00:31 +03:00
bird_egop
465056dd9a
Fixed instruction boundary detection for the specific sequence at address 0x00001874
2025-04-13 02:51:51 +03:00
bird_egop
618ee641a8
Added OrRm8R8Handler for decoding OR r/m8, r8 instruction (opcode 0x08)
2025-04-13 02:35:48 +03:00
bird_egop
d46d03ce65
Added AddEaxImmHandler for decoding ADD EAX, imm32 instruction (opcode 0x05)
2025-04-13 02:31:08 +03:00
bird_egop
d0667950f8
Added proper REPNE prefix handling and comprehensive string instruction tests
2025-04-13 02:26:49 +03:00
bird_egop
79bf419c07
Consolidated string instruction handling by enhancing StringInstructionHandler to handle both regular and REP/REPNE prefixed instructions
2025-04-13 02:23:27 +03:00
bird_egop
efd9141b39
Made StringInstructionHandler self-contained by removing dependency on OpcodeMap
2025-04-13 02:20:49 +03:00
bird_egop
bdd691a021
Inlined local methods in StringInstructionHandler for better readability
2025-04-13 02:19:19 +03:00
bird_egop
410211fcc6
Converted StringInstructionDecoder to StringInstructionHandler for better consistency with handler pattern
2025-04-13 02:18:12 +03:00
bird_egop
9dfa559045
Refactored instruction decoder to improve modularity. Created StringInstructionDecoder and updated PrefixDecoder. Fixed handler registration in InstructionHandlerFactory.
2025-04-13 02:16:12 +03:00
bird_egop
c14a92bf04
Added support for string instructions with REP prefix, specifically F3 A5 (REP MOVS)
2025-04-13 02:10:48 +03:00
bird_egop
bfaeba0d5f
Fixed segment override prefix handling for 0x64 (FS) opcode with tests
2025-04-13 01:39:38 +03:00
bird_egop
b4a85d2839
fix duplicated code
2025-04-13 01:36:11 +03:00
bird_egop
52841237c1
Added CmpRm32R32Handler for CMP r/m32, r32 instruction (0x39) with tests
2025-04-13 01:34:56 +03:00
bird_egop
28ba47bfab
add factory tests
2025-04-13 01:30:58 +03:00