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

743 Commits

Author SHA1 Message Date
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
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
jespergravgaard
e34e01544b Fixed constant addition elimination. Moved ASM generation for a single statement to separate function - preparing for clobber analysis of register allocation. Added fibmem test. Tested ALU. 2017-07-29 21:04:28 +02:00
jespergravgaard
7f20f2a6ba Implemented variable register weight analysis. 2017-07-29 17:10:32 +02:00
jespergravgaard
0377193ec8 Moved to maven based configuration & build. 2017-07-29 14:59:55 +02:00
jespergravgaard
c12c45b5bd Fixed cross-scope aliasing. Improved assignment ASM for register copies. 2017-07-29 13:41:47 +02:00
jespergravgaard
d159163f21 fixed tests 2017-07-29 11:18:15 +02:00
jespergravgaard
438bdc38b4 Propagating live ranges backwards through calls to avoid coalescing variables in procedures with variables alive outside during the call. 2017-07-29 11:08:24 +02:00
jespergravgaard
9634741d76 Split zero page register allocation into separate phase steps. Added live range information to register allocation phases. 2017-07-29 10:24:37 +02:00
jespergravgaard
b4d5685222 Added a nested loop test. 2017-07-28 03:08:19 +02:00
jespergravgaard
007a5d34b4 Implemented loop depth analysis pass. 2017-07-28 02:55:19 +02:00
jespergravgaard
d1a13402fe Added loop depth analysis pass - not implemented yet. 2017-07-28 01:23:20 +02:00
jespergravgaard
45e64d59f1 A few renames and better doc. 2017-07-28 00:43:55 +02:00
jespergravgaard
d501534561 Implemented call graph analysis. 2017-07-28 00:38:17 +02:00
jespergravgaard
e7ea5fb4ea Implemented control flow graph loop analysis. 2017-07-27 22:20:50 +02:00
jespergravgaard
709cc57a1a Implemented graph dominator analysis. 2017-07-27 15:23:46 +02:00
jespergravgaard
be212f3b38 Implemented live ranged based register allocation - coalescing on phi statements first, copy-assignments second, other assignments third - and finally the remaining vars are added. 2017-07-27 01:33:10 +02:00
jespergravgaard
13c84a1741 Implemented PhiMemCoalesce. 2017-07-26 19:44:51 +02:00
jespergravgaard
16d4ab93f0 Added another block assertion 2017-07-26 17:01:01 +02:00
jespergravgaard
878059da13 Added more asserts 2017-07-26 16:09:47 +02:00
jespergravgaard
d7e0a638f2 Fixed tests 2017-07-26 15:14:56 +02:00
jespergravgaard
bebf020364 Improved phi lifting by introducing new blocks when lifting back to blocks with conditional jumps. Improved sequence planner to ensure blocks in the same scopes are kept together. 2017-07-26 15:09:00 +02:00
jespergravgaard
c43ab3acef Implemented variable live range identification 2017-07-26 00:26:50 +02:00
jespergravgaard
69cbee294d Made room for new pass 3 interval analysis 2017-07-25 00:56:42 +02:00
jespergravgaard
0aa64b3203 Added pass1 optimization removing empty blocks. 2017-07-25 00:21:40 +02:00
jespergravgaard
2819d3c58a Added pass1 optimization removing empty blocks. 2017-07-25 00:17:56 +02:00
jespergravgaard
524252105a Refactored toString to avoid redundant code. 2017-07-24 08:19:44 +02:00
jespergravgaard
300bb644b9 Refactored phi to use blocks instead of individual statements 2017-07-23 23:29:40 +02:00
jespergravgaard
122cef4e30 Better label naming when creating intermediate labels 2017-07-21 12:18:05 +02:00
jespergravgaard
88c7ed453a Better label naming when creating intermediate labels 2017-07-21 11:32:41 +02:00
jespergravgaard
4c0a9cd241 Removed cast calls to getSymbol() 2017-07-21 10:49:28 +02:00
jespergravgaard
6ef3af4fdf ICL Programs are now JSON serializable 2017-07-21 01:53:38 +02:00
jespergravgaard
d38c26eeb5 added a few toString()s 2017-07-20 10:14:22 +02:00
jespergravgaard
00463cd72f Moved all ref creation to getRef() 2017-07-20 10:02:25 +02:00
Jesper Gravgaard
de88808c5f Replaced all program labels with labelrefs ans procedures with procedurerefs. 2017-07-20 09:26:06 +02:00
Jesper Gravgaard
e6d09187e3 Added typed and untyped print functions everywhere. Now getting the same output as the old compilation! 2017-07-19 13:21:16 +02:00
Jesper Gravgaard
6e087e9a1c Now serializing all symbol types 2017-07-18 23:13:24 +02:00
Jesper Gravgaard
819c904419 Implementing JSON serialization of ICL 2017-07-18 22:49:25 +02:00
Jesper Gravgaard
1b0b81baf2 Restructured code in new packages 2017-07-18 18:12:11 +02:00
Jesper Gravgaard
92747454c7 Restructured code in new packages 2017-07-18 18:10:12 +02:00
Jesper Gravgaard
32a2c9eb2b Optimized registers for fibmem. 2017-07-18 16:46:52 +02:00
Jesper Gravgaard
a7e0e2b1d0 Added main method to flipper. Fixed a few bugs in compiler. 2017-07-16 11:09:32 +02:00
Jesper Gravgaard
f6eeb5ff83 Removed comments from ASM output 2017-07-16 09:41:27 +02:00
Jesper Gravgaard
67b4257ad9 Added a second test 2017-07-15 23:32:25 +02:00
Jesper Gravgaard
0116c9e21d Added full compile log to test 2017-07-15 23:26:45 +02:00
Jesper Gravgaard
8e59603418 made map linked for predictability 2017-07-15 22:21:07 +02:00
Jesper Gravgaard
81ba13c9c3 Implemented test comparing reference output to actual compilation output 2017-07-15 22:00:02 +02:00
Jesper Gravgaard
a908e4f1ca Proper implementation of pre-modifiers (++/--) 2017-07-14 12:13:16 +02:00
Jesper Gravgaard
1743e4f9d0 Proper handling of post modifiers 2017-07-14 01:59:04 +02:00
Jesper Gravgaard
1dfbcd1ca4 Working on predictability in output 2017-07-14 00:25:25 +02:00
Jesper Gravgaard
5c1aa7a2e7 Working on predictability in output 2017-07-14 00:15:33 +02:00
Jesper Gravgaard
20cb48b07d Working on predictability in output 2017-07-14 00:11:57 +02:00
Jesper Gravgaard
e271abb8a0 Using ++/-- post increment/decrement operators. 2017-07-13 23:48:25 +02:00
Jesper Gravgaard
ed7a4dded9 Added ++/-- post increment/decrement operators. 2017-07-13 23:40:17 +02:00
Jesper Gravgaard
de8e5139cc Added a phase 2 block assertion checking that the program always contains all referenced blocks. 2017-07-13 22:03:52 +02:00
Jesper Gravgaard
56cf4c80ef Added a phase 2 symbol assertion checking that the program always matches the symbol table. 2017-07-13 21:35:43 +02:00
Jesper Gravgaard
2e90516f34 Fixed problem with nested do loops being mixed up during empty block culling. Improved flipper implementation. 2017-07-13 20:41:16 +02:00
Jesper Gravgaard
d41f762a8b Completed KickC implementation of flipper 2017-07-13 00:50:53 +02:00
Jesper Gravgaard
8d7dfa8a8d Implemented most of flipper in KickC 2017-07-13 00:13:26 +02:00
Jesper Gravgaard
b25be31ba1 Implemented Control flow Graph Sequence Planner. Implemented working flipper. 2017-07-11 01:06:13 +02:00
jespergravgaard
01a26b4710 Implemented usage counting in sub-constant elimination. Added some more fragments 2017-06-17 11:09:59 +02:00
jespergravgaard
e5f1f7f387 Added support for multiple procs 2017-06-14 21:54:28 +02:00
jespergravgaard
5254d7d3a6 Fixed for callsum 2017-06-13 23:11:56 +02:00
jespergravgaard
790feb1dcc New alias elimination implementation. Optimized register allocation for test. 2017-06-13 22:48:03 +02:00
jespergravgaard
a5204acf79 Merge remote-tracking branch 'gitlab/master' 2017-06-13 19:48:14 +02:00
jespergravgaard
872c4cfc28 aliasing works on return statements 2017-06-13 19:48:09 +02:00
Jesper Gravgaard
fb3b083938 Working on parameter passing & return values 2017-06-13 07:18:07 +02:00
jespergravgaard
3b2cc5cde1 Refactoring control flow graph to enable proc calls. Still need to handle return values properly. 2017-06-11 23:36:05 +02:00
jespergravgaard
12bff79433 Control Flow Graph now handles procs & sub sprocs 2017-06-11 19:15:09 +02:00
jespergravgaard
40d44da2fc Added proc/endproc statements 2017-06-05 16:17:08 +02:00
jespergravgaard
03ee43c3b7 Looking at function calls 2017-06-05 16:01:50 +02:00
jespergravgaard
2dedf8263b Looking at function calls 2017-06-05 00:38:50 +02:00
jespergravgaard
4aa00d4536 Added special ALU register support 2017-06-04 00:45:40 +02:00
jespergravgaard
357bbecade Added *idx operator for array indexing. 2017-06-03 23:49:06 +02:00
jespergravgaard
65f41f874f Added constant addition optimization and improved alias-optimization 2017-06-03 22:37:12 +02:00
jespergravgaard
0f3da0ea3e Fixed bresenham array again 2017-05-31 01:12:23 +02:00
jespergravgaard
0bdd9d2f2e Implemented A register - and achieved optimal asm in sprite tabel generation. 2017-05-31 00:59:30 +02:00
jespergravgaard
aac15e64dd Added rol/ror and a table generation example 2017-05-30 23:55:02 +02:00
jespergravgaard
2a2d873e62 Added static register value analysis - eliminating uncecasary loads. 2017-05-30 11:09:39 +02:00
jespergravgaard
b7fd96c4ee Added clobber info on instruction set 2017-05-30 09:51:07 +02:00
jespergravgaard
cc3158e387 Added array-based bresenham 2017-05-29 22:54:36 +02:00
jespergravgaard
1540439d36 Added array-based bresenham 2017-05-29 22:43:05 +02:00
jespergravgaard
38408825cd Implemented simple bresenhm 2017-05-28 21:47:50 +02:00
jespergravgaard
5367a41bcf Asm Fragment binding using registers instead of variables. 2017-05-28 18:22:57 +02:00
jespergravgaard
5c907162f3 Added more general pointer support 2017-05-28 17:58:02 +02:00
jespergravgaard
b3dfb503f5 Now supporting fibonacci array generation 2017-05-28 12:46:14 +02:00
jespergravgaard
6f56b1bcfa added pointers/arrays 2017-05-28 08:58:22 +02:00
jespergravgaard
6376029dbf Now parsing array declarations 2017-05-25 02:24:18 +02:00
jespergravgaard
15b1dc60fe Added syntax for functions & arrays. 2017-05-23 08:51:39 +02:00
jespergravgaard
a565a0bea7 Added ASM optimization removing jumps / branches to next instruction. 2017-05-21 13:40:56 +02:00
jespergravgaard
39e5b5a894 Added do {} while(). Fixed relative jump labels. Added fib2 & y-usage. 2017-05-21 12:56:11 +02:00
jespergravgaard
0ba8ac742e Retired old ASM sequence for new ASM program 2017-05-21 10:56:26 +02:00
jespergravgaard
651f02e153 better syntax parser 2017-05-20 22:08:06 +02:00
jespergravgaard
da8ff513e6 Allowing last asm line without newline 2017-05-20 22:05:01 +02:00
jespergravgaard
8f9f042144 Created ASM parser & representation 2017-05-20 21:49:11 +02:00
jespergravgaard
91b455e042 Renamed fragment files to match windows 2017-05-20 11:48:01 +02:00
jespergravgaard
f8aa837eda initial attempts at register optimization 2017-05-18 00:06:31 +02:00
jespergravgaard
d5ff6e3ea2 Implemented conditional simplification optimization 2017-05-17 23:21:02 +02:00
jespergravgaard
84c0b01354 updated fib 2017-05-15 23:33:19 +02:00
jespergravgaard
7e043de594 Implemented fib - and fixed alias elimination issue 2017-05-15 21:54:32 +02:00
jespergravgaard
62533afc6a Refactored fragment handling 2017-05-15 18:30:43 +02:00
jespergravgaard
968f51343a Implemented the last asm fragments 2017-05-15 18:15:56 +02:00
jespergravgaard
4e4fee9035 Implmented asm fragment generator 2017-05-15 17:01:11 +02:00
jespergravgaard
4ca3fe0787 Added naive register allocation 2017-05-15 08:40:47 +02:00
Jesper Gravgaard
c58a999a42 Added repeating pass 2 optimizations 2017-05-14 13:25:31 +02:00
Jesper Gravgaard
b3fd0eb28c Added more simple optimizing passes 2017-05-14 11:30:46 +02:00
Jesper Gravgaard
73fa2839e0 Typified all Symbols 2017-05-13 16:20:58 +02:00
Jesper Gravgaard
3b8580498b Implemented phi function completion loop. 2017-05-12 10:26:56 +02:00
jespergravgaard
807198113b SSA with phi function almost complete 2017-05-08 18:08:07 +02:00
jespergravgaard
4eb905b15c Constructing Control Flow Graph. 2017-05-07 20:32:30 +02:00
jespergravgaard
a06fe6e989 Parsing, 3 Address Code, Type Inference 2017-05-07 11:58:54 +02:00
jespergravgaard
7a24cc0b62 SSA form generation for expressions started 2017-05-05 09:55:15 +02:00
jespergravgaard
04d4f32ad9 A bit more subpix work. Some font-work and a KickC parser start. 2017-05-01 00:11:51 +02:00