1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-28 21:49:27 +00:00
Commit Graph

925 Commits

Author SHA1 Message Date
Thomas Harte
487ade56ed Add basic multiply. 2024-02-28 11:27:27 -05:00
Thomas Harte
60d1b36e9a Implement registers side. 2024-02-28 10:25:14 -05:00
Thomas Harte
5a48c15e46 Add scheduler side of PC writeback. 2024-02-28 10:15:23 -05:00
Thomas Harte
d6bf1808f9 Take a swing at PC-as-input. 2024-02-28 09:33:05 -05:00
Thomas Harte
b676153d21 State intention to merge status with other registers. 2024-02-27 15:36:34 -05:00
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