058afeb7ba
chore: split up some structs and add comments
2025-05-20 18:59:09 +09:00
48eeff16fa
chore: align disasm print more with objdump(1)
2025-05-20 11:28:23 +09:00
beccff0d79
chore: update metadata
2025-05-20 11:22:35 +09:00
1173dd3d63
chore: output parity for hex
...
Output all immediate bytes and words as hex.
2025-05-20 11:02:46 +09:00
ac78e9705c
fix: correctly parse jump bytes
...
Previously only a single byte was read and saved,
but the J-byte means, that the read signed-byte
must be added to the address of the next
instruction.
2025-05-20 10:56:54 +09:00
3fe58e8bac
ft: implement fmt::Display for all mnemonics
2025-05-20 10:46:52 +09:00
fd15e57569
fix: correctly add displacement for short jumps
2025-05-20 10:12:13 +09:00
cb924af0fb
chore: naming parity
2025-05-15 23:15:22 +09:00
1c7ddbe9fa
fix: use unsigned Operand type for immediates
2025-05-15 09:28:28 +09:00
8ff92c81b3
ft: decode last set of instructions
2025-05-15 08:32:49 +09:00
fbec2ddad9
ft: add documentation section to Readme
2025-05-15 01:20:47 +02:00
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