1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-14 23:04:57 +00:00
Commit Graph

334 Commits

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