Commit Graph

31 Commits

Author SHA1 Message Date
db6d7c30a9 fix: typo in cargo.toml 2025-05-14 20:55:30 +09:00
beec1ae161 ft: Add Readme 2025-05-14 13:52:02 +02:00
45ab158b95 ft: implement some more instructions 2025-05-14 20:38:51 +09:00
22d7c5571f fix: align disasm output correctly 2025-05-14 20:21:13 +09:00
1aa3e2ba84 chore: align disasm output with intel spec 2025-05-14 16:11:11 +09:00
227f1bd133 fix: fix displacement parsing
1. correctly return when only displacement in modrm mem adressing
Previously the disassmbler wouldn't stop if only a displacement value
should be used without any base or offset index.

2. Displacement can be negative, so use the signed version where applicable
2025-05-14 14:36:21 +09:00
c0bb448d79 chore: prettify printing 2025-05-14 13:54:13 +09:00
5c13267145 ft: implement Group 1 sign extended instruction 2025-05-14 13:45:20 +09:00
1f88db75f5 ft: partially implement Group 5 instructions 2025-05-14 13:41:08 +09:00
4fa789e6bb ft: Implement Group 4 Instructions 2025-05-14 13:35:00 +09:00
986c99873d ft: implement Group 2 instructions 2025-05-14 12:12:57 +09:00
4252986b7e ft: implement CALL and JMP instructions 2025-05-14 11:57:00 +09:00
38a2782cc6 ft: implement group3a/b instructions 2025-05-14 11:46:09 +09:00
04493b1179 ft: implement more mnemonics 2025-05-14 11:28:07 +09:00
b5c178ea61 chore: remove Immediate from Immediate::{Word, Byte, Operand}
It's already clear that its an Immediate value
without the prefix.
2025-05-14 10:40:52 +09:00
a61b82fe22 ft: implement some more mnemonics 2025-05-14 10:39:07 +09:00
f7446c14b1 chore: move register into own module 2025-05-13 16:23:47 +09:00
3cb3f8d4b1 chore: Update comments 2025-05-13 14:25:32 +09:00
6908fb3c69 chore: use lower letters for disasm output 2025-05-13 14:20:25 +09:00
4443f84297 chore: dedup u8/u16 byte/word immediate type 2025-05-13 12:44:00 +09:00
27b39ee94a fix: correctly parse word instead of byte for GPR 2025-05-13 12:35:58 +09:00
47a002cd79 chore: add macros for ModRM GPR Instruction parsing 2025-05-13 12:23:33 +09:00
c71ddb4419 fix: rename OperandSize to OperandWidth 2025-05-13 12:17:25 +09:00
a25e0a3890 ft: fixed modrm target calculation
While implementing some more mnemonics and testing
them, it was clear that modrm parsing was wrong.
Now reg to reg and immediates, together with
GPR1 interpretation should work as expected.

GPR1 interpretation can currently not be merged
into the modrm function, as with the current
abstraction the REG needs to select the correct
mnemonic, for which we need to also know the second
operand, which will only be parsed afterwards.
But this will be incorporated at some point, this
just marks the first working state.
2025-05-13 12:07:22 +09:00
51b28b3bac ft: introduce modrm macro for leaner matching
All instructions which use a modrm instruction
for memory reads from or into a register can
make use of this macro
2025-05-12 19:53:25 +09:00
317b5e5db4 fix: fix modrm parsing
Previously the wrong register was read in, now
the byte is deconstructed correctly
2025-05-12 15:38:20 +09:00
1dcd231f51 fix: fix bug in offset advancing with modrm bytes 2025-05-08 20:22:40 +09:00
df00f59b5a ft: implement disasm in own struct
This makes it easier to implement each opcode,
as the offset calculation and recovery of raw
read bytes is internalized.
2025-05-08 20:18:02 +09:00
1c7d3f3adc fix: cleanup structs into correct files 2025-05-08 10:05:09 +09:00
849895a437 ft: add modrm parsing 2025-05-07 22:46:58 +09:00
2af4578c8b ft: initial disasm of example data
This only contains two instructions of which I know
the correct output.
2025-05-07 15:48:44 +09:00