1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-12-02 22:49:37 +00:00
Commit Graph

1332 Commits

Author SHA1 Message Date
jespergravgaard
b6ee63ea9f Caching effective alive for each call path. 2019-05-31 15:48:20 +02:00
jespergravgaard
97f6051b12 Fixed static optimization problem not detecting modified memory. Fixed thread problem not handling global variables properly. Added compiler switch -O0 doing less optimization for faster compiles. 2019-05-31 12:46:50 +02:00
jespergravgaard
29aa5322b2 Fixed issue with const/label. 2019-05-31 01:56:59 +02:00
jespergravgaard
ecf4181ce1 Fixed tests (added missing toString(). Changed global reserve directiveu to #reserve(zp,zp,zp,...). Added global directive specifying code address #zp(addr). Closes #190 2019-05-30 23:50:26 +02:00
jespergravgaard
b755cd448f Readded cfg/log/sym-files to tests 2019-05-30 22:29:07 +02:00
jespergravgaard
036724c92d Readded nop cast inlining - and fixed some recursion problems. 2019-05-30 21:38:12 +02:00
jespergravgaard
33b75c3db6 Merged 181-type-system 2019-05-30 17:55:53 +02:00
Jesper Gravgaard
ef953a12b4 Added some pointer-based struct tests (simulating the ASM we want for array indexing). 2019-05-29 17:45:17 +02:00
jespergravgaard
007985111a Temporary implementation for arrays of structs 2019-05-29 08:05:34 +02:00
jespergravgaard
837104f4fd Working on structs 2019-05-28 22:56:52 +02:00
jespergravgaard
9c682e37fe Testing structs 2019-05-28 22:28:17 +02:00
Jesper Gravgaard
30d6878ade Minimalistic struct example working with several shortcuts in the code. 2019-05-27 08:39:59 +02:00
Jesper Gravgaard
75af42ad3f Added struct syntax 2019-05-24 23:00:13 +02:00
Jesper Gravgaard
e46fd03ec5 Added support for string concatenation C style (using simple space separation).
Fixed tests.
2019-05-24 20:57:43 +02:00
jespergravgaard
3376a462fc Fixed number range test 2019-05-24 18:02:42 +02:00
jespergravgaard
999afdcbc7 Fixed 2/3. One remaining! 2019-05-24 09:02:31 +02:00
jespergravgaard
c42156c4e9 Working in unumber/snumber. Updated test files. 2019-05-24 00:52:30 +02:00
jespergravgaard
f574bb676c Working in unumber/snumber. Only few failing tests. 2019-05-24 00:50:48 +02:00
jespergravgaard
9ef7c69c3e Improved comparisons to avoid branch/jmp sequences by negating comparisons. 2019-05-23 17:50:44 +02:00
jespergravgaard
06147e2634 Moved malloc/free trivial implementations to stdlib 2019-05-23 15:48:34 +02:00
jespergravgaard
430c128cc3 Simplified constant inlining pass2 2019-05-23 12:33:15 +02:00
jespergravgaard
682d007ba8 Replaced Pass1EliminiateEmptyBlocks with PassNCullEmptyBlocks (which was removed from pass 2). 2019-05-23 12:19:20 +02:00
jespergravgaard
01e833681a Improved planned sequence for A->B->C sequences where B is conditional successor of A. 2019-05-23 12:02:52 +02:00
jespergravgaard
d5ebe81c21 Eliminated two redundant pass2 steps 2019-05-23 07:41:18 +02:00
jespergravgaard
1df77d5ded Collected all type inference in pass2 together. 2019-05-23 07:39:10 +02:00
jespergravgaard
fdbfa68c1c Eliminated Pass2EliminateRedundantCasts. 2019-05-23 07:12:52 +02:00
jespergravgaard
009b141ef1 Eliminated PassNDowngradeConstantTypeConversion. Simplified PassNAddTypeConversionAssignment. 2019-05-23 01:07:59 +02:00
jespergravgaard
2a14671496 Renamed for clarity 2019-05-23 00:46:43 +02:00
jespergravgaard
65c92716f0 Cleaning up type inference. 2019-05-23 00:38:35 +02:00
jespergravgaard
49a61ecbdd Cleaning up type inference. 2019-05-23 00:28:34 +02:00
jespergravgaard
669064bd37 Eliminated SymbolTypeNumberInference. 2019-05-22 23:59:43 +02:00
jespergravgaard
864b993f14 Eliminated SymbolTypeSimple. Eliminated SymbolTypeInference.infer(type, ...). Eliminiated most of SymbolTypeNumberInference. 2019-05-22 23:50:50 +02:00
jespergravgaard
2fb9a5baf3 Moved symbol table update functions to PassNTypeInference (cleaning up SymbolTypeInference). 2019-05-22 23:38:34 +02:00
Jesper Gravgaard
9636e26191 Changed all type comparisons to use SymbolType.XXX.equals() 2019-05-22 15:53:48 +02:00
Jesper Gravgaard
aaf556abe1 Improved utoa16 implementation using pointer to pointer. 2019-05-22 15:42:00 +02:00
Jesper Gravgaard
ff7e4bff2a Removed duplicate compiler step. 2019-05-22 15:32:42 +02:00
Jesper Gravgaard
39c4f0d6b4 Fixed identification of identical Phi RValues that are constant pointers to symbols. 2019-05-22 15:29:47 +02:00
jespergravgaard
67db0f0f6f Improved duplicate assignment right side optimization slightly. 2019-05-22 08:19:43 +02:00
jespergravgaard
2c808e59d6 Added tests for duplicate assignment right side optimization. 2019-05-22 08:06:54 +02:00
Jesper Gravgaard
c1213f4d55 Added right side duplicate identification. 2019-05-21 23:06:13 +02:00
jespergravgaard
5f2b798a8a Added test for pointer-to-pointer optimization. 2019-05-21 10:23:39 +02:00
jespergravgaard
fd259fe47e Added pointer to pointer test. 2019-05-21 01:45:32 +02:00
jespergravgaard
3132790ab5 Added very naive heap implementation. 2019-05-21 00:33:36 +02:00
jespergravgaard
b3041e326d Optimizing compiler passes 2019-05-21 00:05:17 +02:00
jespergravgaard
bc699a9e27 Added utoa16(). Fixed early constant identification not taking procedure parameters into account. 2019-05-20 23:41:58 +02:00
Jesper Gravgaard
2b26c813d9 Rafactoring pass 2 2019-05-20 11:01:58 +02:00
Jesper Gravgaard
27c6c3fb86 Rafactoring pass 2 2019-05-20 10:54:06 +02:00
Jesper Gravgaard
77d24eddc6 Rafactoring pass 2 2019-05-20 10:47:53 +02:00
Jesper Gravgaard
5d988dd859 Rafactoring pass 2 2019-05-20 10:36:58 +02:00
Jesper Gravgaard
9864995afb Created utoa10 with smaller memory footprint. 2019-05-19 21:17:39 +02:00
jespergravgaard
2ec68d6fd5 added hex2dec test 2019-05-19 09:31:12 +02:00
jespergravgaard
6246871538 Fixed tests 2019-05-19 01:16:12 +02:00
jespergravgaard
f31dc244b5 fixed tests 2019-05-19 00:07:52 +02:00
jespergravgaard
fa6e54fb87 Added test ref 2019-05-18 23:58:24 +02:00
jespergravgaard
b5a9d47472 Improved code by avoiding unnecesary casts 2019-05-18 23:58:04 +02:00
jespergravgaard
abfa6f875f Added a few tests 2019-05-18 22:40:46 +02:00
jespergravgaard
eed4018450 Added a blitter box 2019-05-18 22:07:16 +02:00
jespergravgaard
9cec38d075 Fixed negative numbers, zero-addition, zero inlining. 2019-05-18 21:37:34 +02:00
jespergravgaard
fe41c2ba42 Fixed array indexing using word-size indices 2019-05-18 13:58:26 +02:00
jespergravgaard
06aed186e2 Fixed type inference for rangenext 2019-05-18 12:43:13 +02:00
jespergravgaard
13cc9e453c Fixed a few tests. +0 in derefidx and rangenext() on signed words. 2019-05-18 12:23:13 +02:00
jespergravgaard
855434afa9 Added missing fragment and ternary type inference test 2019-05-18 08:51:22 +02:00
jespergravgaard
9f27006540 Working on casts 2019-05-18 08:14:34 +02:00
Jesper Gravgaard
c200eaa535 Working on casts 2019-05-18 00:37:09 +02:00
jespergravgaard
0876603ca7 Working on casts 2019-05-17 08:55:04 +02:00
jespergravgaard
71cedd4d29 Working on fixing casts. 2019-05-17 01:07:47 +02:00
Jesper Gravgaard
17a0db4472 Minor fixes 2019-05-16 08:51:14 +02:00
jespergravgaard
6cfa5c750c Implemented cast constant identification. 282/359 2019-05-14 00:16:17 +02:00
jespergravgaard
6e0b665423 Added an array initializer with negative values. 2019-05-13 09:24:23 +02:00
jespergravgaard
3d56f3705a Array initializer with number handling - 278/358 2019-05-13 09:17:30 +02:00
jespergravgaard
fe60b31f73 New literal word constructor handling - 277/354 2019-05-12 21:18:55 +02:00
jespergravgaard
07b67efb7c Eliminating SymbolTypeMulti - 274/351 2019-05-12 14:42:41 +02:00
jespergravgaard
7767c1216b Added missing fragment - 274/351 2019-05-12 14:32:16 +02:00
jespergravgaard
ef05cc8c3b Eliminating SymbolTypeMulti - 273/351 2019-05-12 13:56:04 +02:00
jespergravgaard
8db7736830 Improved no-cast detection. 273/351 2019-05-12 13:51:36 +02:00
jespergravgaard
e09d81cd13 Improved no-cast detection. 271/351 2019-05-12 12:59:47 +02:00
jespergravgaard
6e566852ba Fixed assignment type conversions and unnecesary byte/word casts. 269/351 2019-05-12 12:27:48 +02:00
Jesper Gravgaard
e56e66acd8 Working on multiply/divide. 2019-05-11 23:16:03 +02:00
Jesper Gravgaard
bd6ece561b Fixed multiply to shift. 260/351. 2019-05-11 20:14:14 +02:00
Jesper Gravgaard
3c8845d6a6 Added alias elimination to constant optimization phase. 255/351. 2019-05-11 19:55:03 +02:00
Jesper Gravgaard
51c10d29c3 Working on fixing type conversion casting. Still a work in progress! 2019-05-10 11:20:37 +02:00
jespergravgaard
f6f25e728b Working on special word+byte downgrade. - down to 190/351. 2019-05-09 07:43:47 +02:00
jespergravgaard
ea990b5e87 Working on fixing test errors - fixed pointer-dereference-indexed - 228/350 working. 2019-05-08 23:24:48 +02:00
jespergravgaard
64a8389e6e Working on fixing test errors - 228/350 working. 2019-05-08 00:11:33 +02:00
jespergravgaard
21b3114b58 Working on fixing test errors - 202/350 working. 2019-05-07 23:39:57 +02:00
jespergravgaard
cab95b6ba5 Working on fixing test errors - 198/350 working. 2019-05-07 22:08:59 +02:00
jespergravgaard
44e9cff722 Working on fixing test errors - 198/350 working. 2019-05-07 21:53:08 +02:00
jespergravgaard
82729cb4d9 Working on fixing test errors - 196/350 working. 2019-05-07 21:03:26 +02:00
jespergravgaard
47aa623f25 Working on fixing test errors. 2019-05-07 18:52:01 +02:00
jespergravgaard
87e6fecb8f Working on fixing test errors. 2019-05-07 09:19:50 +02:00
jespergravgaard
b097b5c2c5 Working on fixing test errors. 2019-05-07 01:46:23 +02:00
jespergravgaard
7e174898b8 Number conversion working. Added program expression iterator. 2019-05-07 00:59:54 +02:00
jespergravgaard
49ae6a0e66 Working on number conversion... not compiling atm. 2019-05-06 08:06:18 +02:00
jespergravgaard
d0d5b5715b Implemented framework for number type conversion - the BinaryExpressionIterator. Added first case (type match) in new PassNAddNumberTybeConversions. 2019-05-06 01:08:41 +02:00
jespergravgaard
35ec65ce94 Implemented much of integer type conversion and the number type. Still a lot left to do. 2019-05-05 01:26:40 +02:00
jespergravgaard
facd8c6c5b Expanded testing of types to include operators 2019-05-03 08:45:33 +02:00
jespergravgaard
eb895fffef Added parser for typed integer literal postfix (ub/sb/uc/sc/uw/sw/ui/si/us/ss/ud/sd/ul/sl and l) 2019-05-02 01:23:49 +02:00
jespergravgaard
fd72ecc0c7 Added syntax for typed integer literal postfix (ub/sb/uc/sc/uw/sw/ui/si/us/ss/ud/sd/ul/sl and l) 2019-04-27 12:12:44 +02:00
jespergravgaard
93937b60d0 Merge remote-tracking branch 'origin/master' into 180-type-system 2019-04-27 08:13:57 +02:00
jespergravgaard
4735c8940b Added fixed comments to sandbox 2019-04-27 08:13:44 +02:00
jespergravgaard
e43a2e2c61 Added assert securing that phi predecessors are direct predecessors. 2019-04-27 08:04:44 +02:00
Jesper Gravgaard
c64713c913 Fixed char - number. Closes #184.
Also fixed problem with nested ternary. Closes #185.
2019-04-25 07:58:17 +02:00
jespergravgaard
58502ecf79 Added issue links to most coments. Added separate test demonstrating nested ternary problem. 2019-04-24 00:46:45 +02:00
jespergravgaard
7edc154133 Added Paul Nelsen sandbox test of sivision - with sprintf skeleton implementation. 2019-04-23 23:26:47 +02:00
jespergravgaard
1fa41859b0 Starting work on type system. 2019-04-23 20:42:18 +02:00
jespergravgaard
21d7c6849c Added tests failing due to constant type interference problems. Working on #181 2019-04-22 13:47:22 +02:00
jespergravgaard
88e3ad66b7 Fixed test. 2019-04-22 13:35:52 +02:00
jespergravgaard
7427c8bbcf Added typeid(expr) that returns byte representing the type of the expression. Closes #180 2019-04-22 11:50:48 +02:00
jespergravgaard
94bd8cef0a Added support for special types signed/unsigned (that are implicitly int). Closes #158 2019-04-22 09:20:14 +02:00
jespergravgaard
e9ece1a8f0 REmoved wrong dependency. 2019-04-21 21:13:08 +02:00
jespergravgaard
7db4308b94 Implemented de-inlining of ptr[w] with word-size indexes. 2019-04-21 01:22:14 +02:00
jespergravgaard
957fe13e4e Improved word array test. 2019-04-21 00:26:18 +02:00
jespergravgaard
6b287741b5 Removed unused fragments. 2019-04-20 23:52:29 +02:00
jespergravgaard
c44fe2138a Changed syntax a bit 2019-04-20 23:02:39 +02:00
jespergravgaard
fc75878f9d Now optimizing *(ptr+n) into ptr[n] when possible. 2019-04-20 22:12:56 +02:00
jespergravgaard
d6427d58df Eliminating redundant casts. 2019-04-20 13:08:12 +02:00
jespergravgaard
27444f7c7d Implemented test simulating a struct. 2019-04-20 11:13:49 +02:00
jespergravgaard
5da972b5b2 Improved test. 2019-04-20 01:48:11 +02:00
jespergravgaard
1ea5a3af76 Added directive reserve($02, $03, $04) for reserving zero page variables to avoid the compiler using them. Directive can be added to functions or globally. Closes #133 2019-04-20 01:44:54 +02:00
jespergravgaard
fc79ac187e Updated version number 2019-04-19 13:52:09 +02:00
jespergravgaard
85b904b46f Updated manual. 2019-04-19 13:50:48 +02:00
jespergravgaard
dda11749e2 Tests now working with proper word/dword-array indexing! Closes #139 2019-04-19 13:36:08 +02:00
jespergravgaard
5a54b45ed9 Fixing more tests with word arrays/pointers. Preparing for #139 2019-04-19 11:56:21 +02:00
jespergravgaard
4e93f0b056 Fixing more tests with word arrays/pointers. Preparing for #139 2019-04-19 11:25:29 +02:00
jespergravgaard
898dc3e833 Fixing more tests with word arrays/pointers. Preparing for #139 2019-04-19 11:16:40 +02:00
jespergravgaard
4f04aa47b7 Fixing tests with word arrays/pointers. Preparing for #139 2019-04-19 10:50:15 +02:00
Jesper Gravgaard
eb26618295 Fixed issue where compound addignments multiplied the index by sizeof() squared. 2019-04-19 08:42:42 +02:00
jespergravgaard
46e2f3ced4 Implemented pointer array indexing sizeof() fixing 2019-04-18 01:26:51 +02:00
jespergravgaard
287a6ecb2e Implemented pointer math (+/-) fixing 2019-04-18 01:06:22 +02:00
jespergravgaard
85317a1c5e Working on pointer math and sizeof(element) 2019-04-18 00:32:28 +02:00
jespergravgaard
7b157f9b44 Added tests suitable for changing word-pointer behavior. Preparing for #139 2019-04-17 23:58:10 +02:00
jespergravgaard
d55a958c70 Implemented sizeof(expr). Closes #171 2019-04-17 21:27:32 +02:00
jespergravgaard
417a1d4b22 Implemented sizeof(type). 2019-04-17 09:34:10 +02:00
jespergravgaard
0116dcfe55 Brought fire sample closer to the original. 2019-04-16 00:45:21 +02:00
jespergravgaard
f41744cd96 Added support for comma-separated variable declarations in for()-loop init. Closes #159 2019-04-16 00:22:47 +02:00
jespergravgaard
24ca7e9c68 Implemented support for comma-separated variable declarations. 2019-04-15 23:13:15 +02:00
jespergravgaard
0f5d8f906b Added support for comma-expressions (and fixed non-working unused variable elimination). Closes #157 2019-04-15 14:03:50 +02:00
jespergravgaard
f5afa992c1 Updated testdata. 2019-04-15 11:53:07 +02:00
jespergravgaard
aecf1ea7b2 Optimized unrolled plasma to ~16.500 cycles per screen. 2019-04-15 11:31:15 +02:00
jespergravgaard
8234877eeb Fixed error where classic for() failed when init was empty. Closes #163 2019-04-15 10:44:18 +02:00
jespergravgaard
50c54e2d36 Fixed error where classic for() failed when increment was empty. Closes #160 2019-04-15 10:37:00 +02:00
jespergravgaard
21f65d7ddf Rewrote many example routines to use multiply/divide instead of shifts. 2019-04-15 10:20:55 +02:00
jespergravgaard
056289aaaf Rewrote d018/dd00 routines to use multiply/divide. 2019-04-15 09:54:48 +02:00
jespergravgaard
dfe6663082 Added handling of *1 / /1. 2019-04-15 09:44:32 +02:00
jespergravgaard
38d67ea581 Merge remote-tracking branch 'origin/master' 2019-04-15 09:33:59 +02:00
jespergravgaard
5f1496e33d Implemented rewriting of multiply/divide by powers of 2 to shifts. Closes #165 2019-04-15 09:33:49 +02:00
Jesper Gravgaard
dd99f73b8e Merge remote-tracking branch 'origin/master' 2019-04-11 22:24:25 +02:00
Jesper Gravgaard
c8cfb3406c Changed comparison rewriting to only rewrite when comparing to bytes (not words). 2019-04-11 22:24:07 +02:00
jespergravgaard
c61b1556cd Optimized imports etc. 2019-04-11 21:17:43 +02:00
Travis Fisher
c9cce92509 make live range analysis use statement index instead of statement where it helps with speed 2019-04-11 00:14:31 -04:00
Travis Fisher
b81349b3de make StatementInfos map control flow block objects instead of labelRef's (~5% compiler speedup) 2019-04-10 22:22:17 -04:00
Travis Fisher
1f54a91463 use static array of short number strings (~3% test speedup) 2019-04-10 19:47:54 -04:00
Jesper Gravgaard
97f88fb128 Fixed comparison optimization to ignore 0 2019-04-10 16:06:03 +02:00
Jesper Gravgaard
15acdc3752 Merged with master. 2019-04-10 13:52:57 +02:00
Jesper Gravgaard
070fb7937d Implemented comparison rewriting optimization. 2019-04-10 11:12:49 +02:00
jespergravgaard
c9768022af Optimized unrolled plasma more by moving x-value lookup outside the unrolled loop. 2019-04-10 08:27:36 +02:00
Travis Fisher
073845093b store symbol full names instead of constructing on demand. (~5% overall compiler speed improvement) 2019-04-09 23:09:42 -04:00
jespergravgaard
fa2024296b Added more pointer cast tests 2019-04-09 22:58:42 +02:00
jespergravgaard
9a707c250e Added pointer cast test 2019-04-09 21:30:21 +02:00
jespergravgaard
82b394a80f Minor syntax changes. 2019-04-09 01:40:38 +02:00
jespergravgaard
23e3533064 Merged Travis Fishers upstream optimizations. Closes #92 2019-04-09 01:22:47 +02:00
jespergravgaard
bce68180ef Merge branch 'master' of https://gitlab.com/tfisher98/kickc 2019-04-09 00:59:19 +02:00
jespergravgaard
756d5c22d5 Strings zer now zero-terminated by default. To avoid zero-termination use suffix z - eg. "qwe"z is not zero-terminiated. Closes #137 2019-04-09 00:51:53 +02:00
Travis Fisher
7454027829 update reference results 2019-04-08 18:25:03 -04:00
Travis Fisher
0bc03ffdb0 add deep nesting test program 2019-04-08 18:05:25 -04:00
Travis Fisher
68a737cf0f Merge branch 'master' of https://gitlab.com/camelot/kickc 2019-04-08 17:31:16 -04:00
jespergravgaard
c3849c78b0 Added support for void parameter lists. Closes #161 2019-04-08 23:27:05 +02:00
jespergravgaard
9a9e4f456e Added more fragments. 2019-04-08 21:25:54 +02:00
jespergravgaard
44a5f66a7c Added fire sample from CC65. (~100.000 cycles per update in KickC vs ~300.000 in CC65). Fixed tests. Added some signed fragments. 2019-04-08 20:54:23 +02:00
jespergravgaard
b2a0b629e3 Changed plasma routines to use standard C types. 2019-04-08 16:33:52 +02:00
jespergravgaard
63f10a28de Added support for standard C types (char, short, int, long). Closes #108 2019-04-08 16:26:39 +02:00
jespergravgaard
c613edf2b2 Updated test data. 2019-04-08 09:12:00 +02:00
jespergravgaard
41029fec17 Added plasma with unrolled inner loop for ~50fps. 2019-04-08 09:00:48 +02:00
Travis Fisher
47d2f74690 put caches associated to pass n variable reference infos back out of control flow block class 2019-04-08 01:16:31 -04:00
Travis Fisher
b7b01a89a8 speed improvement in pass n variable reference infos 2019-04-07 23:57:38 -04:00
Travis Fisher
7393d095b9 speed improvement in pass n variable reference infos 2019-04-07 23:09:50 -04:00
jespergravgaard
7b23951eb2 Fixed tests after adding fragment. 2019-04-08 01:42:00 +02:00
jespergravgaard
35659a67be Ported plasma sample from CC65 to KickC. 2019-04-08 00:44:09 +02:00
Travis Fisher
2ee07b0806 store compiled regexes for speed 2019-04-07 16:05:34 -04:00
jespergravgaard
23b1f15101 Added support for more complex ternary expressions. 2019-04-07 18:35:50 +02:00
jespergravgaard
67b97130b7 Implemented ternary operator. Closes #77 2019-04-07 17:59:44 +02:00
jespergravgaard
e1cf957b2f Pointers to pointers working. Closes #156 2019-04-07 13:35:23 +02:00
jespergravgaard
a334855da8 Pointers to noargs functions working pretty well. Closes #120 2019-04-07 11:08:39 +02:00
jespergravgaard
ca9453346b Added missing RTS after jsr main 2019-04-06 11:53:56 +02:00
Travis Fisher
d3b4e895dc use cheaper hash function for speed improvement 2019-04-04 21:47:37 -04:00
jespergravgaard
9ccc5d828f Improved pointer-to-pointer functionality significantly. 2019-04-05 01:05:15 +02:00
jespergravgaard
44b6ed1fb8 Improved test. 2019-04-04 20:49:07 +02:00
jespergravgaard
64b3a07ee6 Added all functions that become pointers as separate thread heads. 2019-04-04 20:45:52 +02:00
jespergravgaard
10dd5e4c7b Added support for arrays containing pointers for noargs functions. 2019-04-04 19:23:38 +02:00
jespergravgaard
ec6404bafd Added support for functions returning constant pointers to functions. 2019-04-04 19:01:47 +02:00
jespergravgaard
c6597a2736 Added support for functions returning pointers to functions. 2019-04-04 18:45:57 +02:00
jespergravgaard
06b90b6ee3 Refactored code to reuse ProgramValueIterator and Scope features. 2019-04-04 17:58:28 +02:00
jespergravgaard
e258b9593d Function pointers now working both when constant and variable (in simple noargs non-scope-crossing cases with no local variables in the referenced functions.) 2019-04-04 17:44:14 +02:00
Travis Fisher
54e79d91a1 try again update test reference. maven config for tests in parallel. 2019-04-02 21:41:57 -04:00
jespergravgaard
3434a695d2 Implemented a bunch of the foundation needed for function pointers - incl. the parser and handling of pointers in zeropage variables. 2019-04-03 00:03:37 +02:00
jespergravgaard
de8c42eba8 Fixed problem with overlapping variables in threads. 2019-04-02 22:31:26 +02:00
Travis Fisher
c78aef2312 update test reference results 2019-04-02 02:28:13 -04:00
Travis Fisher
7784f174b7 replace jmp to rts with rts in double jump elimination pass 2019-04-01 18:14:18 -04:00
jespergravgaard
fe9a9005ed Added test with both break & continue. Added SID-files to assembly. 2019-03-31 23:32:25 +02:00
jespergravgaard
7687163a4a Added synth rule to detect missing C1 and move down the other Cs using mapC. This lowers the number of rules since rules rewriting C1 no longer need to avoid twoC or use mapC. A similar rule was added for missing C2s and mapC3. 2019-03-31 22:34:28 +02:00
jespergravgaard
f773c96cbc Removed all fragments using _derefidx_vbs.. - and replaced them with a synthesis rule. 2019-03-31 22:01:08 +02:00
jespergravgaard
2d7825a0b9 Implemented continue statement. Closes #91 2019-03-31 20:15:01 +02:00
Jesper Gravgaard
4424ffe92c Implemented loop break. 2019-03-31 17:57:54 +02:00
Jesper Gravgaard
547cfb6237 Merge remote-tracking branch 'origin/master' 2019-03-31 17:49:54 +02:00
Jesper Gravgaard
03296d9173 Moved in attempt to avoid conflict. 2019-03-31 17:49:50 +02:00
Jesper Gravgaard
864c79335f Implemented break statement breaking out of the current loop. 2019-03-31 17:38:21 +02:00
jespergravgaard
613322153e Added synthesis rules suggested by Travis Fisher allowing synthesis of pbuc1_derefidx_vbuxx / pbuc1_derefidx_vbuyy also when C1 is used elsewhere in the fragment. 2019-03-31 17:35:16 +02:00
jespergravgaard
d13ca4e03b Implemented block label renumbering ensuring generated ASM labels are slightly more sensible to the reader. 2019-03-31 17:10:43 +02:00
jespergravgaard
126813ff4e Implemented local scopes for blocks - enabling reuse of variable names (for instance in for loops). Closes #64 2019-03-30 00:15:53 +01:00
jespergravgaard
825e60ed62 Shortcut the callgraph thread analysis when max 1 thread in the entire program. 2019-03-29 20:58:48 +01:00
jespergravgaard
7fcb6e525a Fixed problem where zeropage allocations inside IRQ and outside could overlap. Closes #154 2019-03-29 08:01:02 +01:00
jespergravgaard
c81147f60f Fixed problem with volatile booleans being allocated to registers. Closes #153 2019-03-27 22:54:01 +01:00
jespergravgaard
c696d9610e Added parenthesis to negative immediates to AXS. 2019-03-27 07:47:31 +01:00
jespergravgaard
667cbde56f Added a lot of optimizing fragments using illegal opcodes (Thanks Travis Fisher!)
Added synth rule for vubc's.Updated tests.
2019-03-26 23:49:45 +01:00
jespergravgaard
0993be3f01 Added example of music routines. 2019-03-26 21:27:36 +01:00
jespergravgaard
022d77fc56 Implemented early constant identification to avoid unnecessary variable versioning. Closes #53 2019-03-22 19:50:20 +01:00
jespergravgaard
c280a3b14a Fixed NPE when using booleans in if()/while(). Closes #152 2019-03-22 07:25:55 +01:00
jespergravgaard
4ad601ce72 Added fragment for subtracting unsigned byte from signed word. 2019-03-21 22:24:39 +01:00
jespergravgaard
8e2de5f79b Updated fragment tests 2019-03-20 21:45:30 +01:00
Jesper Gravgaard
2989f16593 Added synthesis for using X/Y registers as intermediates when encountering pb.c1_derefidx_vbuyy/xx. 2019-03-20 17:09:22 +01:00
jespergravgaard
e48a4538bc Added updated reference manual. 2019-03-20 08:05:49 +01:00
jespergravgaard
9a50e54928 Fixed optimization of constant addition in double array indexing. Closes #150 2019-03-20 07:20:00 +01:00
jespergravgaard
5791875d2d Added clobber directive to inline kickasm. 2019-03-19 07:48:16 +01:00
jespergravgaard
f67a5bc897 Added clobber handling to inline ASM. Added clobbers directive to specify what is clobbered. If inline ASM has a JSR and no clobbers directive all registers are assumed to be clobbered. Closes #5 2019-03-18 20:54:08 +01:00
jespergravgaard
5cf5d88228 Implemented handling of default successor PHI blocks in logical or if()'s. Closes #149 2019-03-18 18:25:50 +01:00
jespergravgaard
ff716c0343 Implemented handling of deafult successor PHI blocks in 2019-03-18 18:24:03 +01:00
jespergravgaard
651bd87eaa Fixed test 2019-03-18 02:26:13 +01:00
jespergravgaard
ca697a4ffd Improved a plus fragment to use bcc 2019-03-18 02:23:29 +01:00
jespergravgaard
9bb967b33f Implemented ASM fragment synthesis variations searching - looking through different potential fragments when generating ASM containing a constant number that matches multiple potential types. 2019-03-18 02:08:32 +01:00
jespergravgaard
d459332be1 Updated tests with better ASM 2019-03-17 22:52:25 +01:00
jespergravgaard
93d36f25be Updated tests with better ASM 2019-03-17 22:49:02 +01:00
Jesper Gravgaard
dc76b2bed0 Added a lot of signed word and boolean fragments from Travis Fisher. 2019-03-16 17:54:38 +01:00
Jesper Gravgaard
ba560796dd Added uses directive to inline kickasm to allow declaring used constants to prevent that they are optimized away as unused. Closes #147 2019-03-16 00:33:16 +01:00
jespergravgaard
f6dd66f3cb Added support for cross-scope references inside inline ASM. 2019-03-15 07:59:25 +01:00
jespergravgaard
71743540c6 Added support for non-multi labels within inline ASM. 2019-03-15 00:30:14 +01:00
jespergravgaard
b4ccdef0f0 Problem with constant if() has been fixed! 2019-03-15 00:13:24 +01:00
jespergravgaard
4eed4f7659 Implemented proper handling of referenced to constants inside inline ASM. Closes #146 2019-03-15 00:02:33 +01:00
jespergravgaard
d293c47141 Added tests for inline assembler & kickassembler. 2019-03-14 23:09:50 +01:00
jespergravgaard
fa6ed8bff6 Improved compiler errors - removing exception trace and using proper exit code. 2019-03-12 18:14:45 +01:00
jespergravgaard
6adb0c6d2d Improved verbosity for fragment debug output. 2019-03-12 17:59:35 +01:00
jespergravgaard
ad6a1910c8 Added another 2 word fragments. Added compiler commandline option to show fragment -fragment <signature>. Closes #145 2019-03-12 17:53:33 +01:00
Jesper Gravgaard
ea98c9e2eb Added two additional signed word fragments. 2019-03-11 11:09:12 +01:00
jespergravgaard
8a560a294b Added two missing signed word fragments. 2019-03-11 07:49:41 +01:00
jespergravgaard
3090fe4849 Added missing line number to error when encountering symbol that has already been declared. 2019-03-10 09:29:02 +01:00
jespergravgaard
241f8bec4d Added two missing fragments and a test. 2019-03-10 08:24:30 +01:00
jespergravgaard
c2fb30a776 Limited fragment testing to speed it up. 2019-03-10 07:57:11 +01:00
jespergravgaard
b04edfb241 Added needed synthesis rules. 2019-03-10 01:44:47 +01:00
jespergravgaard
c89b4bc6b0 Removed rules slowing down the fragment synthesizer awaiting improvements to the synthesizer. 2019-03-10 01:14:35 +01:00
jespergravgaard
6bc35f6c34 Restructured fragment tests to use less memory. 2019-03-09 23:50:50 +01:00
jespergravgaard
980fc0aeb5 Working to improve fragment synthesis. 2019-03-09 20:58:51 +01:00
jespergravgaard
5a83c1b357 Fixed clobber problem that can occur during PHI transitions. Closes #10 2019-03-09 18:37:23 +01:00
jespergravgaard
4d8e083a21 Improved fragment synthesis of p..z1_deref_vbuaa=... to use TAY when possible. 2019-03-09 16:39:24 +01:00
jespergravgaard
a65404d7b6 Fixed signed word comparisons. Added tests of word comparisons. Improved fragment synthesis of p..z1_deref_vbuaa=... / p..z1_deref_vbuxx=... 2019-03-09 16:24:44 +01:00
jespergravgaard
cb8018b92a Added missing word fragments. Added test of unsigned word comparisons. 2019-03-09 14:24:51 +01:00
jespergravgaard
c59f18eb82 Added two missing word fragments. 2019-03-08 22:00:28 +01:00
jespergravgaard
183494e141 Fixed infinite compiler loop when complex loops contain &&. Closes #144 2019-03-08 21:43:37 +01:00
jespergravgaard
ac73bb15e3 Improved number formatting of inegers in log/messages. 2019-03-08 06:54:46 +01:00
jespergravgaard
39e727711a Added missing error location for illegal lvalues. Closes #143 2019-03-08 06:33:59 +01:00
jespergravgaard
0aebd2a9a1 Fixed error in boolean fragments. 2019-03-07 07:29:47 +01:00
jespergravgaard
3e39383963 Fixed error in boolean fragments. 2019-03-07 07:23:26 +01:00
jespergravgaard
0ca54a97ad Added two missing word fragments. 2019-03-07 06:48:32 +01:00
jespergravgaard
0362e12880 Implemented default zero values for variables without ant initializer. Closes #140 2019-03-06 23:52:14 +01:00
jespergravgaard
ec863e5c43 Added line number to type inference errors. Closes #142 2019-03-04 23:55:38 +01:00
jespergravgaard
5e7d908018 Better error when assigning an undeclared variable. Closes #141 2019-03-04 23:38:07 +01:00
jespergravgaard
20cce60f40 Only removing intermediates that contain lo/hi operator. 2019-03-01 08:47:12 +01:00
jespergravgaard
ed2d992333 Fixed problem, where assigning to low/high value left an unused intermediate variable. Closes #129 2019-03-01 00:27:26 +01:00
jespergravgaard
de58d9b6dd Added missing ref files 2019-02-24 23:24:20 +01:00
jespergravgaard
0a955d6bec Finished constant string consolidation. Closes #90 2019-02-24 23:23:57 +01:00
jespergravgaard
fe0035af82 Added initial constant string consolidation. 2019-02-24 22:18:27 +01:00
jespergravgaard
dfd9af4d84 Added ASM function signature comment. Closes #82. 2019-02-19 20:51:48 +01:00
jespergravgaard
af54695232 Added support for block comments. 2019-02-18 00:12:30 +01:00
jespergravgaard
f0d77acb29 Added comments to variables identified as constants. 2019-02-17 18:21:16 +01:00
jespergravgaard
b8ab7c6c49 Added comments before loops 2019-02-17 17:53:19 +01:00
jespergravgaard
41a7053b25 Implemented statement comments. Assignments are working OK. Some are still thrown away during optimizations. 2019-02-17 15:50:42 +01:00
jespergravgaard
27cfaf0ecf Implemented file-level comments. Added a few comment tests. 2019-02-17 11:03:55 +01:00
jespergravgaard
69562b7fa9 Added comments to constants in ASM. 2019-02-17 00:49:19 +01:00
jespergravgaard
67e223d629 Added procedure comments to the compiled assembler. 2019-02-16 23:23:55 +01:00
jespergravgaard
b5c61aad5d Added level colors 2019-02-10 22:03:55 +01:00
jespergravgaard
7f78991374 Added next piece 2019-02-10 21:10:40 +01:00
jespergravgaard
bfce6bffd1 Renamed tests. 2019-02-10 19:11:50 +01:00
Jesper Gravgaard
dcd4e070ba Implemented new recursion check that performs much better on programs with many different branches. 2019-02-03 17:36:34 +01:00
jespergravgaard
347a5d0331 Refactored call graph analysis in preparation for improved recursion detection. 2019-02-03 08:32:38 +01:00
jespergravgaard
b6038ccf0a Added error when condition is non-boolean. Closes #134 2019-01-17 23:28:39 +01:00
jespergravgaard
bb9a4ac461 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	src/test/java/dk/camelot64/kickc/test/TestPrograms.java
2019-01-12 13:59:14 +01:00
jespergravgaard
a6fc9c157e Added missing fragments for rolling variable amounts - and a few tests. 2019-01-12 13:58:12 +01:00
Jesper Gravgaard
4d3056bc0e Added another scrolling screen test and a fragment 2019-01-11 20:23:30 +01:00
jespergravgaard
7b65dfedfb Fixed new testAdded missing word-fragment. 2019-01-11 06:42:05 +01:00
jespergravgaard
35ffcbf914 Fixed new test 2019-01-10 23:00:05 +01:00
jespergravgaard
8910ba56a2 Fixed issue when removing unused procedures that is discovered during static analysis. 2019-01-10 22:58:00 +01:00
jespergravgaard
f664e8183f Fixed issue with constant consolidation creating literals that was not calculatable. 2019-01-08 00:07:24 +01:00
jespergravgaard
e8d00067ef Fixed version number 2019-01-07 22:38:29 +01:00
jespergravgaard
854b32d5b3 Fixed an array index optimization that was to aggressive. 2019-01-07 21:58:40 +01:00
jespergravgaard
9a3bd627f8 Added 2 missing fragments, 2019-01-06 23:48:25 +01:00
jespergravgaard
d2df1dfb68 Added missing fragment. 2019-01-06 17:45:26 +01:00
jespergravgaard
b4b4658696 Added a few missing 16-bit fragments. 2019-01-05 17:31:59 +01:00
jespergravgaard
aa109d236f Now treats char 160 (nbsp) like whitespace. Added sin-sprites on top of sprite-tester. 2019-01-03 22:52:29 +01:00
jespergravgaard
2866aad652 Fixed small issue with missing -F in kickc.bat 2019-01-03 21:41:00 +01:00
jespergravgaard
5b62308854 Started work on version 0.7 2019-01-03 20:29:48 +01:00
jespergravgaard
4ce4667e57 Moved examples around. 2019-01-03 19:59:31 +01:00
jespergravgaard
0b881a9596 fixed tests 2019-01-03 19:21:12 +01:00
jespergravgaard
fe29de28d5 fixed problem 2019-01-03 18:55:56 +01:00
jespergravgaard
8898dfb255 Added missing fragment for Scan/Desire. 2019-01-03 18:54:59 +01:00
jespergravgaard
db733eec53 Implemented new more robust sprite routine. Added game_over game state. Added GAME OVER chars to charset. 2019-01-03 18:15:03 +01:00
jespergravgaard
e35ce855b0 Added level-based score increase, missing fragments and support for zero-filled DWORD-arrays. 2018-12-31 00:05:38 +01:00
jespergravgaard
40a2a7b1eb Added movedown speed-up based on level. 2018-12-30 23:36:05 +01:00
jespergravgaard
621c1e19e0 Fixed position of I 2018-12-30 03:58:49 +01:00
jespergravgaard
4432812b06 fixed test 2018-12-30 03:20:58 +01:00
jespergravgaard
e91ae1b60e Fixed level calculation when over 9. 2018-12-30 03:15:59 +01:00
jespergravgaard
6ff6d7c2cc Added level. (not correct BCD after 9) 2018-12-30 03:05:22 +01:00
jespergravgaard
27e00e5e80 fixed tests. 2018-12-30 01:54:29 +01:00
jespergravgaard
84db15759b Fixed piece rotations to match NES tetris. 2018-12-30 01:35:58 +01:00
jespergravgaard
25d4c89445 Added a score renderer - and some fragments. 2018-12-30 01:00:45 +01:00
jespergravgaard
638ef22c63 Added score calculation (plus some missing fragments and handling of dword array initializers). 2018-12-30 00:12:19 +01:00
jespergravgaard
30ad94dda3 Saved memory and code by combining screen chars and extended colors in kasm-script. 2018-12-29 22:53:02 +01:00
jespergravgaard
c3e559f8c9 Added needed parts of font and proper colors. 2018-12-29 22:31:55 +01:00
jespergravgaard
76b13d6b55 Fixed sprite multiplexer when double buffering. 2018-12-29 18:52:23 +01:00
jespergravgaard
b1d358403a Implemented double buffered rendering. 2018-12-29 17:35:46 +01:00
jespergravgaard
84eb93b21e Fixed pixel error 2018-12-29 14:46:51 +01:00
jespergravgaard
bba1f52d56 Added playfield border color. 2018-12-29 02:40:02 +01:00
jespergravgaard
bd64ba36dd Improved inline kickasm naming 2018-12-29 00:55:34 +01:00
jespergravgaard
006aa5b428 Added piece initial positions. 2018-12-29 00:36:24 +01:00
jespergravgaard
7d70b371ba Closer to real tetris 2018-12-28 23:55:29 +01:00
jespergravgaard
22aa93e802 Added ECM mode and background gfx. 2018-12-27 22:57:22 +01:00
jespergravgaard
d956ff9fcf Rearranged Tetris files. 2018-12-27 00:09:10 +01:00
jespergravgaard
53a161d52f Moved sprite IRQ's to separate file. 2018-12-26 00:39:38 +01:00
jespergravgaard
d9d28f4018 Optimized a bit. 2018-12-25 23:25:42 +01:00
jespergravgaard
627df0bda9 Fixed problem where uninitialized variables resultes in compile errors. Closes #131 2018-12-25 22:46:58 +01:00
jespergravgaard
f6a566e2f8 Fixed tests. 2018-12-25 21:47:19 +01:00
jespergravgaard
2b25aec8ee Added missing call-path to interrupts used during uplift clobber-analysis. Closes #130 2018-12-25 21:33:07 +01:00
jespergravgaard
ceb271d021 Fixed tests. 2018-12-25 17:44:43 +01:00
jespergravgaard
f8191e8345 Default runs @begin code and then optimizes to main() if no code exists outside main. 2018-12-25 17:04:50 +01:00
jespergravgaard
2be7b2ca2b Fixed problem with volatiles reusing zero page addresses used by other variables. Closes #128 2018-12-24 15:05:46 +01:00
jespergravgaard
85c6f09590 Improved tests showcasing problems with volatiles. 2018-12-24 14:14:29 +01:00
jespergravgaard
b92ea8415b Added tests showcasing problems with volatiles. 2018-12-24 11:12:47 +01:00
jespergravgaard
8ef005e64d Fixed several compiler issues with volatiles. 2018-12-24 02:27:12 +01:00
jespergravgaard
fae4eb9e6c Added NES bg image 2018-12-22 09:26:42 +01:00
jespergravgaard
6f4f2cdd4b Added missing image 2018-12-19 00:34:21 +01:00
jespergravgaard
44d6e5fbbb Fixed tests (after reincluding cmp#0) 2018-12-19 00:33:27 +01:00
jespergravgaard
45b03818e4 Improved remove lines implementation 2018-12-18 23:09:20 +01:00
jespergravgaard
468def2d6a Minor refactoring. 2018-12-06 17:24:46 +01:00
jespergravgaard
7c74fd93d0 Minor refactoring. 2018-12-04 23:58:25 +01:00
jespergravgaard
33d1b90974 Fixed test. 2018-12-03 02:24:43 +01:00
jespergravgaard
0073fedf4f Fixed test. 2018-12-03 01:49:28 +01:00
jespergravgaard
a79e318bcd Working on Tetris. Implemented line removal. Fixed fragment error and added 2 missing fragments. 2018-12-03 01:46:48 +01:00
jespergravgaard
4724d7707c Working on Tetris. Added colors and random piece selection (from SID voice 3 noice). Moved some code to separate files. 2018-12-03 00:37:54 +01:00
jespergravgaard
eaa8d0c3fc Working on Tetris. 2018-12-02 23:10:02 +01:00
jespergravgaard
44e2075896 Working on Tetris. Added 3 failing tests with discovered problems. 2018-12-02 21:31:03 +01:00
jespergravgaard
04d777ec6c Working on tetris 2018-11-28 07:27:44 +01:00
jespergravgaard
c20389e310 Added a few missing fragments and support for arrays of pointers. 2018-11-25 02:46:22 +01:00
jespergravgaard
264f854133 Working on 16-bit rotation comparison 2018-11-17 16:49:55 +01:00