Thomas Harte
|
42927c1e32
|
Establish more of the 680x0 executor loop.
|
2022-05-01 13:00:20 -04:00 |
|
Thomas Harte
|
df999978f1
|
Figure out what the call to perform should look like.
Albeit that this class doesn't currently offer any of the proper flow control actions.
|
2022-04-30 20:34:44 -04:00 |
|
Thomas Harte
|
43cd740a7b
|
Shuffle Step to give meaning to the LSB.
|
2022-04-30 20:33:35 -04:00 |
|
Thomas Harte
|
52f355db24
|
Decision: operation is not a template parameter. Hence can use condition as fully typed.
|
2022-04-30 14:08:51 -04:00 |
|
Thomas Harte
|
a86c5ccdc9
|
Merge branch '68000Perform' of github.com:TomHarte/CLK into 68000Perform
|
2022-04-30 14:02:23 -04:00 |
|
Thomas Harte
|
e532562108
|
Merge branch 'master' into 68000Perform
|
2022-04-30 14:02:17 -04:00 |
|
Thomas Harte
|
8d24c00df2
|
Include decoded condition in Preinstruction.
|
2022-04-30 09:00:47 -04:00 |
|
Thomas Harte
|
f4074e0bba
|
Add basic status.
|
2022-04-30 08:38:28 -04:00 |
|
Thomas Harte
|
e4426dc952
|
Introduce calculate EA steps.
|
2022-04-29 20:30:48 -04:00 |
|
Thomas Harte
|
9359f6477b
|
Start drafting an Executor.
|
2022-04-29 17:12:06 -04:00 |
|
Thomas Harte
|
a103f30d51
|
Attempt to game out LEA, PEA. Add various special MOVEs.
|
2022-04-29 14:43:58 -04:00 |
|
Thomas Harte
|
78b60dbd1a
|
Evict MOVEM and MOVEP, enable TRAP and TRAPV, complete CHK.
|
2022-04-29 14:43:30 -04:00 |
|
Thomas Harte
|
cde75a1c00
|
Make steps more visible.
|
2022-04-29 11:26:39 -04:00 |
|
Thomas Harte
|
b9d243552c
|
MOVEs don't read from operand 2.
|
2022-04-29 11:22:06 -04:00 |
|
Thomas Harte
|
85242ba896
|
Add to Xcode project, template on Model as per CLR being odd. Fill in some obvious answers.
|
2022-04-29 11:10:14 -04:00 |
|
Thomas Harte
|
d16dab6f62
|
Starts introducing a sequencer, to resolve responsibility of perform .
|
2022-04-29 10:40:19 -04:00 |
|
Thomas Harte
|
8066b19f93
|
Correct typos.
|
2022-04-29 07:57:02 -04:00 |
|
Thomas Harte
|
abd2a831a3
|
Added a further ambiguity.
|
2022-04-29 05:08:44 -04:00 |
|
Thomas Harte
|
824d3ae3f7
|
Conclusion: a union does produce better code.
(But needn't be so verbose)
|
2022-04-29 04:51:02 -04:00 |
|
Thomas Harte
|
727a14c6f9
|
Add notes for myself on decisions yet to make.
|
2022-04-29 03:53:17 -04:00 |
|
Thomas Harte
|
13d20137d3
|
Tackle two lingering references to exception_handler.
|
2022-04-29 03:38:23 -04:00 |
|
Thomas Harte
|
9680566595
|
Include in automated build, temporarily.
|
2022-04-28 20:42:44 -04:00 |
|
Thomas Harte
|
33c9ea2cf7
|
A flow controller feels more natural than an exception handler.
|
2022-04-28 20:42:04 -04:00 |
|
Thomas Harte
|
1d8d2b373b
|
Port all simple instruction bodies.
|
2022-04-28 16:55:47 -04:00 |
|
Thomas Harte
|
611b472b12
|
Add evaluate_condition , to check standard 68000 condition codes.
|
2022-04-28 16:54:57 -04:00 |
|
Thomas Harte
|
bb73eb0db3
|
Start working on an isolation of 68000 instruction execution.
|
2022-04-28 15:35:40 -04:00 |
|
Thomas Harte
|
39261436c8
|
Remove unused type alias.
|
2022-04-27 19:53:32 -04:00 |
|
Thomas Harte
|
5e355383df
|
Correct SIB test.
|
2022-04-27 19:53:15 -04:00 |
|
Thomas Harte
|
9cbbb6e508
|
Adjust path to match namespace; add to Qt project.
|
2022-04-27 08:05:36 -04:00 |
|
Thomas Harte
|
8902bb1af0
|
Include size and supervisor flag in Preinstruction.
|
2022-04-26 19:44:02 -04:00 |
|
Thomas Harte
|
baf1bd354d
|
Avoid packing/unpacking of operands.
|
2022-04-26 19:37:07 -04:00 |
|
Thomas Harte
|
539c2985aa
|
Fill in size table, define quick to return a uint32_t .
|
2022-04-26 12:30:14 -04:00 |
|
Thomas Harte
|
5c356e15b5
|
Completes requires_supervisor .
|
2022-04-25 20:05:45 -04:00 |
|
Thomas Harte
|
8ff0b71b29
|
Subsume MOVEQ into MOVE.l; add missing invalid_operands.
|
2022-04-25 19:58:19 -04:00 |
|
Thomas Harte
|
8f8f201186
|
Complete transition to simple AND-based verification.
|
2022-04-25 16:23:16 -04:00 |
|
Thomas Harte
|
0c688757b0
|
Adapt the last of the MOVEs, TAS, NOT, SUB and TST.
|
2022-04-25 16:05:44 -04:00 |
|
Thomas Harte
|
5778e92e70
|
Adapt MOVE, DIV, MUL, OR.
|
2022-04-25 15:43:25 -04:00 |
|
Thomas Harte
|
3268ea42ff
|
Translate SUB, PEA.
|
2022-04-25 12:41:41 -04:00 |
|
Thomas Harte
|
1538500903
|
Add enough to make AND masks the default case.
|
2022-04-25 12:30:44 -04:00 |
|
Thomas Harte
|
6ca30a16ca
|
Update JMP, JSR.
|
2022-04-25 12:05:07 -04:00 |
|
Thomas Harte
|
e6dc2e0d31
|
Add EXG, EXT.
|
2022-04-25 11:49:14 -04:00 |
|
Thomas Harte
|
9bbd1390c1
|
Add new-style validation of EORI to CCR, move EXG decoding into page navigation.
|
2022-04-25 11:43:30 -04:00 |
|
Thomas Harte
|
27f8db6e8b
|
Update DBcc, DIVU/DIVS, EOR.
|
2022-04-25 09:49:18 -04:00 |
|
Thomas Harte
|
dda0c0e097
|
Update CMPM, CMPI.
|
2022-04-25 09:39:22 -04:00 |
|
Thomas Harte
|
f5ea5c26a3
|
Translate CHK, CLR, CMP, CMPA.
|
2022-04-24 21:05:00 -04:00 |
|
Thomas Harte
|
d01fa96177
|
Port BSR, BTST.
|
2022-04-24 20:49:41 -04:00 |
|
Thomas Harte
|
03caa53863
|
Translate BSET.
|
2022-04-24 19:58:10 -04:00 |
|
Thomas Harte
|
4f4a2e6d92
|
Translate ASL, ASR, Bcc, BCHG, BCLR.
|
2022-04-24 19:53:54 -04:00 |
|
Thomas Harte
|
87178ed725
|
Port AND.
|
2022-04-24 15:12:18 -04:00 |
|
Thomas Harte
|
94e5436f6e
|
Attempt a more compact retelling.
|
2022-04-24 14:47:14 -04:00 |
|
Thomas Harte
|
b965f2053a
|
Start experimenting with a simple AND for operand validation.
|
2022-04-24 10:43:06 -04:00 |
|
Thomas Harte
|
edee078f0a
|
Eliminate last set of failures.
|
2022-04-22 20:57:45 -04:00 |
|
Thomas Harte
|
d4b766bf3f
|
Introduce directional ADD/SUB/AND/OR.
Just 512 failures to go.
|
2022-04-22 20:37:09 -04:00 |
|
Thomas Harte
|
72772c9a83
|
Remove branch from combined_mode .
On x86 it was probably only a conditional move, but this is fine.
|
2022-04-22 15:11:41 -04:00 |
|
Thomas Harte
|
4c806d7c51
|
Tidy up slightly, ahead of a final push to getting complete test success.
After which I can start undoing style errors.
|
2022-04-22 14:51:25 -04:00 |
|
Thomas Harte
|
96afcb7a43
|
Introduce remainder of tests.
|
2022-04-22 14:33:43 -04:00 |
|
Thomas Harte
|
efeee5160e
|
Add tests for RTE, RTR, TRAP, TRAPV, CHK.
|
2022-04-22 10:06:39 -04:00 |
|
Thomas Harte
|
06fb502047
|
Add MUL/DIV tests and exclusions.
|
2022-04-22 09:47:16 -04:00 |
|
Thomas Harte
|
977192f480
|
Resolve D-page decoding errors.
In particular: that I'd overlooked CMPM, and was treating NOT as two-operand.
|
2022-04-22 09:24:16 -04:00 |
|
Thomas Harte
|
cf66d9d38d
|
Add failing tests for EOR, NOT, OR; disambiguate EOR vs CMP.
|
2022-04-21 20:36:04 -04:00 |
|
Thomas Harte
|
25eeff8fc5
|
Correct CMP decoding, correct AND as far as asymmetry of Dn, Dn.
|
2022-04-21 20:14:52 -04:00 |
|
Thomas Harte
|
bf9fc0ae96
|
Correct decoding of BSR.
|
2022-04-21 16:24:34 -04:00 |
|
Thomas Harte
|
a8a1a74b79
|
Correct BSRb quick value.
|
2022-04-21 16:13:06 -04:00 |
|
Thomas Harte
|
549e440f7c
|
Add 'quick' decoding and testing.
|
2022-04-21 16:05:00 -04:00 |
|
Thomas Harte
|
45c02c31f8
|
Add MOVEM exclusions.
|
2022-04-21 15:47:34 -04:00 |
|
Thomas Harte
|
b6b092d124
|
Add tests, exclusions for rest of shift/roll group.
|
2022-04-21 11:26:56 -04:00 |
|
Thomas Harte
|
3af93ada6f
|
Test and correct Bcc, BSR, CLR, NEGX, NEG.
|
2022-04-20 20:19:56 -04:00 |
|
Thomas Harte
|
dc16928f74
|
Add appropriate exclusions for JSR, JMP, Scc.
|
2022-04-20 16:56:26 -04:00 |
|
Thomas Harte
|
80ff146620
|
Add CMP, CMPA and TST tests and exclusions.
|
2022-04-20 16:29:45 -04:00 |
|
Thomas Harte
|
d4fe9d8166
|
Complete BTST/etc exclusions.
|
2022-04-20 16:16:24 -04:00 |
|
Thomas Harte
|
85a0af03c1
|
Import more standard JSON; start validating.
|
2022-04-20 09:17:00 -04:00 |
|
Thomas Harte
|
dc43f5605b
|
Give MOVEPs precedence.
|
2022-04-20 08:40:56 -04:00 |
|
Thomas Harte
|
fab064641f
|
Add Move[to/from][SR/CCR/USP] tests, correct decodings.
|
2022-04-20 07:59:13 -04:00 |
|
Thomas Harte
|
316e9681cc
|
Weed out false PEAs.
|
2022-04-19 20:34:08 -04:00 |
|
Thomas Harte
|
4181313cc6
|
Correct decoding of SWAP.
|
2022-04-19 20:28:00 -04:00 |
|
Thomas Harte
|
6aabc5e7b0
|
Test LEA, PEA, add name for MOVEq.
|
2022-04-19 19:45:51 -04:00 |
|
Thomas Harte
|
343a8e0192
|
Resolve wrong-headed mapping of LEA to MOVEAl.
|
2022-04-19 19:36:21 -04:00 |
|
Thomas Harte
|
ef87d09cfa
|
Clear up MOVEs, fail on MOVEAs.
|
2022-04-19 17:13:23 -04:00 |
|
Thomas Harte
|
d21c67f237
|
Don't permit byte move from address register.
|
2022-04-19 16:49:26 -04:00 |
|
Thomas Harte
|
de40fed248
|
Test MOVEs and add operand validation.
|
2022-04-19 16:31:03 -04:00 |
|
Thomas Harte
|
76d7e0e1f8
|
Test and correct SUBs.
|
2022-04-19 16:27:20 -04:00 |
|
Thomas Harte
|
1f585d67b6
|
ADDA: correct decoding, add validation.
|
2022-04-19 14:43:01 -04:00 |
|
Thomas Harte
|
5b22e94a4b
|
Map invalid reg+mode combinations to AddressingMode::None; add validation of ADDs and decoding of ADDX.
|
2022-04-19 14:36:36 -04:00 |
|
Thomas Harte
|
7749aef6b6
|
Improve const correctness.
|
2022-04-19 14:35:40 -04:00 |
|
Thomas Harte
|
5de8fb0d08
|
Disallow four illegal NBCD addressing modes.
|
2022-04-19 09:59:02 -04:00 |
|
Thomas Harte
|
19f7335926
|
Add post validation step.
|
2022-04-19 09:44:02 -04:00 |
|
Thomas Harte
|
99f4cd867d
|
Decode the two EXTs.
|
2022-04-19 08:42:17 -04:00 |
|
Thomas Harte
|
93fe3459fd
|
The quick value won't always fit in reg; turf the problem elsewhere.
|
2022-04-19 08:37:35 -04:00 |
|
Thomas Harte
|
1abd3bd7f3
|
Decode SWAP.
|
2022-04-19 08:37:13 -04:00 |
|
Thomas Harte
|
fc4fd41be4
|
Reorder from most specific to least.
|
2022-04-19 08:00:52 -04:00 |
|
Thomas Harte
|
e4c6251ef5
|
Express the BSR/Bcc.l test properly.
|
2022-04-18 14:42:31 -04:00 |
|
Thomas Harte
|
7aa250eaf7
|
Advances to hitting the same absent/present mapping as the old decoder.
|
2022-04-18 14:41:26 -04:00 |
|
Thomas Harte
|
ff380b686a
|
Decode MOVEq.
|
2022-04-18 09:12:45 -04:00 |
|
Thomas Harte
|
d2452f4b68
|
Fix SUBQ ExtendedOperation mappings.
|
2022-04-18 09:08:49 -04:00 |
|
Thomas Harte
|
deb9c32a38
|
Add missing Sccs.
|
2022-04-18 09:04:17 -04:00 |
|
Thomas Harte
|
440f45b996
|
Attempt decoding and disambiguation of Scc, DBcc, Bcc and BSR.
|
2022-04-18 08:55:46 -04:00 |
|
Thomas Harte
|
7d64c4ec66
|
Add STOP.
|
2022-04-18 08:29:10 -04:00 |
|
Thomas Harte
|
7fe0d530c1
|
Add a decoder for TRAP.
|
2022-04-18 08:05:33 -04:00 |
|
Thomas Harte
|
c944767554
|
Better document decoding patterns, add LEA and CHK.
|
2022-04-18 08:00:43 -04:00 |
|
Thomas Harte
|
fde5a1c507
|
Ensure ADDI, SUBI, etc, provide an operation.
|
2022-04-18 07:42:30 -04:00 |
|
Thomas Harte
|
1991ed0804
|
Introduce failing [partial-]test of new 68000 decoder.
|
2022-04-18 07:23:25 -04:00 |
|
Thomas Harte
|
4eb752b000
|
Even out tabs.
|
2022-04-15 20:41:39 -04:00 |
|
Thomas Harte
|
bfb29a58f3
|
Take another crack at neatness; make LEA overt.
|
2022-04-15 20:33:59 -04:00 |
|
Thomas Harte
|
f86e455a87
|
Advance permissively through the 4xxx page to LEA.
|
2022-04-15 16:01:33 -04:00 |
|
Thomas Harte
|
faa35fe9fc
|
Decode MOVE and the fixed 0x4xxx set.
|
2022-04-15 15:40:31 -04:00 |
|
Thomas Harte
|
89b8b59658
|
Ostensibly completes the 0 line.
|
2022-04-15 15:33:54 -04:00 |
|
Thomas Harte
|
de55a1adc4
|
Require a model for decoding; shift a bunch of immediates into ExtendedOperation.
|
2022-04-15 09:40:37 -04:00 |
|
Thomas Harte
|
d1613025ee
|
For now, assume the .q actions can be handled inside Preinstruction.
|
2022-04-13 09:29:12 -04:00 |
|
Thomas Harte
|
cc4431c409
|
Expand decode to accept a wider array of operations, and then funnel them down.
|
2022-04-12 16:17:30 -04:00 |
|
Thomas Harte
|
3d5986c55d
|
Some minor style changes, plus I think I've talked myself into an expanded Operation-tracking enum. Probably.
|
2022-04-12 14:54:11 -04:00 |
|
Thomas Harte
|
9aeb6ee532
|
Formally prepare for one- and two-operand instructions.
|
2022-04-12 09:14:46 -04:00 |
|
Thomas Harte
|
e7f6cc598d
|
Make first attempt to complete broad phase of decoding.
|
2022-04-12 09:08:46 -04:00 |
|
Thomas Harte
|
cd465dd121
|
Decode page E.
|
2022-04-12 09:04:40 -04:00 |
|
Thomas Harte
|
174b48a14a
|
Populate lines 9 and D.
|
2022-04-12 08:57:40 -04:00 |
|
Thomas Harte
|
bca18e7aba
|
Fill in line decoders for 5, 6 and 7.
This leaves 9, D and E to go.
|
2022-04-12 08:44:32 -04:00 |
|
Thomas Harte
|
17e761d6c6
|
Add enough code to pages 0–3 to shift problem to decode().
|
2022-04-12 08:36:44 -04:00 |
|
Thomas Harte
|
c50556dde4
|
Create empty line decoders.
|
2022-04-12 08:16:29 -04:00 |
|
Thomas Harte
|
dd5bdd67d7
|
Add B page and a large chunk of 4.
|
2022-04-12 07:49:08 -04:00 |
|
Thomas Harte
|
21ac9363e9
|
Add page 8.
|
2022-04-11 16:32:57 -04:00 |
|
Thomas Harte
|
8e3cccf4d6
|
Begins a formalised 68k decoder.
|
2022-04-11 15:00:55 -04:00 |
|
Thomas Harte
|
bb5cf570e5
|
Remove conditional, make generic enough for both 32- and 64-bit operation.
|
2022-04-10 15:18:23 -04:00 |
|
Thomas Harte
|
7002d6d306
|
Improve accuracy of comment.
|
2022-04-10 09:37:18 -04:00 |
|
Thomas Harte
|
1b8d8f3a04
|
Default to 32-bit versions.
|
2022-04-10 09:35:58 -04:00 |
|
Thomas Harte
|
284440336d
|
Correct rotate_mask().
|
2022-04-10 09:31:39 -04:00 |
|
Thomas Harte
|
140ae7a513
|
Clarify template parameters.
|
2022-04-10 08:57:09 -04:00 |
|
Thomas Harte
|
7de50b5e2e
|
Provide 64-bit me, mb and sh. Add direct getter for rotate masks.
|
2022-04-09 21:08:01 -04:00 |
|
Thomas Harte
|
4652a84b43
|
Add exposition.
|
2022-04-09 19:20:13 -04:00 |
|
Thomas Harte
|
9e0755bc86
|
Introduce overlooked: ld, ldu, rldclx, rldcrx, rldicx, rldiclx, rldicrx, rldimix.
|
2022-04-09 18:28:51 -04:00 |
|
Thomas Harte
|
da0f7d7907
|
Rearrange into alphabetical order.
|
2022-04-09 10:20:03 -04:00 |
|
Thomas Harte
|
88d72bf31d
|
Fill in more mnemonics.
|
2022-04-08 10:01:52 -04:00 |
|
Thomas Harte
|
aac2f7dd73
|
Add missing validations.
|
2022-04-08 09:47:04 -04:00 |
|
Thomas Harte
|
1f44ad1723
|
Completes test cases.
|
2022-04-06 21:09:58 -04:00 |
|
Thomas Harte
|
4ab1857a11
|
Complete MPC601 commentary.
|
2022-04-06 20:53:44 -04:00 |
|
Thomas Harte
|
d23c714ec7
|
Build in an optional post hoc validation.
TODO: validate.
|
2022-04-05 11:23:54 -04:00 |
|
Thomas Harte
|
59a1fde2a1
|
Fix is_zero_mask.
|
2022-04-03 20:37:09 -04:00 |
|
Thomas Harte
|
31276de5c3
|
Complete 'misc instructions' tests.
|
2022-04-03 20:33:32 -04:00 |
|
Thomas Harte
|
c581aef11d
|
Test as far as mffs.
|
2022-04-03 18:29:40 -04:00 |
|
Thomas Harte
|
7f6a955a71
|
Complete the cmp set.
|
2022-04-03 15:50:03 -04:00 |
|
Thomas Harte
|
125d97cc41
|
Complete floating point tests.
|
2022-04-03 08:55:28 -04:00 |
|
Thomas Harte
|
de7d9ba471
|
Add further floating point tests.
|
2022-04-03 08:06:59 -04:00 |
|
Thomas Harte
|
ad54b44235
|
Begin documentation and testing of the floating point instructions.
|
2022-04-02 19:58:21 -04:00 |
|
Thomas Harte
|
42532ec0f5
|
Test floating point loads and stores.
|
2022-04-02 15:40:17 -04:00 |
|
Thomas Harte
|
b84fa619da
|
Test integer loads and stores.
|
2022-04-02 15:27:12 -04:00 |
|
Thomas Harte
|
8a1409184f
|
Add decoding of lwa.
|
2022-04-02 10:31:55 -04:00 |
|
Thomas Harte
|
8a3c16a5bc
|
Add lwa.
|
2022-04-02 10:26:47 -04:00 |
|
Thomas Harte
|
6343c65ce2
|
Document further; mftb is optional.
|
2022-04-02 10:09:58 -04:00 |
|
Thomas Harte
|
d5967f7834
|
Correct decoding of stwcx. and stdcx.
|
2022-04-01 20:37:36 -04:00 |
|
Thomas Harte
|
d5f7650ac1
|
Test synchronising loads and stores, further expand documentation.
|
2022-04-01 18:30:48 -04:00 |
|
Thomas Harte
|
8f580c256c
|
Remove explanations; saying nothing is better than giving incomplete advice.
|
2022-04-01 17:49:34 -04:00 |
|
Thomas Harte
|
7c8f044380
|
Complete shift tests.
|
2022-04-01 17:22:32 -04:00 |
|