Commit Graph

34 Commits

Author SHA1 Message Date
ecbe478dcd ft(interpreter): impl SAR 2025-07-08 09:03:16 +09:00
803c6267d2 ft(interpreter): impl mul and div 2025-07-02 20:32:13 +09:00
aee5f0b6d7 ft(interpreter): impl custom partialord and ord for immediateoperand
The derived one treated Byte(1) < Word(2) as true, which is not
the desired behaviour.
2025-07-02 17:16:26 +09:00
f6447df90e fix(interpreter): set flags correctly for shifts 2025-07-02 17:09:43 +09:00
f3fd655908 ft(interpreter): expose data to memory 2025-07-01 11:00:22 +09:00
4f3d864179 chore(interpreter): move memory access functions to computer
This is mainly to ease the usage of memory access functions, meaning
leaner access of memory with general resulution of memory accesses via
the MemoryIndex struct.
2025-06-18 21:04:41 +09:00
79dc560689 chore(interpreter): rewrite displacement memoryindex logic
Previously, the displacement for a MemoryIndex was directly interpreted
and saved as a signed value.
Change this to the normal unsigned ImmediateOperand version to allow
for more flexible usage of this struct for general memoryaccess (future
commit) and just interpret the displacement member as signed, only when
being interpreted as such (memory access, display, ....
2025-06-18 20:35:23 +09:00
4aeacc649a ft(interpreter): impl far jumps with correct CS addressing 2025-06-18 20:35:04 +09:00
6678a1ef4a chore(interpreter): fix small bugs 2025-06-18 20:33:52 +09:00
53262f9e3e ft(interpreter): impl shift and rotate 2025-06-18 20:33:52 +09:00
200640447b ft(interpreter): impl basic call 2025-06-18 20:33:52 +09:00
5fab099cd8 ft(interpreter): impl push/pop 2025-06-18 20:33:52 +09:00
5942270f63 ft(interpreter): impl all low-hanging fruit instructions 2025-06-11 23:29:34 +09:00
4cea76bd1c chore(interpreter): always sign-extend ImmediateOperand::Byte when cast 2025-06-11 17:40:38 +09:00
e5e0edd713 ft(interpreter): impl mov 2025-06-11 16:59:15 +09:00
11a365a8b1 ft(interpreter): set flags for arithmatic operations 2025-06-11 15:57:39 +09:00
c9bf8fdc46 ft(interpreter): impl short jumps 2025-06-11 15:44:42 +09:00
7479021d36 ft: impl most arithmatic ops, dec, inc 2025-06-10 20:57:31 +09:00
037d74ac6a fix: dont always flip sign_extend msb 2025-06-10 20:00:07 +09:00
3756ada3e0 fix: correctly sign-extend instead of plain byte to word cast 2025-06-10 15:54:25 +09:00
5529fc0b89 ft: impl flag setting closure for binary operations 2025-06-10 14:38:13 +09:00
35fefb7625 ft(interpreter): generalize binary operations 2025-06-10 10:59:35 +09:00
232b73aad8 chore: Rename Operand -> ImmediateOperand 2025-06-05 10:08:35 +09:00
ef4663a245 ft: abstract and implement ADD::* interpretation 2025-06-04 23:01:04 +09:00
a21cc2b4b3 ft: add debug script 2025-05-28 14:13:12 +09:00
c396d33f76 fix: align pointer parsing with spec
Previously pointer parsing was completely wrong.
Now split into Pointer32 for immediates with
segment;offset and Pointer16 for short jumps, which
use DS or ES as segment and the Pointer16 value
as offset.
2025-05-28 13:31:14 +09:00
0893969f4e chore: whole swoop of enhanced documentation 2025-05-28 09:41:40 +09:00
8ea91d80b8 ft: add first basic test 2025-05-25 21:20:12 +09:00
35207d23f0 chore: add nice debug output 2025-05-25 21:06:47 +09:00
f9ae0dc6ee chore: move pointer parsing function to disasm module 2025-05-25 20:31:55 +09:00
74e936ab76 chore: replace all panic's with proper error propagation 2025-05-25 15:45:09 +09:00
73b1a99cbd ft: Implement memory pointer (Mp) operand 2025-05-25 11:00:47 +09:00
6762195378 chore: show raw pointer value in disasm 2025-05-25 10:27:32 +09:00
058afeb7ba chore: split up some structs and add comments 2025-05-20 18:59:09 +09:00