1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-24 14:31:15 +00:00
Commit Graph

1408 Commits

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