jespergravgaard
bbeb37ea61
Loop unroll prepare now complete.
2018-08-21 16:45:07 +02:00
jespergravgaard
4f23ed5079
Split unroll prepare into separate pass
2018-08-21 10:01:09 +02:00
jespergravgaard
b19bf2246e
Created "loop-unroll" branch.
2018-08-19 21:48:26 +02:00
jespergravgaard
a87da922f8
Centralized getting all entry point blocks in the program into ControlFlowGraph
2018-08-12 01:03:44 +02:00
Jesper Gravgaard
75a8749db4
Moved interrrupt registers into c64.kc
2018-08-11 12:04:52 +02:00
Jesper Gravgaard
39e7ce3df1
Refactored all casts to pointers to use the generic OperatorCastPtr.
2018-08-11 11:38:19 +02:00
Jesper Gravgaard
129de6c3ec
Refactored most casts to pointers to use the generic OperatorCastPtr.
2018-08-11 11:30:19 +02:00
Jesper Gravgaard
fe7950798e
Added call-graph recursion in clobber-analysis for interrupt hardware clobber.
2018-08-11 11:08:43 +02:00
jespergravgaard
9a9eeec129
Fixed tests.
2018-08-11 00:52:02 +02:00
jespergravgaard
f33d7018ba
Implemented clobber analysis to ensure that hardware clobber interrupts only save the registers clobbered.
2018-08-11 00:48:15 +02:00
jespergravgaard
9ef574f32d
Fixed tests
2018-08-10 20:33:17 +02:00
jespergravgaard
df224c70b6
Fixed tests
2018-08-10 20:32:45 +02:00
jespergravgaard
f8ec74dc14
Implemented hardware & kernel interrupt types.
2018-08-10 12:46:44 +02:00
jespergravgaard
6a20fc33c7
Improved comments
2018-08-06 00:41:29 +02:00
jespergravgaard
044282e523
Added 2 Raster IRQ tests.
2018-08-06 00:37:40 +02:00
jespergravgaard
238cd2a531
Added volatile keyword and initial implementation ensuring that volatiles are not constant-optimized or put into registers.
2018-08-05 22:40:13 +02:00
jespergravgaard
b23029760a
IRQ referencing outside const.
2018-08-05 17:50:45 +02:00
jespergravgaard
b8841a90f5
Added forward reference support yo procedure references.
2018-08-05 17:46:42 +02:00
jespergravgaard
b755cd4297
Added interrupt types (kernel, hardware).
2018-08-05 17:28:02 +02:00
Jesper Gravgaard
f463606742
Implemented interrupt procedures and pointers to procedures initial support.
2018-08-05 13:33:23 +02:00
Jesper Gravgaard
c0c7a1da44
Fixed test
2018-08-04 13:11:34 +02:00
jespergravgaard
0763a63a66
Working on interrupts
2018-08-04 13:07:21 +02:00
jespergravgaard
18473295c9
Fixed tests
2018-08-03 02:08:39 +02:00
jespergravgaard
ca55ac68cb
Improved the multiplexer - now 32 sprites.
2018-08-03 02:02:08 +02:00
jespergravgaard
962fefe582
Improved the multiplexer
2018-08-03 00:07:42 +02:00
jespergravgaard
3559ac29d5
Improved multiplexer
2018-08-02 23:05:33 +02:00
jespergravgaard
0f4490dfb0
Implemented sprite multiplexer
2018-08-02 22:57:20 +02:00
jespergravgaard
3658d9f68e
Implemented sorter inside a multiplexer.
2018-08-02 02:53:52 +02:00
Jesper Gravgaard
c272b93872
Added kickasm support for expressions specifying bytes & cycles.
2018-07-25 20:44:10 +02:00
Jesper Gravgaard
6475f70192
Added kickasm support for bytes & cycles. Changed location to pc.
2018-07-25 19:59:49 +02:00
Jesper Gravgaard
ae765bec6b
Allowing location to be any expression that ends up being constant. Changed syntax for kickasm directives.
2018-07-25 20:09:12 +09:00
Jesper Gravgaard
19855bed21
Added "location" directive to inline kickasm to allow absolute placement.
2018-07-25 17:10:46 +09:00
Jesper Gravgaard
ea80c9445a
Fixed arrays with fixed size defined by a simple named constant.
2018-07-23 23:24:44 +09:00
Jesper Gravgaard
112087b7bb
Added iteration through all parts of the symbol table to usage finding. Now array lenghts set to constant calculations also work.
2018-07-23 16:27:30 +09:00
Jesper Gravgaard
99085f1351
Refactored ReferenceInfos to use a more abstract model of references to variables/constants.
2018-07-23 01:00:25 +09:00
Jesper Gravgaard
4b4c6f5364
Using ProgramValueIterator instead of custom loop.
2018-07-22 16:41:19 +09:00
Jesper Gravgaard
81e214cee3
Now replacing in both control flow graph and symbol table per default.
2018-07-22 16:24:08 +09:00
Jesper Gravgaard
f17422a564
Renamed ValueReplacer classes to ValueIterator to better illustrate the generic nature.
2018-07-22 16:02:51 +09:00
Jesper Gravgaard
a14fa4dec3
Eliminated AliasReplacers separate implementation of the execution. Now using a clean ValueReplacer. Also fixed Pass1GenerateSSA to use a clean ValueReplacer.
2018-07-22 14:14:15 +09:00
Jesper Gravgaard
f9449997cb
Refacing ValueReplacer
2018-07-21 23:29:11 +09:00
Jesper Gravgaard
62cfda6468
Added SymbolVariableRef (preparing for refacing ValueReplacer and ReferenceInfos)
2018-07-21 22:58:42 +09:00
Jesper Gravgaard
3328a570c6
Implemented late constant resolving for array lengths allowing the use of any constant expressions in the first/last values. The length inside the SymbolType still needs to be fixed - so a few tests currently fail.
2018-07-21 18:13:36 +09:00
Jesper Gravgaard
ac9ba0065c
Implemented late constant resolving for ranged for() allowing the use of any constant expressions in the first/last values..
2018-07-12 14:42:47 +02:00
Jesper Gravgaard
dbcbe597c0
Fixed test on Windows.
2018-07-10 22:29:12 +02:00
jespergravgaard
cda0a9b498
Added a sinus plotter to test the sinus curves against macro-generated sinus.
2018-07-10 11:56:01 +02:00
jespergravgaard
ad0512cc9d
Fixed test
2018-07-09 18:57:14 +02:00
jespergravgaard
5abd555206
Implemented initial logo scroller. Fixed long branch detection when inlining kickasm. Added needed fragments.
2018-07-09 18:39:01 +02:00
Jesper Gravgaard
5e9b15477a
Implemented sinus generator for logo scroller. Added missing fragments and fixed issue when removing an unused block also made some variables unused.
2018-07-08 23:58:43 +02:00
Jesper Gravgaard
2c0299ee09
Implemented support for resources neede for inline KickAsm code.
2018-07-07 19:23:38 +02:00
Jesper Gravgaard
a82c5cf5b1
Implemented support for inline KickAssembler code
2018-07-07 13:55:15 +02:00
jespergravgaard
198c941d85
Added syntax for extern variables and inline kickasm code
2018-07-06 12:42:59 +02:00
jespergravgaard
45f30c7031
Fixed fragment test
2018-06-03 23:33:49 +02:00
Jesper Gravgaard
364ea5e9b9
Fixed fragment tests
2018-06-02 11:34:35 +02:00
Jesper Gravgaard
11b700d269
Fixed tests
2018-06-01 00:45:18 +02:00
Jesper Gravgaard
bb1048fdfa
Fixed problem with ROL/ROR/ASL/LSR A not marked as clobbering A.
...
Working on line anim.
2018-05-31 20:01:56 +02:00
jespergravgaard
68cba8f9af
A bit more line anim - work in (early) progress. Added inlined toD018() and toDd00().
2018-05-14 23:53:03 +02:00
jespergravgaard
a7b751a9fd
A bit more line anim - work in (early) progress.
2018-05-14 10:31:43 +02:00
jespergravgaard
f492173178
Added line anim - work in (early) progress.
2018-05-08 00:25:33 +02:00
jespergravgaard
808b60d06a
Added printable error context to statements
2018-05-05 21:34:24 +02:00
jespergravgaard
21478bd5b6
Removed param-assignment attribute from call
2018-05-01 22:51:00 +02:00
jespergravgaard
e589373374
Added support for multi-level function inlining containing value-lists.
2018-05-01 22:37:28 +02:00
jespergravgaard
de8654322f
Renamed method
2018-05-01 22:10:06 +02:00
jespergravgaard
4e973cebc7
Now supporting more complex functions inlining.
2018-05-01 22:08:23 +02:00
jespergravgaard
6bd3a2dedf
Implemented function inlining. Closes #63
2018-05-01 00:09:51 +02:00
jespergravgaard
b15a88f27e
Changed control flow graph block collection to a modifiable list.
2018-04-29 22:34:26 +02:00
jespergravgaard
3879ac83b0
Added ConstantCastValue for when noop casts are used on constant values.
2018-04-29 21:39:12 +02:00
jespergravgaard
a3109431bf
Renamed modulus to modulo
2018-04-28 13:07:51 +02:00
jespergravgaard
469fd63320
Renamed modulus to modulo
2018-04-28 13:00:20 +02:00
jespergravgaard
55fa7be4d1
Implemented compound assignments. Closes #104
2018-04-28 12:06:01 +02:00
jespergravgaard
6a399cf210
Renamed boolean to bool. Closes #110
2018-04-28 08:41:05 +02:00
jespergravgaard
37e300fb2b
Added test of chained assignments.
2018-04-28 08:22:53 +02:00
jespergravgaard
7ed032f039
Fixed fragment test reference data
2018-04-28 08:15:21 +02:00
jespergravgaard
35080d08d1
Added error when encountering runtime dicision/multiplication/modulus.
2018-04-27 20:12:51 +02:00
jespergravgaard
779e10aefc
Added some basic arithmetic expression tests.
2018-04-27 16:11:42 +02:00
jespergravgaard
760ea7db44
Added missing fragment
2018-04-27 15:05:19 +02:00
jespergravgaard
521385065d
Fixed logging
2018-04-27 14:55:46 +02:00
jespergravgaard
80f57ed5f1
Added boolean pointer test and a test that modifying a constant results in an error.
2018-04-27 14:49:35 +02:00
jespergravgaard
ad54c264c4
Added boolean type variables & fragments. Lots of missing fragments. Inlining any booleans possible will improve performance. Closes #86
2018-04-27 01:09:34 +02:00
jespergravgaard
e3da759057
Added test with a constant word pointer. Added missing word fragments. Fixed issue with pointer to unused word variable.
2018-04-26 23:29:43 +02:00
jespergravgaard
9265592f25
Implemented identical phi elimination
2018-04-25 01:11:28 +02:00
jespergravgaard
b2f16e2a57
Added missing fragments and a few new synth rules for derefidx
2018-04-24 23:15:18 +02:00
jespergravgaard
34d8afcaae
Added some simple test programs for the manual.
2018-04-24 10:05:48 +02:00
jespergravgaard
34909f47d8
Recusion now detected, resulting in CompileError. Closes #88
2018-04-22 23:46:26 +02:00
jespergravgaard
a34f77d319
Improved fragment synthesis by allowing X/Y registers to be used for constant byte values - great for _derefidx_vbuc1! Closes #99
2018-04-22 22:49:40 +02:00
Jesper Gravgaard
eb2ff934c7
Added pass 2 assertion that no unversioned or fwddref variable refs exist.
2018-04-22 12:40:20 +02:00
Jesper Gravgaard
4640b31043
Added another test securing that undefined variables cannot be used even if fwd-refs are allowed.
2018-04-22 12:22:48 +02:00
jespergravgaard
c8edee4291
Implemented constant pointer detection - allowing for efficient NULL-code using const byte* NULL = $00. Closes #79
2018-04-22 11:40:25 +02:00
jespergravgaard
43395567af
Implemented constant pointer detection - allowing for efficient NULL-code using const byte* NULL = $00. Closes #79
2018-04-22 11:24:02 +02:00
jespergravgaard
3a0a8f450d
Now allowing forward references to variables (expected to be constants). Closes #101
2018-04-22 11:10:47 +02:00
jespergravgaard
13249cd744
Fixed problem where inline string is used only in hi/lo operator. Closes #103
2018-04-22 09:59:08 +02:00
jespergravgaard
b2f1e1abe3
Implemented boolean && /
2018-04-21 23:00:05 +02:00
jespergravgaard
8a7f5bde39
Implemented identification & elimination of complex constant if()s
2018-04-21 21:38:30 +02:00
jespergravgaard
5e3cbe1f3a
Added a const inline case
2018-04-20 23:09:18 +02:00
Jesper Gravgaard
b1b8f361d3
Improved bool min test
2018-04-20 20:48:13 +02:00
jespergravgaard
92cba685e1
Added another const bool test
2018-04-19 22:29:01 +02:00
jespergravgaard
ee6e58f79c
Fixed problem with PHI-blocks still referencing blocks that no longer call them bacause of constant bool if()s.
2018-04-19 01:46:41 +02:00
jespergravgaard
2fb9619381
Implemented constant if elimination and unused block removal in pass 2.
2018-04-18 23:19:25 +02:00
Jesper Gravgaard
e319ec9260
Added bool min test
2018-04-18 20:03:39 +02:00
Jesper Gravgaard
1ae9dbb6cf
Added inline string test 3 & made minor fix to dtv-blitter-min
2018-04-18 12:44:52 +02:00
jespergravgaard
3ddc19c5c2
Implemented blitter minimal example. Added missing ref files.
2018-04-15 23:32:49 +02:00
Jesper Gravgaard
c29d278146
Adding more C64DTV test programs
2018-04-15 20:02:48 +02:00
Jesper Gravgaard
9cc3490f28
Added the last modes
2018-04-14 01:08:08 +02:00
Jesper Gravgaard
7fd8669cc1
Fixed constant inlining of strings. Closes #102
2018-04-13 20:06:29 +02:00
jespergravgaard
23ff5bab95
Added Sixs FRED mode
2018-04-10 00:00:01 +02:00
jespergravgaard
301ea8b645
Added more presets
2018-04-09 08:46:37 +02:00
jespergravgaard
a49e61f747
Added more gfx to the tester
2018-04-08 02:32:37 +02:00
jespergravgaard
706734360f
Fixed tests
2018-04-07 17:03:36 +02:00
jespergravgaard
72e39f7cc4
Form and GFX are now two separate modes
2018-04-07 16:01:35 +02:00
jespergravgaard
2aef56bb2c
Implemented split screen form menu
2018-04-05 00:30:26 +02:00
jespergravgaard
6bfc6de252
Added a keyboard event queue with scanner. Using it in C64DTV Gfx Explorer.
2018-04-04 12:07:14 +02:00
jespergravgaard
93fb8e1bff
Added form colors. Added all fields to form.
2018-04-03 22:52:59 +02:00
jespergravgaard
0ad7984fe2
Added form field max values
2018-04-03 19:49:06 +02:00
jespergravgaard
25f396de12
Added z4 to tests
2018-04-03 08:21:04 +02:00
jespergravgaard
17ffe83bd2
Implemented v0.1 of a screen form library
2018-04-03 00:02:25 +02:00
jespergravgaard
91589327e3
Fixed loop detection problem.
2018-04-01 12:32:45 +02:00
jespergravgaard
10fd6ff19a
Lowered uplift combinations further for higher speed
2018-04-01 12:17:13 +02:00
jespergravgaard
617b85ba8d
Added missing a ora c
2018-04-01 04:40:28 +02:00
jespergravgaard
2d2ca18553
Fixed syntax
2018-04-01 04:38:11 +02:00
jespergravgaard
ef83e4342c
Making loop error not fail.
2018-04-01 04:00:07 +02:00
jespergravgaard
302b5a62d7
Implemented partial gfx mode tester for c64dtv. found loop error.
2018-04-01 03:58:07 +02:00
jespergravgaard
6e9503a14d
Made modes 1-3 compatible with stock C64
2018-03-29 09:19:36 +02:00
jespergravgaard
626329ddaa
Added hicol MC mode
2018-03-29 09:09:07 +02:00
jespergravgaard
89e2900fdc
Added ECM modes and MC std mode.
2018-03-29 08:49:51 +02:00
jespergravgaard
88313bbb81
added std charset / hicolor std charset and ecm std charset modes
2018-03-29 00:37:04 +02:00
jespergravgaard
7a55705b3e
Added Sixs FRED 2 mode
2018-03-28 16:43:47 +02:00
jespergravgaard
b4bfaf016a
Lowered number of uplift permutations to 1000
2018-03-28 15:21:22 +02:00
jespergravgaard
e518c393e6
Added chunky 8bpp BMM
2018-03-28 13:00:32 +02:00
jespergravgaard
839c356118
Added 8bpp Pixel Cell Mode
2018-03-27 22:32:06 +02:00
Jesper Gravgaard
46e5cb3e79
Fixed high-byteoperator problem with constants.
2018-03-27 12:01:58 +02:00
Jesper Gravgaard
39a6b0493f
Fixed high-byteoperator problem with constants.
2018-03-27 11:52:51 +02:00
jespergravgaard
b122ac8af3
Added Sixs FRED mode.
2018-03-27 10:01:28 +02:00
jespergravgaard
472e6c43bd
Better test image for Two Plane Bitmap Mode. Added keyboard glitch tester and operator hi/lo problem test.
2018-03-26 23:49:07 +02:00
jespergravgaard
6cfa6633f4
Now also eliminating unused variables from phi blocks. Closes #89
2018-03-26 21:57:30 +02:00
jespergravgaard
dc25fa7d11
Improved keyboard routine slightly.
2018-03-26 21:41:09 +02:00
jespergravgaard
770f213b40
Added missing SCREEN var
2018-03-26 00:44:41 +02:00
jespergravgaard
13a3f46858
Started C64DTV GfxMode tester
2018-03-25 23:40:38 +02:00
jespergravgaard
e01be9d33b
Added a partial 3x5 font - ref data
2018-03-25 13:31:57 +02:00
jespergravgaard
f652d14fed
Added a partial 3x5 font
2018-03-24 22:37:11 +01:00
jespergravgaard
7922d0f21a
Added missing fragments
2018-03-22 22:30:16 +01:00
Jesper Gravgaard
71e4e5d22d
Added shift support to CHARGEN tester
2018-03-22 21:50:25 +01:00
Jesper Gravgaard
49d2aaaf24
Merge remote-tracking branch 'origin/master'
2018-03-22 18:34:09 +01:00
Jesper Gravgaard
981d925a4d
Coding CHARGEN tester
2018-03-22 18:34:04 +01:00
jespergravgaard
18bf726d1c
Fixed P key
2018-03-22 00:04:41 +01:00
Jesper Gravgaard
cfd0e836ce
Added keyboard space check test program.
2018-03-20 00:52:55 +01:00
Jesper Gravgaard
b796a248c0
Added a fragment
2018-03-20 00:44:57 +01:00
Jesper Gravgaard
f613cbbe36
Added keyboard library and tester
2018-03-20 00:30:27 +01:00
jespergravgaard
2015c17d25
Updated fragment reference
2018-03-19 01:22:04 +01:00
jespergravgaard
8f6db3a39b
Implemented keyboard routines for reading the keyboard matrix status.
2018-03-19 01:15:18 +01:00
jespergravgaard
171b015d5f
Implemented simple DTV raster test
2018-03-18 16:35:47 +01:00
jespergravgaard
f212c55c02
Fixed const casting problem
2018-03-11 21:45:26 +01:00
jespergravgaard
979cb91eeb
Moved operator type inference to Operator class. Improved type inference.
2018-03-11 18:44:48 +01:00
jespergravgaard
cfa3ab9047
Renamed calculate() to calculateLiteral()
2018-03-10 21:14:51 +01:00
jespergravgaard
ec791672ce
Removed ConstantValueCalculator.
2018-03-10 21:11:24 +01:00
Jesper Gravgaard
18335aa29a
Moved constant literal value calculation into Operator
2018-03-10 17:06:42 +01:00
Jesper Gravgaard
1fa3d8bbbf
Moved statements, symbols and values into packages
2018-03-06 20:54:52 +01:00
Jesper Gravgaard
fd0b667b19
Moved expression operators to separate package
2018-03-06 19:50:26 +01:00
Jesper Gravgaard
73afb3d1be
Moved expression operators to separate classes.
2018-03-05 23:49:09 +01:00
Jesper Gravgaard
7876b98573
Caching alive combinations for better performance.
2018-03-05 10:45:07 +01:00
Jesper Gravgaard
133f8603c7
Fixed precedence problems for casts and inc/dec
2018-03-05 10:10:56 +01:00
jespergravgaard
f4196b9e67
Fixed log
2018-03-05 01:14:10 +01:00
jespergravgaard
f31eb7b1f0
Added scaled sin generator - found problem with cast & precedence.
2018-03-05 01:00:33 +01:00
jespergravgaard
0663888a3f
Added initial min/max sin-generator.
2018-02-26 23:00:10 +01:00
jespergravgaard
d5fd4a41c3
Fixed loop problem.
2018-02-25 19:27:36 +01:00
jespergravgaard
53d021bae3
Added second 8-bit sinus test (against 16-bit sinus)
2018-02-25 14:35:20 +01:00
jespergravgaard
2789361724
Fixed 8-bit sinus implementation.
2018-02-25 14:07:44 +01:00
jespergravgaard
7d26c74c21
Added initial 8-bit sinus (not quite working yet.)
2018-02-25 11:10:50 +01:00
jespergravgaard
97bc9870f9
Syntax changes
2018-02-25 00:39:19 +01:00
jespergravgaard
651de919b3
Comment fixed
2018-02-25 00:10:10 +01:00
jespergravgaard
73bdd4ff8d
Optimized sin /128 part.
2018-02-25 00:08:11 +01:00
jespergravgaard
f0917c7bed
Optimized ZP coalesce vastly.
2018-02-24 21:06:25 +01:00
jespergravgaard
1ec9060962
Added clobber test to ZP coalesce
2018-02-24 14:12:37 +01:00
jespergravgaard
a87a97c669
Moved sin to separate method.
2018-02-24 13:02:15 +01:00
jespergravgaard
948db1a389
Fixed lo/hi test
2018-02-24 08:14:01 +01:00
jespergravgaard
028fd75878
Fixed > & < for pointers.
2018-02-24 00:54:12 +01:00
jespergravgaard
b3537e3b66
Implemented full -$7fff-$7fff range word sinus generator.
2018-02-24 00:46:25 +01:00
jespergravgaard
6702baa875
Fixed lo/hi of dwords in constants.
2018-02-23 22:15:10 +01:00
jespergravgaard
37bfd18716
Working a bit on the sinus table generator.
2018-02-20 23:12:39 +01:00
jespergravgaard
696d1a1f5f
Working a bit on sinus table generator. Tested resulting sinus - it is within +/-2 of a java-calculated sinus.
2018-02-20 22:41:36 +01:00
jespergravgaard
db603554ac
Using reciprocal multiplication for divisions inside loop.
2018-02-20 10:53:31 +01:00
jespergravgaard
d3070fec14
Implemented first sinus generator using sinx=x-x^/3!+x^/5!.
2018-02-19 08:29:47 +01:00
jespergravgaard
a695a94422
Extended linear table gen with two tables.
2018-02-18 20:41:36 +01:00
jespergravgaard
b5dfef7368
Optimized line table generator. Improved const identification in phi-values.
2018-02-18 19:52:51 +01:00
jespergravgaard
0478bc7404
Limited label usage for constant integers referenced outside scope. Optimized division.
2018-02-18 19:39:08 +01:00
jespergravgaard
d3898d717e
Using labels for constant integers referenced outside scope.
2018-02-18 17:49:03 +01:00
jespergravgaard
76d3e25b84
Implemented inline dword constructor dword dw = { wl, wh };
2018-02-18 15:35:17 +01:00
jespergravgaard
0c7883532e
Split multiply tests for performance
2018-02-16 08:59:54 +01:00
jespergravgaard
8f21ffc0e4
Implemented signed word multiplication & test.
2018-02-16 01:13:57 +01:00
jespergravgaard
34d3c732da
Implemented word multiplication
2018-02-15 20:36:26 +01:00
jespergravgaard
b5a79848f3
Implemented dword ASM and printing
2018-02-15 19:50:33 +01:00
jespergravgaard
8b54f38640
Implemented bitshift signed byte multiply.
2018-02-15 12:35:40 +01:00
Jesper Gravgaard
c936da289e
Implemented normal binary multiply for unsigned integers - mul8u().
2018-02-14 11:30:31 +01:00
Jesper Gravgaard
a6f32bea13
Renamed multiply.kc to fastmultiply.kc - and methods multiply()/signed_multiply() to mulf8u(), mulf8s()
2018-02-14 10:05:18 +01:00
Jesper Gravgaard
7900c846c9
Adde useful comment
2018-02-13 23:21:24 +01:00
Jesper Gravgaard
3eb08597cf
Implemented 16bit signed division.
2018-02-13 23:10:47 +01:00
Jesper Gravgaard
1fd0cd6874
Moved remainder to global var
2018-02-13 22:07:01 +01:00
Jesper Gravgaard
8705527316
Fixed conflict
2018-02-13 21:40:52 +01:00
Jesper Gravgaard
a50d685574
Fixed problem with phi lifting not updating predecessor in phi blocks when introducing new blocks. Implemented signed division for bytes.
2018-02-13 21:27:17 +01:00
jespergravgaard
1feed93b43
Renamed long branch fix label.
2018-02-13 13:05:46 +01:00
jespergravgaard
aec15a3125
Removed a bit of unused code.
2018-02-13 12:46:35 +01:00
jespergravgaard
c8a2d03550
Fixed register coalesce issues (Double.MIN_VALUE is unexpectedly positive).
2018-02-13 04:23:44 +01:00
jespergravgaard
9f80f71c64
Isolated KickAss assembly during test. Fixed long branches. Closes #62
2018-02-13 03:34:21 +01:00
jespergravgaard
2db042801b
Isolated KickAss assembly during test. Fixed long branches. Closes #62
2018-02-13 03:34:01 +01:00
jespergravgaard
0d6ce93e93
Added KickAss assembly to Test
2018-02-12 23:41:46 +01:00
jespergravgaard
52dd6035a0
Dropped JSON serialization. Added KickAss JAR.
2018-02-12 21:39:26 +01:00
jespergravgaard
6b43d797f5
Using address-of in test-division.
2018-02-11 23:55:52 +01:00
jespergravgaard
3f62d86312
Implemented working address-of operator byte* pte = &b1;
2018-02-10 22:08:36 +01:00
jespergravgaard
085aa9f825
Added missing toString/()
2018-02-03 15:46:12 +01:00
jespergravgaard
623f83a076
Added address-of operator. Working in basic programs. Transience of variables not implemented so there is a risk the variable being referenced is optimized into a constant or removed. Closes #78
2018-02-03 13:20:34 +01:00
jespergravgaard
7343a85b91
Moved division into library
2018-02-01 22:55:26 +01:00
jespergravgaard
b502c26140
Optimizing zeropage coalesce to minimize moving values around. Closes #80
2018-02-01 22:36:54 +01:00
jespergravgaard
45302103fa
Implemented 16bit division. Added support for word arrays. (idx must be multiplied by 2 manually)
2018-02-01 20:17:08 +01:00
jespergravgaard
e0124ee654
Added 8bit unsigned division. Ensured that pointers are generated into ASM labels.
2018-01-31 21:27:23 +01:00
jespergravgaard
b466f2f5cc
Added test provoking a register clobber error.
2018-01-30 22:23:07 +01:00
jespergravgaard
63f6620246
Implemented register(A/X/Y) keyword for allocating variables to specific register. Closes #70
2018-01-30 22:18:49 +01:00
jespergravgaard
7e268c5b4f
Moving declared register through the variable chain.
2018-01-30 11:50:18 +01:00
jespergravgaard
88744c8624
Consolidating variable methods - preparing to remove the 3 sub-classes.
2018-01-30 10:23:55 +01:00
jespergravgaard
6a012a3fd0
Added register keyword
2018-01-30 10:04:35 +01:00
jespergravgaard
02d7170a4c
Made ASM parenthesis hard.
2018-01-28 23:22:22 +01:00
jespergravgaard
341d8c5556
Renamed dword fragments from vl... to vd...
2018-01-28 23:09:47 +01:00
jespergravgaard
546644b7d3
Added parenthesis to ASM expressions.
2018-01-28 23:06:19 +01:00
jespergravgaard
9b09aaab14
Made dword value higher (>$80000000)
2018-01-28 22:15:09 +01:00
jespergravgaard
3d33851983
Improved dword type inference.
2018-01-28 17:21:57 +01:00
jespergravgaard
9025b7d64a
Removed verbose log.
2018-01-28 16:39:58 +01:00
jespergravgaard
fff4299fb2
Added dword and signed dword. Closes #76
2018-01-28 16:19:15 +01:00
jespergravgaard
b3a1c330a7
Removed two synthable fragments
2018-01-28 10:25:40 +01:00
jespergravgaard
4bbddfb5e2
Added comment.
2018-01-24 23:34:35 +01:00
jespergravgaard
f599eb2735
Expanded inline casting to also handle nop casts of pointer derefs.
2018-01-24 23:29:44 +01:00
jespergravgaard
15c1108d2c
Expanded inline casting to also handle word/pointer casts. Closes #2 .
2018-01-22 00:31:28 +01:00
jespergravgaard
1646f9d3ff
Implemented inline casting - allowing for improved ASM when doing no-op casting.
2018-01-21 23:24:28 +01:00
Jesper Gravgaard
eab2e64154
Dropped suite again.
2018-01-21 16:30:37 +01:00
Jesper Gravgaard
1d54fec7be
Put tests into suite to get deterministic sequencing.
2018-01-21 11:39:06 +01:00
Jesper Gravgaard
9328608fe6
Rebuilt test files with new synth ASM's.
2018-01-21 11:14:20 +01:00
Jesper Gravgaard
2d8cf433f6
Sorting synthesis by clobber when printing. Added an handling of synths with equal cycles & clobber but different ASM.
2018-01-21 09:39:37 +01:00
jespergravgaard
267d006752
Improved bigscroll by inlining screen lines in array assignments.
2018-01-19 00:59:51 +01:00
jespergravgaard
30690b6306
Removed a bunch of synth rules. Added a few fragments.
2018-01-19 00:10:09 +01:00
jespergravgaard
cdbc2e05cf
Removed one synth rule. Fixed flaw in others.
2018-01-18 23:51:42 +01:00
Jesper Gravgaard
eadf85a048
Improved fragment generation further. Rules need clean-up soon to improve efficiency.
2018-01-18 23:21:31 +01:00
jespergravgaard
c7b6989c6c
Removed verbosity
2018-01-16 16:58:11 +01:00
jespergravgaard
08f2e3a6b8
Added rasterbar test program
2018-01-15 22:16:25 +01:00
jespergravgaard
13bd9509d1
Fixed issue with loop depth - now calculated corrent when some functions have no loops.
2018-01-15 21:02:49 +01:00
jespergravgaard
4c22877f0e
Only logging synthesis issue when set to verbose
2018-01-07 12:41:13 +01:00
jespergravgaard
a6e75ffcb0
Implemented fragment tests - first for assignment to unsigned bytes.
2018-01-07 11:42:46 +01:00
jespergravgaard
a047fedebf
Moved KC test files into separate folder
2018-01-06 16:36:54 +01:00
jespergravgaard
2603740d15
Moved KC test files into separate folder
2018-01-06 16:36:39 +01:00
jespergravgaard
40153fc6d6
Working on optimal synthesis
2018-01-06 14:01:40 +01:00
jespergravgaard
30d77c1450
Working on optimizing synthesis
2018-01-05 22:29:21 +01:00
jespergravgaard
b55485db50
Implemented sub-fragment clobber avoidance. Improved best template updating. Now the graph-based fragment synthesis system works. Still need to clean-up the synthesis rules.
2018-01-03 08:15:17 +01:00
jespergravgaard
e9965580a4
Iplemented graph based synthesis. Working on the kinks - eg. issue #75
2018-01-03 01:00:55 +01:00
jespergravgaard
b29ed11a81
Renamed fragment system classes in prepararion of graph based solution.
2018-01-02 17:09:42 +01:00
jespergravgaard
3595db56db
Renamed fragment system classes in prepararion of graph based solution.
2018-01-02 14:13:08 +01:00
jespergravgaard
2084be92e0
Implemented the rest of the comparison test. Fixed a double jump problem.
2018-01-02 10:17:59 +01:00
jespergravgaard
53d8afbb1d
Fixed an error in with comparison rewriting
2018-01-01 22:59:06 +01:00
jespergravgaard
4d46820cf4
Reformatted for code style.
2018-01-01 21:25:11 +01:00
jespergravgaard
20b9ab6881
Tried adding more memory for the Junit JVM
2018-01-01 15:59:15 +01:00
jespergravgaard
939b70aa23
Started implementing new style fragment synthesis rules. Yielding quite good initial optimizations.
2018-01-01 15:09:47 +01:00
jespergravgaard
269c1343ed
Implemented usage sorting and a file details logging option.
2017-12-31 00:15:23 +01:00
jespergravgaard
be37a45e36
Closes #9
2017-12-30 23:55:14 +01:00
jespergravgaard
14616458e5
Used usage module to identify & remove all unneeded fragments. Many unused ones moved into a new "unused" folder to be removed later.
2017-12-30 23:54:27 +01:00
jespergravgaard
aeba75906b
Removed all redundant fragment ASM files.
2017-12-30 22:17:42 +01:00
jespergravgaard
4f30cef2d3
Implemented asm template usage statistics. Now prefer synthesis over loading.
2017-12-30 21:59:23 +01:00
jespergravgaard
203af62173
Refactoring fragment synthesis to allow scoring of files & synthesis.
2017-12-30 19:22:44 +01:00
jespergravgaard
58c206cef4
Added more options to CompileLog for controlling verbosity.
2017-12-30 17:31:22 +01:00
jespergravgaard
174346d0f1
Improved Fragment Synthesis - trying all possible combinations. Closes #71
2017-12-30 17:24:30 +01:00
jespergravgaard
66fdfb08a9
Improved ZP detection
2017-12-30 14:18:57 +01:00
jespergravgaard
2367aa93cd
Added final score to the log
2017-12-30 13:45:59 +01:00
jespergravgaard
c7b137d631
Added working test for signed multiplication. Refactored AsmFragment synthesis away from relying on vwuc.
2017-12-30 11:55:28 +01:00
jespergravgaard
b95c7e20f5
Moved multiply into a library
2017-12-29 22:45:19 +01:00
jespergravgaard
df227e0b49
Implemented fast multiplication - tested that all results are correct.
2017-12-29 19:35:54 +01:00
jespergravgaard
fa00ecfbbf
Test data for alignment test
2017-12-29 18:20:44 +01:00
jespergravgaard
694fb66379
Added data alignment directive for arrays/strings.
2017-12-29 18:20:11 +01:00
jespergravgaard
39925809e3
Removed AsmFragment log again
2017-12-29 16:34:55 +01:00
jespergravgaard
b2a5e5184b
Removed AsmFragment log again
2017-12-29 16:19:23 +01:00
jespergravgaard
6b79ecc537
Implemented all fast multiply tables.
2017-12-29 16:05:27 +01:00
jespergravgaard
db6c1f54db
Improved log format slightly
2017-12-29 13:53:16 +01:00
jespergravgaard
5ec1070b41
Improved tests for CI
2017-12-29 11:40:03 +01:00
jespergravgaard
31e412bb11
Slimming log output
2017-12-29 11:21:11 +01:00
jespergravgaard
32d7db5ce7
Moved tests into Maven Test area to allow maven-based testing.
2017-12-28 15:34:32 +01:00
jespergravgaard
ff51d04356
Improved KC mul table gen.
2017-12-28 15:10:56 +01:00
jespergravgaard
d1ee716008
Improved KC mul table gen.
2017-12-28 14:46:31 +01:00
jespergravgaard
5e25684cf9
Slight improvement of code
2017-12-28 04:38:19 +01:00
jespergravgaard
6dcafb83c2
Optimized KC based multiply table generator.
2017-12-28 04:32:26 +01:00
jespergravgaard
8198b8f168
Generating fast multiply table in both ASM and KC - now word-based generation.
2017-12-28 04:13:31 +01:00
jespergravgaard
389b6042ed
Generating fast multiply table in both ASM and KC.
2017-12-28 03:32:59 +01:00
jespergravgaard
bb0aeb9e3b
Implementing fast multiplication KC program.
2017-12-28 01:50:55 +01:00
jespergravgaard
6532fdd002
Added array length mismatch error in Pass1.
2017-12-28 00:17:39 +01:00
jespergravgaard
19a040345f
Added array zero initializer and ASM .fill for arrays declared with a size but without initializer.
2017-12-27 23:53:51 +01:00
jespergravgaard
62a56f23fb
Removed unused LValueLoHiByte.
2017-12-27 22:48:26 +01:00
jespergravgaard
4bcf51732b
Added aseetion stopping compilation at pass 3 if any value list has survived.
2017-12-27 22:22:53 +01:00
jespergravgaard
347fc03f47
Made all declared arrays/strings implicitly constant.
2017-12-27 22:08:15 +01:00
jespergravgaard
4a7dd31d40
Fixed word constructor detection to detect all inline word constructors.
2017-12-27 21:47:07 +01:00
jespergravgaard
212e8572de
Improved constant string detection. Type System is still a bit of a mess.
2017-12-27 20:52:38 +01:00
jespergravgaard
8a1dbc36d7
Refactored recursive value replacement into ValueReplacer. Moved VariableReplacer to a simple ValueReplacer. Added test for true inline word constructors.
2017-12-27 13:40:55 +01:00
jespergravgaard
a3a7d02cd7
Added test to confirm that pointer destinations can now be incremented corrently. Closes #29
2017-12-26 17:38:51 +01:00
jespergravgaard
b412a4aefc
Assignments are now expressions. For-loops can now contain assignments in the increment part. LValue handling reimplemented (lvalue no longer exist in parser - only expression). RValues now also contains pointer derefs. Complex array expressions (SCREEN+$100)[i] now possible as LValues. ASM fragment generation improved to handle new more complex LValues & RValues. Closes #5 . Closes #43
2017-12-26 17:24:30 +01:00
jespergravgaard
2c44783879
Added ALU potential for _word_ operator
2017-12-26 10:31:30 +01:00
jespergravgaard
91f22c44f0
Removed all ASM steps between ASM optimizations - result smaller log file.
2017-12-26 09:15:10 +01:00
jespergravgaard
42b026a757
Allowing ZP coalescing whenever registers are the same type (before variables had to be the same type).
2017-12-26 00:24:40 +01:00
jespergravgaard
e3353acbc9
Implemented syntax for composing word from two bytes word w = { b1, b2 };
...
Optimizer still needs to attempt to (and allow) placing the two byte variables directly at the lo/hi-vars of the word wo minimize moving data around.
Closes #37
2017-12-25 23:27:54 +01:00
Jesper Gravgaard
bd3c26b5ec
Fixed constant inlining inside constant value lists.
2017-12-25 20:53:52 +01:00
Jesper Gravgaard
e314794f0b
Implemented true recursive variable replacer that can replace into pointers/value lists. Also using this when building SSA. Prepared syntax ant type inference for building a word from 2 bytes using word w = { b1, b2 };
2017-12-25 20:19:53 +01:00
Jesper Gravgaard
eb6ee9bff8
Prepared parser for inline word expressions.
2017-12-23 15:35:13 +01:00
Jesper Gravgaard
10b8431833
Simplified fragment value naming further.
2017-12-23 10:49:18 +01:00
Jesper Gravgaard
8b96c1ae40
Merge remote-tracking branch 'gitlab/master'
2017-12-23 10:31:24 +01:00
Jesper Gravgaard
9d6fd3e1c9
Simplified fragment symbol naming
2017-12-23 10:31:20 +01:00
jespergravgaard
c38e9b85e4
Implemented signed words - first test works. Closes #22
2017-12-23 02:35:50 +01:00
jespergravgaard
978c1fb997
Improved readability.
2017-12-22 14:34:10 +01:00
jespergravgaard
b3649997b6
Simplified fragement synthesis.
2017-12-13 00:48:59 +01:00
jespergravgaard
177be17dd9
Last of fragment renaming completed (zpptrby1/zpptrsby1 => pbuz1/pbsz1)
2017-12-13 00:29:48 +01:00
jespergravgaard
49b8545232
Next part of fragment renaming completed (coby1/cosby1/cowo1/coswo1 => vbuc1/vbsc1/vwuc1/vwsc1)
2017-12-12 22:39:27 +01:00
jespergravgaard
07478e86b1
Next part of fragment renaming completed (zpby1/zpsby1 => vbuz1/vbsz1)
2017-12-12 20:53:22 +01:00
jespergravgaard
8b8095ff87
First part of fragment renaming completed (aby/xby/yby/asby/xsby/ysby => vbuaa/vbuxx/vbuyy/vbsaa/vbsxx/vbsyy)
2017-12-12 00:09:14 +01:00
Jesper Gravgaard
5a819659a0
Removed signed byte register usage by allowing the fragment binding to also look at the variable type.
2017-12-10 20:00:00 +01:00
Jesper Gravgaard
e2aa0cd7e0
Removed signed byte register usage by allowing the fragment binding to also look at the variable type.
2017-12-10 19:53:14 +01:00
jespergravgaard
69dba6ea27
Added casting problem test nocast.kc
2017-12-05 23:31:43 +01:00
jespergravgaard
a79853a4ec
Improved static ASM analysis to recognize & remove several LDA/LDX/LDY of the same value.
2017-12-05 22:01:32 +01:00
jespergravgaard
c1b2b8ab7d
Added sprite MSB
2017-12-05 21:49:40 +01:00
jespergravgaard
ad9873d201
Improved slightly
2017-12-05 01:15:17 +01:00
jespergravgaard
5b070b5a27
Added progress while generating sines
2017-12-05 01:11:31 +01:00
jespergravgaard
3569405dc1
Added some consts
2017-12-04 23:54:12 +01:00
jespergravgaard
56b74e7e0f
Implemented initial sinus sprites.
2017-12-04 23:48:14 +01:00
jespergravgaard
c74b86a616
Moved tables into methods.
2017-12-03 23:24:25 +01:00
jespergravgaard
9ea1d4f2c1
Minor refactoring improving sine example.
2017-12-03 23:17:13 +01:00
jespergravgaard
c769aabc0a
Minor refactoring improving float lib.
2017-12-03 23:08:47 +01:00
jespergravgaard
80d5f2bf9d
Updated print test reference data.
2017-12-03 22:59:25 +01:00
jespergravgaard
e18a8cb7d8
Added library for using BASIC functions. Improved print library. Added test creating a sine. Added asserts for methods with to few/many parameters. Added assert for requiring procedure return value. Added som missing fragments.
2017-12-03 22:57:54 +01:00
jespergravgaard
878d3ae36b
Added tests for to few and many method parameters
2017-12-03 17:01:23 +01:00
jespergravgaard
87f58d8782
Implemented check in pass1 ensuring that all used vars have been assigned a value. Closes #8 . Closes #21 .
2017-12-03 16:49:56 +01:00
jespergravgaard
b43489f11a
Implemented ASM long label relabelling. Closes #57
2017-12-03 15:12:20 +01:00
jespergravgaard
defd957837
Intorduced better error when assigning a constant. Closes #19
2017-12-03 14:26:28 +01:00
jespergravgaard
ee5b113b3a
Declared constants only create a single version. Closes #34 .
2017-12-03 14:01:31 +01:00
jespergravgaard
0323fb0a0d
Fixed tests to take adcantadge of casting & int constant type elasticity.
2017-12-02 17:17:19 +01:00
jespergravgaard
9c39311d67
Preventing double imports. Closes #102
2017-12-02 16:56:58 +01:00
jespergravgaard
41fd3bc436
Implemented import functionality. Added import test. Closes #32 .
2017-12-02 16:35:13 +01:00
jespergravgaard
78dd8bc149
Added import keyword and failing test.
2017-12-02 00:01:53 +01:00
jespergravgaard
2f0bcfacd7
Rewrote syntax to separate declarations and statements.
2017-12-01 23:45:09 +01:00
jespergravgaard
fed99da261
Disallowing code outside methods. Closes #18 .
2017-12-01 23:25:53 +01:00
jespergravgaard
3023540e15
Refactored unused var analysis to reuse VariableReferenceInfos
2017-12-01 08:33:25 +01:00
jespergravgaard
18c36a6ed9
Implemented pass1 removal of all unused variables - but keeping all calls & side-effects. Closes #31
2017-11-30 23:19:02 +01:00
jespergravgaard
deb1304ba6
Added pass 1 base class. Added test for unused vars.
2017-11-30 21:51:13 +01:00
jespergravgaard
42840f8f77
Renamed phase 5 optimization.
2017-11-30 20:08:03 +01:00
jespergravgaard
d9490718fa
Optimizing ASM removing double jumps and unreachable code (after JMP/RTS). Closes #58 . Closes #99 .
2017-11-30 00:27:11 +01:00
jespergravgaard
6eb54c11a6
Working on improving constants.kc. Now everything works except allocation to asby (where clobber by a-register is not detected.)
2017-11-29 22:01:30 +01:00
jespergravgaard
1c59ae231e
Fixed problem with inline string by extracting them as local constants. Closes #98
2017-11-29 21:31:20 +01:00
jespergravgaard
14987484ee
Fixed live range problem when calling multiple calls one after the other. Closes #97 .
2017-11-29 12:29:57 +01:00
jespergravgaard
507b27f436
Fixed an alias problem visible in print.kc where to eager aliasing destroyed the ln function. Now aliases are not identified, when the assignment is done withing another scope.
2017-11-29 01:31:46 +01:00
jespergravgaard
1edb436dfd
Fixed problem with ++ being added twice in *(char_cursor++) = *str;
2017-11-28 01:23:59 +01:00
jespergravgaard
663b885196
Now removing any unused procedures in pass 1. Closed #96
2017-11-28 00:39:15 +01:00
jespergravgaard
b81ae706af
Fixed problem with inline data (strings/arrays) being generated at the start of methods. Closed #4
2017-11-27 23:55:39 +01:00
jespergravgaard
015de8da3d
Improved static value analysis to identify #<0, #>0 as identical to #0
2017-11-27 18:11:28 +01:00
jespergravgaard
7d08159fb2
Added test for lda #>0 / lda #<0.
2017-11-27 01:12:29 +01:00