Thomas Harte
|
bf7faa80c1
|
Add TODO.
|
2022-03-10 16:47:54 -05:00 |
|
Thomas Harte
|
a2ae3771eb
|
Add test for switch to Source::IndirectNoBase.
|
2022-03-10 15:45:56 -05:00 |
|
Thomas Harte
|
673ffc50da
|
Switch to intended compact version of Instruction .
|
2022-03-10 15:14:50 -05:00 |
|
Thomas Harte
|
6dc9973754
|
Incorporate length into Instruction .
|
2022-03-10 07:12:12 -05:00 |
|
Thomas Harte
|
cf6a910630
|
Handle no-base case directly in existing switch.
|
2022-03-09 20:20:32 -05:00 |
|
Thomas Harte
|
520baa6ec8
|
Formalise IndirectNoBase and permit a knowledgable caller to avoid conditionals.
|
2022-03-09 20:19:40 -05:00 |
|
Thomas Harte
|
bbf925a27e
|
Clarify, unify and correct decoding and encoding of [CALL/RET/JMP][near/far/relative/absolute].
|
2022-03-09 16:48:06 -05:00 |
|
Thomas Harte
|
381fd5dbe4
|
E8 is a relative call.
|
2022-03-09 16:37:07 -05:00 |
|
Thomas Harte
|
ead8b7437e
|
Remove done TODO.
|
2022-03-09 15:26:20 -05:00 |
|
Thomas Harte
|
acd9df6745
|
Fix segment/offset sizes for far calls.
|
2022-03-09 15:23:43 -05:00 |
|
Thomas Harte
|
f96c051932
|
Record PUSH immediate operation size.
|
2022-03-09 14:24:57 -05:00 |
|
Thomas Harte
|
67b2e40fae
|
Fixed: INs and OUTs remain single byte.
|
2022-03-09 10:51:16 -05:00 |
|
Thomas Harte
|
081a2acd61
|
Fix shift group operand size.
|
2022-03-09 09:33:25 -05:00 |
|
Thomas Harte
|
de79acc790
|
Fix RegAddr/AddrRegs and group 2 decoding.
|
2022-03-09 08:38:34 -05:00 |
|
Thomas Harte
|
21d4838322
|
Fix current implementation of data_segment .
As far as it goes.
|
2022-03-08 17:08:21 -05:00 |
|
Thomas Harte
|
926a373591
|
Extend SIB test, correct decoder.
|
2022-03-08 15:03:37 -05:00 |
|
Thomas Harte
|
a954f23642
|
Attempt 32-bit modregrm + SIB parsing.
|
2022-03-08 14:39:49 -05:00 |
|
Thomas Harte
|
41a104cc10
|
Adds special test/control/debug MOVs.
This'll do; it's not ideal but avoids bloating up the `Source` enum.
|
2022-03-07 17:04:05 -05:00 |
|
Thomas Harte
|
f0b4971c7b
|
Correct SHLD format.
|
2022-03-07 16:39:02 -05:00 |
|
Thomas Harte
|
8e669a32a3
|
Take a stab at group 8.
|
2022-03-07 16:34:56 -05:00 |
|
Thomas Harte
|
0e16e7935e
|
Correct double reference to Group 6.
|
2022-03-07 16:26:17 -05:00 |
|
Thomas Harte
|
7ea84d9a4e
|
Add MOVZX, MOVSX.
|
2022-03-07 16:25:44 -05:00 |
|
Thomas Harte
|
7313c89dec
|
Add BT, BTS, BTR, BTC, BSF, BSR.
|
2022-03-07 16:23:25 -05:00 |
|
Thomas Harte
|
35a66c03c2
|
Add the SETs.
|
2022-03-07 10:32:34 -05:00 |
|
Thomas Harte
|
bbb3168bae
|
Adds the missing shift group segues at c0 and c1.
|
2022-03-07 09:18:59 -05:00 |
|
Thomas Harte
|
1ea9d3faf8
|
Introduce additional forms of IMUL.
|
2022-03-07 09:05:22 -05:00 |
|
Thomas Harte
|
4479be4fd0
|
Add the two immediate PUSHes.
|
2022-03-06 14:28:41 -05:00 |
|
Thomas Harte
|
91a6bf671d
|
Also 'easy': LSS, LFS, LGS.
Though perhaps I'm off on LES and LDS?
|
2022-03-06 09:28:43 -05:00 |
|
Thomas Harte
|
49b5889d9e
|
0x8c is available on the 8086.
|
2022-03-06 09:24:59 -05:00 |
|
Thomas Harte
|
ede61ae130
|
Flag up TODOs, for easier in-editor navigation.
|
2022-03-05 17:48:01 -05:00 |
|
Thomas Harte
|
7a79111767
|
Add the easiest 80386 extensions: PUSH/POP FS/GS and longer conditional jumps.
|
2022-03-05 17:32:21 -05:00 |
|
Thomas Harte
|
6432521b9d
|
Correct two references to JP that should be JL.
|
2022-03-05 17:16:32 -05:00 |
|
Thomas Harte
|
65f578fe61
|
Add notes on all missing opcodes.
|
2022-03-05 17:16:13 -05:00 |
|
Thomas Harte
|
3a8eb4a4f0
|
Add 80386 segment overrides.
|
2022-03-05 17:03:46 -05:00 |
|
Thomas Harte
|
eb180656bb
|
Fix $8e data size, add $8c.
|
2022-03-05 17:00:48 -05:00 |
|
Thomas Harte
|
1afcbba218
|
Clarify sign extension availability.
|
2022-03-05 16:44:26 -05:00 |
|
Thomas Harte
|
8a0902a83b
|
Adapts existing opcodes for 32-bit parsing.
|
2022-03-05 13:52:07 -05:00 |
|
Thomas Harte
|
dfb312fee6
|
Make column and row meanings overt.
|
2022-03-05 11:56:08 -05:00 |
|
Thomas Harte
|
11bb594fa2
|
Sets up [ignored] memory and data size prefixes.
|
2022-03-02 20:23:35 -05:00 |
|
Thomas Harte
|
8e3ae2c78f
|
Add opcode map as documentation.
|
2022-03-02 20:00:21 -05:00 |
|
Thomas Harte
|
4b4135e35a
|
Correct #undef.
|
2022-03-01 18:23:24 -05:00 |
|
Thomas Harte
|
d1148c4cab
|
Switch to constexpr function, for guaranteed semantics.
|
2022-03-01 17:30:41 -05:00 |
|
Thomas Harte
|
8ee62b4789
|
Simplify address size semantics.
Since it'll no longer be a mode-dependant toggle, but a fully-retained value.
|
2022-03-01 17:29:26 -05:00 |
|
Thomas Harte
|
5e7a142ff1
|
Fix is_write errors, update comment, add additional source for asserts.
|
2022-03-01 16:51:54 -05:00 |
|
Thomas Harte
|
2c816db45e
|
Refactor: (i) to expose effective address calculation; and (ii) to include address size in Instruction.
|
2022-03-01 09:36:37 -05:00 |
|
Thomas Harte
|
b920507f34
|
Double down on AddressT , add an assert on memory_mask .
|
2022-02-28 10:03:58 -05:00 |
|
Thomas Harte
|
afbc57cc0c
|
Incorporate displacement, switch macro flag.
|
2022-02-28 09:53:23 -05:00 |
|
Thomas Harte
|
9f12c009d6
|
Correct data size when accessing address registers.
|
2022-02-27 19:45:03 -05:00 |
|
Thomas Harte
|
84ac68a58b
|
Fix indirect memory read/write
|
2022-02-27 18:43:00 -05:00 |
|
Thomas Harte
|
27d1df4699
|
Introduce enough of a DataPointerResolver test to build but fail.
|
2022-02-27 18:27:58 -05:00 |
|