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

153 Commits

Author SHA1 Message Date
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
jespergravgaard
14219443a8 Ensured that assignment to variables with ALU potential does not affect potential registers through clobbering. 2017-11-01 16:43:13 +01:00
jespergravgaard
4bcef390f3 Fixed bresenham line to do proper word-based addition. 2017-11-01 14:10:49 +01:00
jespergravgaard
0317fc50c3 Improved constant inlining to inline constants with different valued versions 2017-11-01 13:26:32 +01:00
jespergravgaard
4de433730f Fixed problems with versioned constant call parameters being mixed up and with missing scope name on constant references across scopes. 2017-11-01 12:59:29 +01:00
jespergravgaard
6097d80b91 Added a bunch of test cases highlighting each known error 2017-10-29 11:43:39 +01:00
jespergravgaard
c4c60a5b36 Added a bunch of test cases highlighting each known error 2017-10-29 11:41:35 +01:00
jespergravgaard
00f53c49b6 Added support for lo/hi lvalues. Added more ALU options. Working on bitmap plotter. 2017-10-29 01:56:53 +02:00
jespergravgaard
f60be66531 Working on bitmap bresenham. Added lo/hi unary operators. 2017-10-26 12:48:04 +02:00
jespergravgaard
7def3abf28 Improved TODO 2017-10-23 01:29:39 +02:00
jespergravgaard
0d9a0a84f8 Added another known problem 2017-10-23 01:23:39 +02:00
jespergravgaard
cd2c50b8a8 Fixed NPE 2017-10-23 01:22:36 +02:00
jespergravgaard
471117561b Updated TODO. Removed string keyword. 2017-10-23 01:12:13 +02:00
jespergravgaard
943775d97d Implemented phi transition assignment clobber checking. 2017-10-23 00:48:22 +02:00
jespergravgaard
ee5499a313 Added minimal PHI clobber example. 2017-10-21 13:34:42 +02:00
jespergravgaard
f63a540d15 Removed unnecessary (synthesizeable) fragments. 2017-10-21 12:58:03 +02:00
jespergravgaard
774e909a20 Added half-asses halfscii. 2017-10-21 12:36:37 +02:00
jespergravgaard
c569ce8de9 Improved fragment manager enabling synthesis of more fragments. Added boolean operators (and, or, xor, not) 2017-10-20 17:25:04 +02:00
jespergravgaard
1ee63ce40a Added literal char syntax. Added literal test. Improved voronoi by using inmem arrays. 2017-10-19 10:21:32 +02:00
jespergravgaard
b4abb9394e Fixed ClassCastException when attempting to removing a procedure with an empty start. Added a pointer conter increment test. 2017-10-19 09:12:46 +02:00
jespergravgaard
5a4388d6d3 Added KC-based scroller 2017-10-19 01:29:44 +02:00
jespergravgaard
7be265f42c Fixed culling problem causing conditional branches into phi-functions to be skipped. 2017-10-18 14:16:59 +02:00
jespergravgaard
6fb5372f1b Added support for ASM .string directives through string initializer. 2017-10-17 22:51:16 +02:00
jespergravgaard
1a649008b9 Added support for ASM .byte directives through array initializers. 2017-10-17 13:34:41 +02:00
jespergravgaard
feba0565b4 Cleaned up RValue hierarchy. Removing redundant Constant interface. Moving ConstantVar out of the value-hierarchy. 2017-10-17 11:35:37 +02:00
jespergravgaard
efc750ce11 Moved type inference into the model. Renamed ICL to model. 2017-10-17 09:58:00 +02:00
jespergravgaard
09ed57fb98 Separated ASM fragment system out from ASM base 2017-10-17 09:47:26 +02:00
jespergravgaard
1f4efe0a4f Added asm names to symbol table printout. 2017-10-17 09:39:15 +02:00
Jesper Gravgaard
5de6bbba13 Added missing fragments (through signature rewriting) 2017-10-16 13:20:08 +02:00
jespergravgaard
520361f7b6 Optimized live range effective - vastly improving compile speed. 2017-10-16 12:47:42 +02:00
jespergravgaard
d551f8c569 Small numbers skip $ 2017-10-15 23:15:49 +02:00
jespergravgaard
3c1f4d2901 Minor syntax fixes 2017-10-15 22:48:04 +02:00
Jesper Gravgaard
46ffa81633 Added operator precedence to constant printing - avoiding unnecesary perenthesis 2017-10-15 22:39:50 +02:00
Jesper Gravgaard
7b9e80aaac Added constant addition consolidation optimization. 2017-10-15 17:53:18 +02:00
jespergravgaard
525ac454cc Added a new constant test 2017-10-14 22:37:30 +02:00
jespergravgaard
a09ca15dbf Inlining constants that are unnamed, single versions of a variable or aliases of other constants 2017-10-14 22:36:52 +02:00
jespergravgaard
1a9ae72668 Added unnamed constant inlining 2017-10-13 08:06:55 +02:00
jespergravgaard
ccfa6bdbf3 added simple asm constants (syntax error still) 2017-10-04 01:08:36 +02:00
Jesper Gravgaard
6f2dfdbec3 Initial working implementation of constants in the symbol table and ASM. Still needs to output const definitions (intelligently). 2017-10-02 21:47:12 +02:00
Jesper Gravgaard
a553cb97c3 Added more fragments 2017-09-06 21:23:48 +02:00
Jesper Gravgaard
616311daf8 Finally new live ranges are working correctly - including effective live ranges for statements inside methods. 2017-09-06 18:59:53 +02:00
Jesper Gravgaard
99088aef58 Improved uplift test and zp coalesce test to include live ranges from calling statements in overlap testing. The new live range system is still far from perfect. Next step is getEffectiveAlive(stmt) returning alive vars + alive vars from all calling contexts. 2017-09-04 22:15:18 +02:00
Jesper Gravgaard
eb6cf1188c Working on a new live range analysis and the ability to handle constants symbolically. TODOs remaining: Live range overlap analysis of register combinations inside methods must also look at registers alive at all calls. Examine why temp-vars are used in flipper. Examine why flipper is plotted in a wrong position on the screen. Implement constants into the symbol table and support them in code. Implement new constant consolidation steps. 2017-09-04 00:49:00 +02:00
jespergravgaard
61d16b3030 Implemented phi transition reuse when transitions are identical on a register basis 2017-08-26 02:05:46 +02:00
jespergravgaard
83edd3e21b Implemented phi transition reuse when transitions are identical 2017-08-26 01:15:57 +02:00
jespergravgaard
23d9af8420 Started work on phi transition optimization 2017-08-23 09:37:16 +02:00
Jesper Gravgaard
f72585e3c0 Fixed clobber issues caused by statement idx of phi statementsin ASM changed to the call-statement instead of the phi. 2017-08-22 14:57:04 +02:00
jespergravgaard
64c690f925 Improved ZP register ASM naming further. (issue with allocation not choosing optimal registers in some cases - a few tests left failing) 2017-08-21 08:27:34 +02:00
jespergravgaard
029227652e Improved zp register references across scopes. 2017-08-21 01:19:43 +02:00
jespergravgaard
5a91902c21 Moved register allocation into symbol table Variable 2017-08-20 21:41:17 +02:00
jespergravgaard
1982d01297 renames 2017-08-20 21:20:07 +02:00
jespergravgaard
ffce3298ef Moved bresenham into main() 2017-08-20 21:12:40 +02:00
jespergravgaard
2707bd5861 Working on outputting variable labels in ASM. Moving register allocation & constant values into symbol table. 2017-08-20 21:09:03 +02:00
jespergravgaard
df631667a0 Changed ranged loop to only accept constants. 2017-08-18 08:40:15 +02:00
jespergravgaard
14dfaee552 Implemented for() loops. 2017-08-18 00:28:39 +02:00
jespergravgaard
5a075a0ce4 Added for syntax to parser 2017-08-14 08:34:02 +02:00
jespergravgaard
d5f62dfd11 Improved program flow for if-statements without else by inverting the condition and jumping over the stmts. Improved fragment synthesizing. 2017-08-13 03:03:56 +02:00
jespergravgaard
7b30fa4f2c Added ifmin() for optimizing if() block sequence. 2017-08-13 00:44:48 +02:00
jespergravgaard
4741a2d22e Improve pass structure 2017-08-13 00:30:51 +02:00
jespergravgaard
9c8372b989 Redundant and unused label elimination in ASM. 2017-08-12 21:27:36 +02:00
jespergravgaard
5f27eba623 Fixed scope issues in ASM. Added scope to blocks. 2017-08-12 20:16:07 +02:00
Jesper Gravgaard
15a9415d63 Improved ASM readability 2017-08-12 18:30:21 +02:00
jespergravgaard
1577fe026e Changed ASM numbers to HEX 2017-08-12 02:55:20 +02:00
jespergravgaard
7555d45b34 Finally got a hold of live ranges when propagating back over calls. 2017-08-12 02:30:37 +02:00
jespergravgaard
9334e435da refactored addpoint to increment its own counter 2017-08-12 00:31:14 +02:00
jespergravgaard
7c7e0ec08f Added more minimal test for modifying globals 2017-08-12 00:23:55 +02:00
jespergravgaard
450fc1add0 Added more minimal test for modifying globals 2017-08-12 00:22:46 +02:00
jespergravgaard
fc859e8a03 Implemented ability of procedures to modify globals 2017-08-12 00:15:59 +02:00
jespergravgaard
867d78fd31 Implemented ASM voronoi with squared distance function. 2017-08-07 23:17:56 +02:00
jespergravgaard
1f4ea4f68c Scrren init moved out of main loop. 2017-08-07 21:40:32 +02:00
jespergravgaard
3eaed1c946 Animated voronoi. Added fragments as needed. 2017-08-07 21:23:35 +02:00
jespergravgaard
772a2a3761 Removed unnecessary fragments 2017-08-07 17:53:43 +02:00
jespergravgaard
9f5efab3ee Less logging during uplift. 2017-08-07 17:17:14 +02:00
jespergravgaard
d640c53033 Added fragment manager with ability to do fragment synthesis from sub-fragments. Added more fragments. 2017-08-07 16:35:10 +02:00
jespergravgaard
2a19c52c1d Implemented Voronoi renderer. Added missing fragments. Added combination limit and an iteration trying to uplift the remains. 2017-08-07 14:53:25 +02:00
jespergravgaard
ec1838adba Added ALU uplift potential analysis 2017-08-06 17:00:10 +02:00
jespergravgaard
3624e3ec27 Fixed two register allocation issues. 1. disallow two variables in the same phi-block to be allocated to the same register. 2. When analyzing potential registers call parameter phi statements are no longer examined. 2017-08-06 15:41:06 +02:00
jespergravgaard
0dae641df0 Optimized ASM instruction lookup by introducing a map. 2017-08-06 15:01:11 +02:00
jespergravgaard
0da6c7af6a Optimized fragment generation by caching loaded fragment files. 2017-08-06 14:14:58 +02:00
jespergravgaard
439a70e52a Implemented potential register elimination based on clobber analysis of individual statements. 2017-08-06 13:31:29 +02:00
Jesper Gravgaard
0e5bd97e21 Moved uplift combination testing to separate pass. Made interface for limiting the relevant registers for each equivalence class - improving speed of the combination testing. 2017-08-03 15:05:36 +02:00
jespergravgaard
3b99b6671c Added ALU to uplift attempts 2017-08-03 01:08:48 +02:00
jespergravgaard
59d33faf92 Implemented new uplift score function sum(cycles*10^loopdepth). Added a lot of missing fragments. Sorted scopes so max weight scopes are allocated first. 2017-08-02 22:20:00 +02:00
jespergravgaard
b9831c9445 Implemented register uplift combination search. This yields near optimal register allocation - but at a calculation cost at O(4^N) where N is the number of live range equivalence classes in a scope. 2017-08-02 00:57:29 +02:00
jespergravgaard
14c8ec13bf Improved segment generation 2017-08-01 20:38:55 +02:00
jespergravgaard
323e10ab37 Introduced Asm Segments which establish relation between ASM code and the generating ICL. 2017-08-01 13:58:15 +02:00
jespergravgaard
14c1f7e8eb Now identifying undeclared variables 2017-08-01 01:33:42 +02:00
jespergravgaard
b56f634b1e Merge remote-tracking branch 'gitlab/master' 2017-07-31 23:41:25 +02:00
jespergravgaard
64d9ff3f23 Gathered all pass results in Program. 2017-07-31 23:41:10 +02:00
Jesper Gravgaard
46dd64e46c Fixed test data 2017-07-31 23:39:42 +02:00
Jesper Gravgaard
27084f8667 Merge remote-tracking branch 'gitlab/master' 2017-07-31 23:38:05 +02:00
Jesper Gravgaard
4a9a3d54f5 Fixed test data 2017-07-31 23:37:15 +02:00
jespergravgaard
5d21c6aa97 Added indexes to ASM lines in AsmProgram 2017-07-31 21:53:42 +02:00
jespergravgaard
47e8b6b2b9 More fragments - a start at calculating value for ASM. 2017-07-31 20:00:25 +02:00
Jesper Gravgaard
18bbde8a44 Started implementing register uplift with clobber checks. Added a bunch of missing fragments. Added a few failing tests of errors that should give a nice error message. 2017-07-30 16:31:59 +02:00
jespergravgaard
3a14d2ef5b Cleaned up pointer handling in ASM fragments and binding 2017-07-30 11:28:28 +02:00
jespergravgaard
5f1cf097a4 Added a pointer test 2017-07-30 11:08:44 +02:00
jespergravgaard
120eba90a5 Implemented clobber assertion check for testing potential register allocations. 2017-07-29 23:38:07 +02:00