1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-12-01 00:51:12 +00:00
Commit Graph

907 Commits

Author SHA1 Message Date
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