1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-08-02 09:29:35 +00:00
Commit Graph

473 Commits

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