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

713 Commits

Author SHA1 Message Date
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
jespergravgaard
e4bf84c57c Improved call-path alias detection to inclide all call-parameters but no call-returns 2017-11-08 10:10:43 +01:00
jespergravgaard
0026676080 Implemented call-path based effective alive analysis with call-path specific aliases. 2017-11-07 09:32:16 +01:00
jespergravgaard
b20327590f Working on better live ranges that take into account the call-path taken to the current statement and any aliases on that path (due to phi statements) 2017-11-06 08:20:33 +01:00
jespergravgaard
9d3c8afdf0 Restructured TODO 2017-11-05 12:01:30 +01:00
jespergravgaard
f18b40d4ac Removed semicolon after inline asm. 2017-11-05 11:31:10 +01:00
jespergravgaard
8ba5a2733f Added inline ASM TODO's 2017-11-05 11:17:08 +01:00
jespergravgaard
f46aba8c9b Added inline ASM clobber test. 2017-11-05 09:56:04 +01:00
jespergravgaard
09dd676363 Added semicolon to do {} while (); 2017-11-05 09:44:00 +01:00
jespergravgaard
f1512af630 Added failing test for inline asm with variable reference parameters. 2017-11-05 03:10:10 +01:00
jespergravgaard
8d68d449c4 Implemented inline asm syntax and code generation. Now need to handle parameters. 2017-11-05 03:01:32 +01:00
jespergravgaard
86b1d0db73 Created a single parser for KickC incorporating the ASM parser (for inline ASM - but also for ASM fragment files. ) 2017-11-05 02:20:29 +01:00
jespergravgaard
506b891ef3 Added basic upstart jumping to main() 2017-11-04 19:53:55 +01:00
Jesper Gravgaard
fc45798d75 Separated fragment generation & fragment signature / loading / synthesizing. 2017-11-04 19:04:39 +01:00
jespergravgaard
3d607aba7f Working on inline asm 2017-11-04 14:15:44 +01:00
jespergravgaard
bcef1c3662 Fixed constant propagation problem: (const-identification.kc) Constants are not identified correctly. Some times constant pointers are treated as variables Eg. byte* SCREEN = $0400 is adressed through zero-page even though it can be adressed directly. 2017-11-03 07:58:02 +01:00
jespergravgaard
14219443a8 Ensured that assignment to variables with ALU potential does not affect potential registers through clobbering. 2017-11-01 16:43:13 +01:00
jespergravgaard
4bcef390f3 Fixed bresenham line to do proper word-based addition. 2017-11-01 14:10:49 +01:00
jespergravgaard
0317fc50c3 Improved constant inlining to inline constants with different valued versions 2017-11-01 13:26:32 +01:00
jespergravgaard
4de433730f Fixed problems with versioned constant call parameters being mixed up and with missing scope name on constant references across scopes. 2017-11-01 12:59:29 +01:00
jespergravgaard
6097d80b91 Added a bunch of test cases highlighting each known error 2017-10-29 11:43:39 +01:00
jespergravgaard
c4c60a5b36 Added a bunch of test cases highlighting each known error 2017-10-29 11:41:35 +01:00
jespergravgaard
00f53c49b6 Added support for lo/hi lvalues. Added more ALU options. Working on bitmap plotter. 2017-10-29 01:56:53 +02:00
jespergravgaard
f60be66531 Working on bitmap bresenham. Added lo/hi unary operators. 2017-10-26 12:48:04 +02:00
jespergravgaard
7def3abf28 Improved TODO 2017-10-23 01:29:39 +02:00
jespergravgaard
0d9a0a84f8 Added another known problem 2017-10-23 01:23:39 +02:00
jespergravgaard
cd2c50b8a8 Fixed NPE 2017-10-23 01:22:36 +02:00
jespergravgaard
471117561b Updated TODO. Removed string keyword. 2017-10-23 01:12:13 +02:00
jespergravgaard
943775d97d Implemented phi transition assignment clobber checking. 2017-10-23 00:48:22 +02:00
jespergravgaard
ee5499a313 Added minimal PHI clobber example. 2017-10-21 13:34:42 +02:00
jespergravgaard
f63a540d15 Removed unnecessary (synthesizeable) fragments. 2017-10-21 12:58:03 +02:00
jespergravgaard
774e909a20 Added half-asses halfscii. 2017-10-21 12:36:37 +02:00
jespergravgaard
c569ce8de9 Improved fragment manager enabling synthesis of more fragments. Added boolean operators (and, or, xor, not) 2017-10-20 17:25:04 +02:00
jespergravgaard
1ee63ce40a Added literal char syntax. Added literal test. Improved voronoi by using inmem arrays. 2017-10-19 10:21:32 +02:00
jespergravgaard
b4abb9394e Fixed ClassCastException when attempting to removing a procedure with an empty start. Added a pointer conter increment test. 2017-10-19 09:12:46 +02:00
jespergravgaard
5a4388d6d3 Added KC-based scroller 2017-10-19 01:29:44 +02:00
jespergravgaard
7be265f42c Fixed culling problem causing conditional branches into phi-functions to be skipped. 2017-10-18 14:16:59 +02:00
jespergravgaard
6fb5372f1b Added support for ASM .string directives through string initializer. 2017-10-17 22:51:16 +02:00
jespergravgaard
1a649008b9 Added support for ASM .byte directives through array initializers. 2017-10-17 13:34:41 +02:00
jespergravgaard
feba0565b4 Cleaned up RValue hierarchy. Removing redundant Constant interface. Moving ConstantVar out of the value-hierarchy. 2017-10-17 11:35:37 +02:00
jespergravgaard
efc750ce11 Moved type inference into the model. Renamed ICL to model. 2017-10-17 09:58:00 +02:00
jespergravgaard
09ed57fb98 Separated ASM fragment system out from ASM base 2017-10-17 09:47:26 +02:00
jespergravgaard
1f4efe0a4f Added asm names to symbol table printout. 2017-10-17 09:39:15 +02:00
Jesper Gravgaard
5de6bbba13 Added missing fragments (through signature rewriting) 2017-10-16 13:20:08 +02:00
jespergravgaard
520361f7b6 Optimized live range effective - vastly improving compile speed. 2017-10-16 12:47:42 +02:00
jespergravgaard
d551f8c569 Small numbers skip $ 2017-10-15 23:15:49 +02:00
jespergravgaard
3c1f4d2901 Minor syntax fixes 2017-10-15 22:48:04 +02:00
Jesper Gravgaard
46ffa81633 Added operator precedence to constant printing - avoiding unnecesary perenthesis 2017-10-15 22:39:50 +02:00
Jesper Gravgaard
7b9e80aaac Added constant addition consolidation optimization. 2017-10-15 17:53:18 +02:00
jespergravgaard
525ac454cc Added a new constant test 2017-10-14 22:37:30 +02:00
jespergravgaard
a09ca15dbf Inlining constants that are unnamed, single versions of a variable or aliases of other constants 2017-10-14 22:36:52 +02:00
jespergravgaard
1a9ae72668 Added unnamed constant inlining 2017-10-13 08:06:55 +02:00
jespergravgaard
ccfa6bdbf3 added simple asm constants (syntax error still) 2017-10-04 01:08:36 +02:00
Jesper Gravgaard
6f2dfdbec3 Initial working implementation of constants in the symbol table and ASM. Still needs to output const definitions (intelligently). 2017-10-02 21:47:12 +02:00
Jesper Gravgaard
a553cb97c3 Added more fragments 2017-09-06 21:23:48 +02:00
Jesper Gravgaard
616311daf8 Finally new live ranges are working correctly - including effective live ranges for statements inside methods. 2017-09-06 18:59:53 +02:00
Jesper Gravgaard
99088aef58 Improved uplift test and zp coalesce test to include live ranges from calling statements in overlap testing. The new live range system is still far from perfect. Next step is getEffectiveAlive(stmt) returning alive vars + alive vars from all calling contexts. 2017-09-04 22:15:18 +02:00
Jesper Gravgaard
eb6cf1188c Working on a new live range analysis and the ability to handle constants symbolically. TODOs remaining: Live range overlap analysis of register combinations inside methods must also look at registers alive at all calls. Examine why temp-vars are used in flipper. Examine why flipper is plotted in a wrong position on the screen. Implement constants into the symbol table and support them in code. Implement new constant consolidation steps. 2017-09-04 00:49:00 +02:00
jespergravgaard
61d16b3030 Implemented phi transition reuse when transitions are identical on a register basis 2017-08-26 02:05:46 +02:00
jespergravgaard
83edd3e21b Implemented phi transition reuse when transitions are identical 2017-08-26 01:15:57 +02:00
jespergravgaard
23d9af8420 Started work on phi transition optimization 2017-08-23 09:37:16 +02:00