Thomas Harte
a3339cf882
Fix indentation.
2024-02-27 15:30:51 -05:00
Thomas Harte
4255283e33
Deal with conditionality up front.
2024-02-26 21:36:23 -05:00
Thomas Harte
16e827bb2c
Add basic arithmetics.
2024-02-26 21:27:58 -05:00
Thomas Harte
580f402bb6
Muddle further towards data processing.
2024-02-26 14:50:45 -05:00
Thomas Harte
030dda34f0
Start poking at implementation.
2024-02-26 14:30:26 -05:00
Thomas Harte
481b6d0e69
Sketch out some status flags.
2024-02-25 22:01:51 -05:00
Thomas Harte
a88d41bf00
List the flags.
2024-02-25 15:21:54 -05:00
Thomas Harte
73d2acca12
Moderately improve comments.
2024-02-22 11:20:22 -05:00
Thomas Harte
d205e538e1
Accept the C++ I'm in; clarify and simplify interface.
2024-02-22 10:16:54 -05:00
Thomas Harte
6577f68efc
Complete instruction set; consolidate mapper.
2024-02-21 15:32:27 -05:00
Thomas Harte
e986ae2878
Add coprocessor data operations and register transfers.
2024-02-21 15:25:57 -05:00
Thomas Harte
b2696450d5
Bring forwards single data transfers.
2024-02-21 14:51:51 -05:00
Thomas Harte
2bbaf73aa2
Delete was is now duplicated.
2024-02-21 14:18:41 -05:00
Thomas Harte
0fe2c1406b
Start mutating towards a form that owns the switch.
2024-02-21 14:17:01 -05:00
Thomas Harte
954d920b9e
Extend what's held in the operation enum.
2024-02-20 14:14:18 -05:00
Thomas Harte
57b45076c5
Start dealing with per-instruction fields.
2024-02-17 22:13:51 -05:00
Thomas Harte
d639dc8bcb
Hit up some more = default
opportunities.
2024-02-17 15:42:31 -05:00
Thomas Harte
9a74ab6a8e
Switch to actual mnenomics, temporarily(?) shrink table.
2024-02-17 15:41:57 -05:00
Thomas Harte
4c53414cc3
Merge branch 'master' into ARMDecoding
2024-02-17 08:14:18 -05:00
Thomas Harte
bc5727af14
Switch to = default
.
2024-02-16 21:50:15 -05:00
Thomas Harte
bd0a15c054
Start working on ARM2 decoding.
2024-02-16 21:36:07 -05:00
Ryan Carsten Schmidt
d811501421
Compatibility fixes in Markdown files.
...
Improve compatibility with some Markdown readers like MacDown by adding
blank lines before lists. Blank lines around headers were added for
consistency. One header level was fixed. One code block was fixed.
2024-01-27 13:24:35 -06:00
Thomas Harte
b61317ba7e
Continue conversion of logging.
2024-01-19 22:02:26 -05:00
Thomas Harte
a3d37640aa
Switch include guards to #pragma once
.
2024-01-16 23:34:46 -05:00
Thomas Harte
795529ef97
Resolve sizing types.
2023-12-24 14:26:15 -05:00
Thomas Harte
cbd4f7965b
Acknowledge one further 16-bit assumption.
2023-12-24 14:22:26 -05:00
Thomas Harte
13631fb7bc
Resolve various 32->16 conversion warnings.
2023-12-24 14:14:53 -05:00
Thomas Harte
3e328bed61
Be overt about jump size, albeit without internal rigour.
2023-12-24 14:11:41 -05:00
Thomas Harte
084efdeb2d
Resolve further type conversion warnings.
2023-12-05 16:54:11 -05:00
Thomas Harte
dd04909d58
Resolve some further warnings.
2023-12-05 16:43:55 -05:00
Thomas Harte
f50c45cc1a
Treat 'invalid' as a silent failure.
2023-12-01 15:35:51 -05:00
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