3ec76933d5
fix(interpreter): rep(n)z condition was wrong way around
2025-07-24 11:44:06 +09:00
2cb50b5908
fix(interpreter): fix mov AX0b instruction
...
Should not be imm, but a memoryindex
2025-07-24 11:43:30 +09:00
4cc97cffbf
ft(interpreter): impl stosb/stosw
2025-07-24 11:43:08 +09:00
b3a24ade00
ft(interpreter): impl file-based minix interrupts
2025-07-24 11:42:15 +09:00
75e9df9be9
ft(interpreter): impl repz/repnz and string ops
2025-07-15 12:44:28 +09:00
d5d6834a94
ft(interpreter): impl low hanging fruits
2025-07-14 18:32:32 +09:00
aea3143b4b
fix(interpreter): allocate stack on heap
2025-07-08 17:40:57 +09:00
20e45679fc
chore(interpreter): impl missing instructions as todo
2025-07-08 11:20:38 +09:00
9ada099d70
chore: update readme
2025-07-08 11:19:26 +09:00
cae4a03c26
chore: cleanup calling logic of disasm/interp
2025-07-08 10:43:02 +09:00
8c1a07b9e6
ft: rename to i8086-rs
2025-07-08 10:42:58 +09:00
0a1fd0e4c6
fix(interpreter): typo selected wrong byte
2025-07-08 09:35:28 +09:00
ecbe478dcd
ft(interpreter): impl SAR
2025-07-08 09:03:16 +09:00
be0b928a55
fix(interpreter): use correct binary name for argv[0]
2025-07-06 22:41:14 +09:00
14a0d3d6f1
chore(interpreter): improve debug output
2025-07-06 22:36:13 +09:00
68fb5b7b56
fix(interpreter): correctly sign extend cmp byte
2025-07-06 22:35:39 +09:00
aba85c9a48
fix(interpreter): invalid operator precendece for padding byte
2025-07-05 00:04:35 +09:00
89634e50c4
fix(interpreter): load prog name as argv[0]
2025-07-04 15:05:18 +09:00
6c593a8d1e
fix(interpreter): fix jg jump condition
2025-07-02 20:58:57 +09:00
4e23d9419b
fix(interpreter): write to correct 8bit regs
2025-07-02 20:58:39 +09:00
4adb975b69
fix(interpreter): actually xchg into AX
2025-07-02 20:41:34 +09:00
803c6267d2
ft(interpreter): impl mul and div
2025-07-02 20:32:13 +09:00
60b5b6bd51
chore(interpreter): correctly sign extend for CBW/CWD intructions
2025-07-02 17:46:15 +09:00
6d60343067
ft(interpreter): impl ret with immediate
2025-07-02 17:38:48 +09:00
f665390854
fix(interpreter): add missing continue for jmp %reg instructions
2025-07-02 17:31:51 +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
709d2a2639
fix(interpreter): fix safeguard for memory write_raw()
2025-07-02 17:16:01 +09:00
cf3383c23a
fix(interpreter): set flags correctly for inc/dec/neg
2025-07-02 17:15:40 +09:00
4f161f47f6
ft(interpreter): expand interrupt functionality
...
Implement mess2 type, as well as return m_type for existing
and new interrupts.
TODO:
save pointer to message data, as the current write is redundant.
2025-07-02 17:14:05 +09:00
5a81bbf43a
chore(interpreter): handle errors during fetch
2025-07-02 17:12:19 +09:00
09a03ab558
chore: simplify info and debug output
2025-07-02 17:10:55 +09:00
f6447df90e
fix(interpreter): set flags correctly for shifts
2025-07-02 17:09:43 +09:00
3ce0a461ca
fix(interpreter): fix stack setup
2025-07-02 17:07:37 +09:00
0a55b5a68b
fix(interrupt): parse correct amount of data
2025-07-01 12:20:23 +09:00
a5cffa4852
fix(interpreter): impl fetch and decode
...
I parsed all instructions before executing, but this is not how
intel works.
We need to decode the instructions, pointed to by IP, on the fly.
2025-07-01 12:08:28 +09:00
f3fd655908
ft(interpreter): expose data to memory
2025-07-01 11:00:22 +09:00
13cb907977
ft(interpreter): impl simple stack init
2025-07-01 09:46:06 +09:00
0db309b668
chore(main): dont log path
2025-06-18 21:25:17 +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
5a61eb5fd6
ft(interpreter): use DS and SS sregs as correct segment offsets
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
7d5f891a93
ft: use instructionwidth instead of immediateoperand
...
Previously an immediate operand with data of 0 was use to encode
width, now use a dedicated enum for improved clarity.
2025-06-18 20:33:52 +09:00
18cc460d40
ft: impl ret
2025-06-18 20:33:52 +09:00
7f4d79d840
fix(interpreter): always read word from memory
...
It's not possible to know if a word or byte is requested, or rather
it would be a pain to retrieve that information.
It is much easier to just read a full word and then discard the top
half, if just a byte is needed.
2025-06-18 20:33:52 +09:00
200640447b
ft(interpreter): impl basic call
2025-06-18 20:33:52 +09:00
7e7e648fa8
fix(interpreter): wrong le byte order on pop
2025-06-18 20:33:52 +09:00
1f5e175c68
chore(interpreter): rename Operand -> ArithmeticOperand
2025-06-18 20:33:52 +09:00