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

907 Commits

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