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
jespergravgaard
d1d6724e0b
Working on skipping unneeded lda #>0 / lda #<0. Fixed word+byte type inference.
2017-11-27 01:04:12 +01:00
jespergravgaard
cd06dd2016
Implemented type promotion & type checking of all assignments.
2017-11-27 00:34:59 +01:00
jespergravgaard
0d622f978c
Added two string problems (local & inline) to error-test-cases.
2017-11-26 21:46:53 +01:00
jespergravgaard
ae167736d4
Fixed wordexpr problem. Improved type inference of binary/unary constants. Added sby->by fragment synthesis.
2017-11-26 21:27:00 +01:00
jespergravgaard
ebb71b4130
Working on support for inline constants with multiple potential types.
...
Improving fragment synthesis.
2017-11-26 17:38:45 +01:00
jespergravgaard
c8e3b36893
Added byte casting fragments
2017-11-25 00:10:21 +01:00
jespergravgaard
96f2610d25
Fixed infinite recursion
2017-11-24 23:49:36 +01:00
jespergravgaard
0efe62585b
Added explicit casting - started testing it on byte / signed byte.
2017-11-24 23:25:16 +01:00
jespergravgaard
d348365010
Improved fragment synthesis
2017-11-23 07:31:26 +01:00
jespergravgaard
b81e8eeaa4
Improved fragment synthesis
2017-11-22 10:37:00 +01:00
jespergravgaard
a6e1f2cade
Working on support for signed bytes. Syntax done, very simple program working - explicit casting needed, better asm fragment management needed
2017-11-21 00:30:16 +01:00
jespergravgaard
a1baf2e046
Using inverse space in scroller
2017-11-17 10:17:57 +01:00
jespergravgaard
e64b12e7be
Added 8x8 char scroller
2017-11-17 09:37:11 +01:00
jespergravgaard
f28db3067b
Closes #59 Better ASM static value analysis. Analysis is string-based, so a more advanced method might yield better results - ef ever needed.
2017-11-14 00:02:31 +01:00
jespergravgaard
148f9ae072
Implemented somewhat Better ASM static value analysis. Also recognizes ZP sta zp5, ldx zp5.
2017-11-13 23:41:23 +01:00
jespergravgaard
5ed20ccc76
Added test for direct increment of constant numberic pointer ++*$d020;
2017-11-13 22:14:11 +01:00
jespergravgaard
788f3d63a2
Added test for direct increment of constant numberic pointer ++*$d020;
2017-11-13 22:00:29 +01:00
jespergravgaard
8462d75265
Closes #3 Pointer: Support calculated pointers eg. *(ptr+i)
2017-11-13 21:52:38 +01:00
jespergravgaard
365357596b
Closes #26 Change pointer derefs ASM signature to _deref_xxx (from _star_xxx)
2017-11-13 19:05:57 +01:00
jespergravgaard
f351b28f58
Using *(BGCOL)++ instead of *BGCOL=*BGCOL+1;
2017-11-13 00:55:46 +01:00
jespergravgaard
de5f92498d
Implemented more proper pointer handling by wrapping any unary *'s into PointerDerefs.
2017-11-13 00:47:05 +01:00
jespergravgaard
1b999c8c1d
Using cached symbol table for faster uplift
2017-11-11 18:45:33 +01:00
jespergravgaard
ffbc958d47
Using cached symbol table for faster uplift
2017-11-11 18:22:45 +01:00
jespergravgaard
796edcc05b
Added cached symbol table for faster uplift
2017-11-11 18:07:44 +01:00
jespergravgaard
af281612d2
Added cached map for statement from index
2017-11-11 08:46:56 +01:00
jespergravgaard
15d6935601
added TODO for compile time keyword
2017-11-10 08:29:55 +01:00
jespergravgaard
b0e6ae0b67
Added a test with two levels of methods to test live ranges / call-paths and allocation of a minimal number of registers.
2017-11-10 00:27:56 +01:00
jespergravgaard
514797897e
Optimized effective live ranges further to improce uplift speed
2017-11-10 00:12:34 +01:00
jespergravgaard
a3c18cf756
Optimized live range equivalence classe set lookup from variable to spped up uplift.
2017-11-10 00:01:49 +01:00
jespergravgaard
58500b39e0
Implemented a less verbose statement print for uplift performance
2017-11-09 23:28:21 +01:00
jespergravgaard
88d765324a
Caching statement->block mapping for uplift performance
2017-11-09 23:05:23 +01:00
jespergravgaard
fdf4e7ac3a
Caching Variable Reference Infos to improve uplift performance.
2017-11-09 22:34:46 +01:00
jespergravgaard
baa84880ea
Succesfully implemented new live range calculation utilizing call-paths. Need a new optimization round for uplift.
2017-11-09 21:34:13 +01:00
jespergravgaard
4fd32274af
Working on handling procedure parameter aliases
2017-11-08 12:09:15 +01:00