Thomas Harte
ec2d878e3f
End run around the template.
...
I have yet to get any insight whatsoever on the reason for GCC's failure here and won't have access to a suitable test
machine for a while so all I have for testing is the arduous CI cycle.
2023-11-17 17:02:46 -05:00
Thomas Harte
a0ca5e6cdc
Remove outdated comment.
2023-11-17 10:38:11 -05:00
Thomas Harte
83c8f9996e
Switch back to the natural type.
2023-11-17 10:27:38 -05:00
Thomas Harte
3f27338b2c
New guess: the definition of size_t varies?
2023-11-16 23:46:22 -05:00
Thomas Harte
fbe02e3ad5
Randomly try a different explicit instantiation.
2023-11-16 23:37:37 -05:00
Thomas Harte
4b730c26d0
Satisfy GCC warning.
2023-11-16 23:31:51 -05:00
Thomas Harte
33486e69bf
Remove CI trap.
2023-11-16 15:30:43 -05:00
Thomas Harte
1c7bb6d759
Add CI diagnosis trap.
2023-11-16 15:25:42 -05:00
Thomas Harte
25f0a373f3
Don't sign-extend ports (!).
2023-11-16 11:17:12 -05:00
Thomas Harte
233ec7b818
Soften some warnings.
2023-11-16 10:57:17 -05:00
Thomas Harte
7323af0b41
Avoid shadowing template parameter.
2023-11-15 11:10:01 -05:00
Thomas Harte
e927fd00d8
Do just enough to include x86 code in the main build.
2023-11-15 11:01:28 -05:00
Thomas Harte
f83d2a8740
Take a swing at ENTER.
2023-11-14 16:23:24 -05:00
Thomas Harte
aafa7de536
Implement LEAVE, almost.
2023-11-14 11:39:36 -05:00
Thomas Harte
ac826f90c3
Formalise a separate manager of segments.
2023-11-14 10:56:00 -05:00
Thomas Harte
6c405680f2
Implement PUSHA, POPA.
2023-11-14 10:42:06 -05:00
Thomas Harte
1552500b10
Implement BOUND.
2023-11-13 22:33:46 -05:00
Thomas Harte
60cec9fc67
Expand commentary.
2023-11-13 11:45:17 -05:00
Thomas Harte
3a782faaf3
Ensure shoutouts upon LDS, LES and any far jump/call/int.
2023-11-10 22:58:59 -05:00
Thomas Harte
7abd4d9b38
Fix AAA/AAS carry outcome.
2023-11-10 22:47:50 -05:00
Thomas Harte
e61dc0466f
Add callout for tracking segment register changes.
2023-11-10 22:22:32 -05:00
Thomas Harte
79b126e6bb
Add route for tracking segment register changes.
2023-11-10 22:11:52 -05:00
Thomas Harte
e78e5c8101
Add remaining acceptable error cases.
2023-11-09 12:26:40 -05:00
Thomas Harte
800c76a4fe
Capture and respond to IDIV_REP.
2023-11-09 11:55:04 -05:00
Thomas Harte
5f1ea6c04c
Unify AAA and AAS.
2023-11-08 22:30:39 -05:00
Thomas Harte
8d2a2bcf4a
Unify DAA and DAS.
2023-11-08 22:26:48 -05:00
Thomas Harte
6b666bc92a
Simplify DAS.
2023-11-08 22:19:51 -05:00
Thomas Harte
38933aa079
Bring fully into 8086 conformance.
2023-11-08 22:16:12 -05:00
Thomas Harte
502b9d2023
Simplify implementation of DAA.
2023-11-08 22:06:58 -05:00
Thomas Harte
ec4a60b7da
Further universalise function layout.
2023-11-08 11:30:33 -05:00
Thomas Harte
d7bb1a9ee1
Tidy up and comment a little further.
2023-11-08 11:23:21 -05:00
Thomas Harte
9566a8de67
Split up the ungainly PerformImplementation.hpp.
2023-11-08 10:52:36 -05:00
Thomas Harte
b927cf4159
Resolve new decoding errors.
2023-11-07 22:08:44 -05:00
Thomas Harte
91b7d55871
Get strict about writeables.
2023-11-07 10:13:18 -05:00
Thomas Harte
e56e49a318
Fix SUB/SBB writes.
2023-11-07 10:09:04 -05:00
Thomas Harte
0262875088
Claw back to building.
2023-11-07 09:58:42 -05:00
Thomas Harte
2bed2c2c5c
Further simplify syntax.
2023-11-07 09:14:42 -05:00
Thomas Harte
2af774601f
Temporarily disentangle Memory
and access internals; start to be overt in PerformImplementation.
2023-11-06 16:04:31 -05:00
Thomas Harte
797c9fe129
Temporarily avoid use of Writeable.
2023-11-05 21:47:52 -05:00
Thomas Harte
009915f4de
Start promotion of ReturnType.
2023-11-05 21:42:22 -05:00
Thomas Harte
f96c33102a
Add documentation.
2023-11-04 22:22:50 -04:00
Thomas Harte
5739862dbb
Add specific entryway for preauthorised writes.
2023-11-03 15:36:30 -04:00
Thomas Harte
ebdf10525c
Fix parameter case.
2023-11-02 17:00:22 -04:00
Thomas Harte
83850d7596
Commute: Status -> Flags as per usual x86 naming.
2023-11-02 16:55:38 -04:00
Thomas Harte
770803b073
Be more careful as to authorisation.
2023-11-02 15:37:59 -04:00
Thomas Harte
e4fdf09149
Fix PUSH SP, far call. Further simplify FlowController.
2023-11-01 23:39:52 -04:00
Thomas Harte
acb55aa4e2
Subsume repetition of arguments into a single context.
...
Albeit that it (temporarily?) loses some context used during test validation.
2023-11-01 17:03:23 -04:00
Thomas Harte
bc095bb9ce
Slim down the flow controller.
2023-11-01 14:49:30 -04:00
Thomas Harte
097b328075
Split the preauthorised tracks.
2023-11-01 14:31:42 -04:00
Thomas Harte
ef83ac855a
Fix spelling of Preauthorised, think further on return types.
2023-11-01 14:11:10 -04:00
Thomas Harte
430c60111e
CMP doesn't write.
2023-10-31 22:42:39 -04:00
Thomas Harte
2432396eaa
Fix SETMOC.
2023-10-31 22:04:26 -04:00
Thomas Harte
da2aea94e3
Fix CMPS.
2023-10-31 21:58:32 -04:00
Thomas Harte
9538491ee9
Fix pushes and pops.
2023-10-31 21:55:30 -04:00
Thomas Harte
724e08d4f1
Update commentary on semantics.
2023-10-31 15:09:21 -04:00
Thomas Harte
1d479ec2d7
Ensure that reads can only read, accept that source is sometimes written to. E.g. XCHG.
2023-10-31 15:06:19 -04:00
Thomas Harte
1cd1bbd26c
Make a first pass of access types.
2023-10-29 16:19:10 -04:00
Thomas Harte
7a886f938a
Propagate access types, even if incorrect.
2023-10-29 14:33:39 -04:00
Thomas Harte
3ee0fcaaeb
Hatch an appropriate enum.
2023-10-28 15:56:37 -04:00
Thomas Harte
f9d1a4dd8f
Add Repetition::Rep to unify repeat logic.
2023-10-27 16:27:24 -04:00
Thomas Harte
66cee41b99
Fix port.
2023-10-27 14:04:23 -04:00
Thomas Harte
a30cad5e8a
Rearrange class for clarity.
2023-10-27 14:02:53 -04:00
Thomas Harte
f9d98ed219
Fix packing_size
.
2023-10-27 13:46:14 -04:00
Thomas Harte
2d70b44303
Boil down segment ahead of time.
2023-10-27 12:54:42 -04:00
Thomas Harte
5b0d2d754f
Update comments.
2023-10-26 23:27:56 -04:00
Thomas Harte
11b032fb06
Eliminate length extension.
2023-10-26 23:19:31 -04:00
Thomas Harte
8e35a56ff7
Include repetition in operation; simplify Instruction constructor.
2023-10-26 23:08:07 -04:00
Thomas Harte
dafb134cdc
Eliminate dead detour.
2023-10-25 22:27:44 -04:00
Thomas Harte
de230fb6be
Resolve for work factored out.
2023-10-25 22:21:23 -04:00
Thomas Harte
29a921f764
Remove TODO, add exposition.
2023-10-25 16:15:08 -04:00
Thomas Harte
a2826cdee5
Propagate address size.
2023-10-25 16:00:01 -04:00
Thomas Harte
3b62638b30
Remove dead DataPointerResolver and extra-conditional version of source().
2023-10-25 14:43:58 -04:00
Thomas Harte
0c09c14baa
Incorporate instruction length into offsets.
2023-10-25 13:02:43 -04:00
Thomas Harte
6dd5628dd6
Provide full pair for string conversion.
2023-10-25 11:21:11 -04:00
Thomas Harte
239ce75db6
Fix IN and OUT conversion.
2023-10-24 22:35:13 -04:00
Thomas Harte
cc9e8117ab
Add note.
2023-10-24 16:43:22 -04:00
Thomas Harte
e36274e5c2
Add segment prefix for MOVS, LODS, etc.
2023-10-24 15:07:53 -04:00
Thomas Harte
0e027445d4
Don't offer repne for reps; print far CALLs and JMPs as h-suffix rather than 0x prefix.
2023-10-24 11:01:38 -04:00
Thomas Harte
20d7079006
Start adaptation to new test disassembly form.
2023-10-23 16:37:27 -04:00
Thomas Harte
7a4d74b8e4
Correct copy and paste error: 0x27 is DAA.
2023-10-23 10:07:57 -04:00
Thomas Harte
82c66e7433
Fix far jump with immediate operand.
...
1655 failures remaining.
2023-10-23 10:07:19 -04:00
Thomas Harte
817a30332c
Take a swing at LEA r16, r16.
2023-10-22 22:15:27 -04:00
Thomas Harte
e3cdf113d1
Implement INS, OUTS.
2023-10-21 22:52:50 -04:00
Thomas Harte
aade91f043
Implement IN, OUT.
2023-10-21 22:37:25 -04:00
Thomas Harte
c2ebbe5ad9
Implement STOS with one failure.
2023-10-20 21:54:30 -04:00
Thomas Harte
4efc181f07
Fix memory handler, STOS.
2023-10-20 21:49:34 -04:00
Thomas Harte
93e90b09a0
Implement MOVS, STOS, revealing an issue in the memory handler.
2023-10-20 21:46:47 -04:00
Thomas Harte
dab3dcaafb
Fix LODS: REP is not REPE.
2023-10-20 21:36:50 -04:00
Thomas Harte
8caad8b99d
Document slightly.
2023-10-20 17:25:27 -04:00
Thomas Harte
bee094eba1
Add LODS; somehow manage to fail some of its tests.
2023-10-20 17:13:56 -04:00
Thomas Harte
bcebb2e520
Further reduce repetition overhead.
2023-10-20 17:08:11 -04:00
Thomas Harte
0f5e0e17a4
Fix address manipulation.
2023-10-20 17:03:23 -04:00
Thomas Harte
49ac2d8e0c
Improve error reporting, remove some dead TODOs.
2023-10-20 17:00:32 -04:00
Thomas Harte
a71db54212
Simplify flow slightly; uncover issues in CMPSW.
2023-10-20 16:52:47 -04:00
Thomas Harte
efb854ddfa
Fix repetition. Sufficient for tests.
2023-10-19 14:40:03 -04:00
Thomas Harte
387a952328
Reduce repetition.
2023-10-19 14:21:08 -04:00
Thomas Harte
f715cd89a9
Attempt CMPS, changing storage of direction; add flags check.
2023-10-19 14:07:59 -04:00
Thomas Harte
617be7cba7
Implement PUSHes and POPs.
2023-10-18 15:59:39 -04:00
Thomas Harte
02cea3047e
Implement LOOP, LOOPE, LOOPNE.
2023-10-18 14:04:21 -04:00
Thomas Harte
a8c7871b0c
Implement JCXZ.
2023-10-18 13:20:28 -04:00
Thomas Harte
90f49a6e73
Implement JMP.
2023-10-18 13:15:00 -04:00
Thomas Harte
440f3bdb10
Further improve error reporting.
2023-10-16 15:47:06 -04:00
Thomas Harte
89743f0ba0
Implement RET, IRET.
2023-10-16 15:40:24 -04:00
Thomas Harte
f1779e6067
Implement SHR.
2023-10-16 12:34:11 -04:00
Thomas Harte
e38fe7dffc
Implement SAL, SAR.
2023-10-14 21:42:33 -04:00
Thomas Harte
f1cba4eb78
Implement remaining rolls.
2023-10-13 22:03:54 -04:00
Thomas Harte
f45d8bcbdb
Implement RCR.
2023-10-13 21:44:48 -04:00
Thomas Harte
6f7991f54a
Avoid loop.
2023-10-13 21:32:35 -04:00
Thomas Harte
6ec291d96f
Move ownership of mask test.
2023-10-13 15:34:06 -04:00
Thomas Harte
1a0f848b21
Implement RCL.
2023-10-13 14:44:22 -04:00
Thomas Harte
bf832768e6
Implement XLAT.
2023-10-12 21:12:03 -04:00
Thomas Harte
d35377c776
Implement SALC, SETMO, SETMOC.
2023-10-12 15:52:05 -04:00
Thomas Harte
97d3a9fa78
Implement MOV.
2023-10-12 15:34:46 -04:00
Thomas Harte
da029ee344
Implement LEA.
2023-10-12 14:31:25 -04:00
Thomas Harte
cf846f501a
Implement LDS, LES.
2023-10-12 14:24:28 -04:00
Thomas Harte
e948a67814
Implement SAHF, LAHF.
2023-10-12 13:54:51 -04:00
Thomas Harte
56e639e09a
Add INT (including INT3), INTO.
2023-10-11 16:01:09 -04:00
Thomas Harte
e75ef70c96
Further generalise.
2023-10-11 15:08:04 -04:00
Thomas Harte
a768b101f8
Further clean up copy-and-paste mess.
2023-10-11 14:36:42 -04:00
Thomas Harte
7159366360
Collapse all flags accesses behind setters and getters.
2023-10-11 12:35:17 -04:00
Thomas Harte
033ba75376
Standardise repetitive sign/zero/parity sets.
2023-10-11 11:15:59 -04:00
Thomas Harte
fbd647080d
Start factoring out useful ALU stuff.
2023-10-11 11:06:20 -04:00
Thomas Harte
4a803e2d43
Reduce ADD/ADC/SUB/SBB repetition.
2023-10-10 22:43:06 -04:00
Thomas Harte
7753497a93
Add header for std::swap.
2023-10-10 22:35:25 -04:00
Thomas Harte
a83b43a1ae
Implement XCHG.
2023-10-10 22:34:42 -04:00
Thomas Harte
5125907048
Implement TEST.
2023-10-10 22:28:10 -04:00
Thomas Harte
08867f4970
Implement CMP.
2023-10-10 22:15:33 -04:00
Thomas Harte
d0a9b5cb81
Implement NEG, NOT.
2023-10-10 22:09:10 -04:00
Thomas Harte
0ecc319ee6
Add OR, XOR.
2023-10-10 17:12:06 -04:00
Thomas Harte
de95026076
Implement Jcc.
2023-10-10 16:27:06 -04:00
Thomas Harte
ec982444f7
Add getters to obscure internal flag storage.
2023-10-10 16:14:20 -04:00
Thomas Harte
f083eab011
Implement INC, DEC.
2023-10-10 15:57:33 -04:00
Thomas Harte
3d08953103
Add TODO.
2023-10-10 12:43:41 -04:00
Thomas Harte
dbf7d07609
Add DIV, faulty IDIV.
2023-10-10 10:34:18 -04:00
Thomas Harte
0412890923
Add STC, STD, STI.
2023-10-09 22:16:37 -04:00
Thomas Harte
5e830781cc
Implement IMUL, improve test memory footprint.
2023-10-09 22:12:15 -04:00
Thomas Harte
ff6573dd02
Implement MUL.
2023-10-09 21:50:17 -04:00
Thomas Harte
e46e42d896
This is the same test either way around.
2023-10-09 16:47:02 -04:00
Thomas Harte
1cb26cb141
Pull add/sub distinction into templates.
2023-10-09 16:40:50 -04:00
Thomas Harte
f74ca8aee1
Fix SBB.
2023-10-09 16:32:01 -04:00
Thomas Harte
58aa1da649
Fix SUB. SBB still failing.
2023-10-09 16:30:47 -04:00
Thomas Harte
67d364cc89
Add faulty SUB, SBB.
2023-10-09 16:21:04 -04:00
Thomas Harte
d24fa381c7
'Implement' ESC, NOP.
2023-10-09 15:03:01 -04:00
Thomas Harte
fe6e2eb0a1
Generalise CBW.
2023-10-09 15:00:04 -04:00
Thomas Harte
08aed3bac5
Implement CWD.
2023-10-09 14:54:14 -04:00
Thomas Harte
6bbd896c34
Add DAS with a manageable number of failures.
2023-10-09 14:47:39 -04:00
Thomas Harte
0bf2099a70
Improve DAA.
2023-10-09 14:42:32 -04:00
Thomas Harte
1b9e6e8c8e
Add DAA, which doesn't yet pass all tests.
2023-10-09 14:27:02 -04:00
Thomas Harte
59521f9d38
Implement CBW, CLC, CLD, CLI, CMC.
2023-10-09 11:59:38 -04:00
Thomas Harte
769aed10ea
Reduce repetition.
2023-10-09 11:49:38 -04:00