jespergravgaard
|
d9490718fa
|
Optimizing ASM removing double jumps and unreachable code (after JMP/RTS). Closes #58. Closes #99.
|
2017-11-30 00:27:11 +01:00 |
|
jespergravgaard
|
6eb54c11a6
|
Working on improving constants.kc. Now everything works except allocation to asby (where clobber by a-register is not detected.)
|
2017-11-29 22:01:30 +01:00 |
|
jespergravgaard
|
1c59ae231e
|
Fixed problem with inline string by extracting them as local constants. Closes #98
|
2017-11-29 21:31:20 +01:00 |
|
jespergravgaard
|
14987484ee
|
Fixed live range problem when calling multiple calls one after the other. Closes #97.
|
2017-11-29 12:29:57 +01:00 |
|
jespergravgaard
|
507b27f436
|
Fixed an alias problem visible in print.kc where to eager aliasing destroyed the ln function. Now aliases are not identified, when the assignment is done withing another scope.
|
2017-11-29 01:31:46 +01:00 |
|
jespergravgaard
|
1edb436dfd
|
Fixed problem with ++ being added twice in *(char_cursor++) = *str;
|
2017-11-28 01:23:59 +01:00 |
|
jespergravgaard
|
663b885196
|
Now removing any unused procedures in pass 1. Closed #96
|
2017-11-28 00:39:15 +01:00 |
|
jespergravgaard
|
b81ae706af
|
Fixed problem with inline data (strings/arrays) being generated at the start of methods. Closed #4
|
2017-11-27 23:55:39 +01:00 |
|
jespergravgaard
|
015de8da3d
|
Improved static value analysis to identify #<0, #>0 as identical to #0
|
2017-11-27 18:11:28 +01:00 |
|
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 |
|
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 |
|