jespergravgaard
2db042801b
Isolated KickAss assembly during test. Fixed long branches. Closes #62
2018-02-13 03:34:01 +01:00
jespergravgaard
0d6ce93e93
Added KickAss assembly to Test
2018-02-12 23:41:46 +01:00
jespergravgaard
52dd6035a0
Dropped JSON serialization. Added KickAss JAR.
2018-02-12 21:39:26 +01:00
jespergravgaard
6b43d797f5
Using address-of in test-division.
2018-02-11 23:55:52 +01:00
jespergravgaard
3f62d86312
Implemented working address-of operator byte* pte = &b1;
2018-02-10 22:08:36 +01:00
jespergravgaard
085aa9f825
Added missing toString/()
2018-02-03 15:46:12 +01:00
jespergravgaard
623f83a076
Added address-of operator. Working in basic programs. Transience of variables not implemented so there is a risk the variable being referenced is optimized into a constant or removed. Closes #78
2018-02-03 13:20:34 +01:00
jespergravgaard
7343a85b91
Moved division into library
2018-02-01 22:55:26 +01:00
jespergravgaard
b502c26140
Optimizing zeropage coalesce to minimize moving values around. Closes #80
2018-02-01 22:36:54 +01:00
jespergravgaard
45302103fa
Implemented 16bit division. Added support for word arrays. (idx must be multiplied by 2 manually)
2018-02-01 20:17:08 +01:00
jespergravgaard
e0124ee654
Added 8bit unsigned division. Ensured that pointers are generated into ASM labels.
2018-01-31 21:27:23 +01:00
jespergravgaard
b466f2f5cc
Added test provoking a register clobber error.
2018-01-30 22:23:07 +01:00
jespergravgaard
63f6620246
Implemented register(A/X/Y) keyword for allocating variables to specific register. Closes #70
2018-01-30 22:18:49 +01:00
jespergravgaard
7e268c5b4f
Moving declared register through the variable chain.
2018-01-30 11:50:18 +01:00
jespergravgaard
88744c8624
Consolidating variable methods - preparing to remove the 3 sub-classes.
2018-01-30 10:23:55 +01:00
jespergravgaard
6a012a3fd0
Added register keyword
2018-01-30 10:04:35 +01:00
jespergravgaard
02d7170a4c
Made ASM parenthesis hard.
2018-01-28 23:22:22 +01:00
jespergravgaard
341d8c5556
Renamed dword fragments from vl... to vd...
2018-01-28 23:09:47 +01:00
jespergravgaard
546644b7d3
Added parenthesis to ASM expressions.
2018-01-28 23:06:19 +01:00
jespergravgaard
9b09aaab14
Made dword value higher (>$80000000)
2018-01-28 22:15:09 +01:00
jespergravgaard
3d33851983
Improved dword type inference.
2018-01-28 17:21:57 +01:00
jespergravgaard
9025b7d64a
Removed verbose log.
2018-01-28 16:39:58 +01:00
jespergravgaard
fff4299fb2
Added dword and signed dword. Closes #76
2018-01-28 16:19:15 +01:00
jespergravgaard
b3a1c330a7
Removed two synthable fragments
2018-01-28 10:25:40 +01:00
jespergravgaard
4bbddfb5e2
Added comment.
2018-01-24 23:34:35 +01:00
jespergravgaard
f599eb2735
Expanded inline casting to also handle nop casts of pointer derefs.
2018-01-24 23:29:44 +01:00
jespergravgaard
15c1108d2c
Expanded inline casting to also handle word/pointer casts. Closes #2 .
2018-01-22 00:31:28 +01:00
jespergravgaard
1646f9d3ff
Implemented inline casting - allowing for improved ASM when doing no-op casting.
2018-01-21 23:24:28 +01:00
Jesper Gravgaard
eab2e64154
Dropped suite again.
2018-01-21 16:30:37 +01:00
Jesper Gravgaard
1d54fec7be
Put tests into suite to get deterministic sequencing.
2018-01-21 11:39:06 +01:00
Jesper Gravgaard
9328608fe6
Rebuilt test files with new synth ASM's.
2018-01-21 11:14:20 +01:00
Jesper Gravgaard
2d8cf433f6
Sorting synthesis by clobber when printing. Added an handling of synths with equal cycles & clobber but different ASM.
2018-01-21 09:39:37 +01:00
jespergravgaard
267d006752
Improved bigscroll by inlining screen lines in array assignments.
2018-01-19 00:59:51 +01:00
jespergravgaard
30690b6306
Removed a bunch of synth rules. Added a few fragments.
2018-01-19 00:10:09 +01:00
jespergravgaard
cdbc2e05cf
Removed one synth rule. Fixed flaw in others.
2018-01-18 23:51:42 +01:00
Jesper Gravgaard
eadf85a048
Improved fragment generation further. Rules need clean-up soon to improve efficiency.
2018-01-18 23:21:31 +01:00
jespergravgaard
c7b6989c6c
Removed verbosity
2018-01-16 16:58:11 +01:00
jespergravgaard
08f2e3a6b8
Added rasterbar test program
2018-01-15 22:16:25 +01:00
jespergravgaard
13bd9509d1
Fixed issue with loop depth - now calculated corrent when some functions have no loops.
2018-01-15 21:02:49 +01:00
jespergravgaard
4c22877f0e
Only logging synthesis issue when set to verbose
2018-01-07 12:41:13 +01:00
jespergravgaard
a6e75ffcb0
Implemented fragment tests - first for assignment to unsigned bytes.
2018-01-07 11:42:46 +01:00
jespergravgaard
a047fedebf
Moved KC test files into separate folder
2018-01-06 16:36:54 +01:00
jespergravgaard
2603740d15
Moved KC test files into separate folder
2018-01-06 16:36:39 +01:00
jespergravgaard
40153fc6d6
Working on optimal synthesis
2018-01-06 14:01:40 +01:00
jespergravgaard
30d77c1450
Working on optimizing synthesis
2018-01-05 22:29:21 +01:00
jespergravgaard
b55485db50
Implemented sub-fragment clobber avoidance. Improved best template updating. Now the graph-based fragment synthesis system works. Still need to clean-up the synthesis rules.
2018-01-03 08:15:17 +01:00
jespergravgaard
e9965580a4
Iplemented graph based synthesis. Working on the kinks - eg. issue #75
2018-01-03 01:00:55 +01:00
jespergravgaard
b29ed11a81
Renamed fragment system classes in prepararion of graph based solution.
2018-01-02 17:09:42 +01:00
jespergravgaard
3595db56db
Renamed fragment system classes in prepararion of graph based solution.
2018-01-02 14:13:08 +01:00
jespergravgaard
2084be92e0
Implemented the rest of the comparison test. Fixed a double jump problem.
2018-01-02 10:17:59 +01:00
jespergravgaard
53d8afbb1d
Fixed an error in with comparison rewriting
2018-01-01 22:59:06 +01:00
jespergravgaard
4d46820cf4
Reformatted for code style.
2018-01-01 21:25:11 +01:00
jespergravgaard
20b9ab6881
Tried adding more memory for the Junit JVM
2018-01-01 15:59:15 +01:00
jespergravgaard
939b70aa23
Started implementing new style fragment synthesis rules. Yielding quite good initial optimizations.
2018-01-01 15:09:47 +01:00
jespergravgaard
269c1343ed
Implemented usage sorting and a file details logging option.
2017-12-31 00:15:23 +01:00
jespergravgaard
be37a45e36
Closes #9
2017-12-30 23:55:14 +01:00
jespergravgaard
14616458e5
Used usage module to identify & remove all unneeded fragments. Many unused ones moved into a new "unused" folder to be removed later.
2017-12-30 23:54:27 +01:00
jespergravgaard
aeba75906b
Removed all redundant fragment ASM files.
2017-12-30 22:17:42 +01:00
jespergravgaard
4f30cef2d3
Implemented asm template usage statistics. Now prefer synthesis over loading.
2017-12-30 21:59:23 +01:00
jespergravgaard
203af62173
Refactoring fragment synthesis to allow scoring of files & synthesis.
2017-12-30 19:22:44 +01:00
jespergravgaard
58c206cef4
Added more options to CompileLog for controlling verbosity.
2017-12-30 17:31:22 +01:00
jespergravgaard
174346d0f1
Improved Fragment Synthesis - trying all possible combinations. Closes #71
2017-12-30 17:24:30 +01:00
jespergravgaard
66fdfb08a9
Improved ZP detection
2017-12-30 14:18:57 +01:00
jespergravgaard
2367aa93cd
Added final score to the log
2017-12-30 13:45:59 +01:00
jespergravgaard
c7b137d631
Added working test for signed multiplication. Refactored AsmFragment synthesis away from relying on vwuc.
2017-12-30 11:55:28 +01:00
jespergravgaard
b95c7e20f5
Moved multiply into a library
2017-12-29 22:45:19 +01:00
jespergravgaard
df227e0b49
Implemented fast multiplication - tested that all results are correct.
2017-12-29 19:35:54 +01:00
jespergravgaard
fa00ecfbbf
Test data for alignment test
2017-12-29 18:20:44 +01:00
jespergravgaard
694fb66379
Added data alignment directive for arrays/strings.
2017-12-29 18:20:11 +01:00
jespergravgaard
39925809e3
Removed AsmFragment log again
2017-12-29 16:34:55 +01:00
jespergravgaard
b2a5e5184b
Removed AsmFragment log again
2017-12-29 16:19:23 +01:00
jespergravgaard
6b79ecc537
Implemented all fast multiply tables.
2017-12-29 16:05:27 +01:00
jespergravgaard
db6c1f54db
Improved log format slightly
2017-12-29 13:53:16 +01:00
jespergravgaard
5ec1070b41
Improved tests for CI
2017-12-29 11:40:03 +01:00
jespergravgaard
31e412bb11
Slimming log output
2017-12-29 11:21:11 +01:00
jespergravgaard
32d7db5ce7
Moved tests into Maven Test area to allow maven-based testing.
2017-12-28 15:34:32 +01:00
jespergravgaard
ff51d04356
Improved KC mul table gen.
2017-12-28 15:10:56 +01:00
jespergravgaard
d1ee716008
Improved KC mul table gen.
2017-12-28 14:46:31 +01:00
jespergravgaard
5e25684cf9
Slight improvement of code
2017-12-28 04:38:19 +01:00
jespergravgaard
6dcafb83c2
Optimized KC based multiply table generator.
2017-12-28 04:32:26 +01:00
jespergravgaard
8198b8f168
Generating fast multiply table in both ASM and KC - now word-based generation.
2017-12-28 04:13:31 +01:00
jespergravgaard
389b6042ed
Generating fast multiply table in both ASM and KC.
2017-12-28 03:32:59 +01:00
jespergravgaard
bb0aeb9e3b
Implementing fast multiplication KC program.
2017-12-28 01:50:55 +01:00
jespergravgaard
6532fdd002
Added array length mismatch error in Pass1.
2017-12-28 00:17:39 +01:00
jespergravgaard
19a040345f
Added array zero initializer and ASM .fill for arrays declared with a size but without initializer.
2017-12-27 23:53:51 +01:00
jespergravgaard
62a56f23fb
Removed unused LValueLoHiByte.
2017-12-27 22:48:26 +01:00
jespergravgaard
4bcf51732b
Added aseetion stopping compilation at pass 3 if any value list has survived.
2017-12-27 22:22:53 +01:00
jespergravgaard
347fc03f47
Made all declared arrays/strings implicitly constant.
2017-12-27 22:08:15 +01:00
jespergravgaard
4a7dd31d40
Fixed word constructor detection to detect all inline word constructors.
2017-12-27 21:47:07 +01:00
jespergravgaard
212e8572de
Improved constant string detection. Type System is still a bit of a mess.
2017-12-27 20:52:38 +01:00
jespergravgaard
8a1dbc36d7
Refactored recursive value replacement into ValueReplacer. Moved VariableReplacer to a simple ValueReplacer. Added test for true inline word constructors.
2017-12-27 13:40:55 +01:00
jespergravgaard
a3a7d02cd7
Added test to confirm that pointer destinations can now be incremented corrently. Closes #29
2017-12-26 17:38:51 +01:00
jespergravgaard
b412a4aefc
Assignments are now expressions. For-loops can now contain assignments in the increment part. LValue handling reimplemented (lvalue no longer exist in parser - only expression). RValues now also contains pointer derefs. Complex array expressions (SCREEN+$100)[i] now possible as LValues. ASM fragment generation improved to handle new more complex LValues & RValues. Closes #5 . Closes #43
2017-12-26 17:24:30 +01:00
jespergravgaard
2c44783879
Added ALU potential for _word_ operator
2017-12-26 10:31:30 +01:00
jespergravgaard
91f22c44f0
Removed all ASM steps between ASM optimizations - result smaller log file.
2017-12-26 09:15:10 +01:00
jespergravgaard
42b026a757
Allowing ZP coalescing whenever registers are the same type (before variables had to be the same type).
2017-12-26 00:24:40 +01:00
jespergravgaard
e3353acbc9
Implemented syntax for composing word from two bytes word w = { b1, b2 };
...
Optimizer still needs to attempt to (and allow) placing the two byte variables directly at the lo/hi-vars of the word wo minimize moving data around.
Closes #37
2017-12-25 23:27:54 +01:00
Jesper Gravgaard
bd3c26b5ec
Fixed constant inlining inside constant value lists.
2017-12-25 20:53:52 +01:00
Jesper Gravgaard
e314794f0b
Implemented true recursive variable replacer that can replace into pointers/value lists. Also using this when building SSA. Prepared syntax ant type inference for building a word from 2 bytes using word w = { b1, b2 };
2017-12-25 20:19:53 +01:00
Jesper Gravgaard
eb6ee9bff8
Prepared parser for inline word expressions.
2017-12-23 15:35:13 +01:00
Jesper Gravgaard
10b8431833
Simplified fragment value naming further.
2017-12-23 10:49:18 +01:00
Jesper Gravgaard
8b96c1ae40
Merge remote-tracking branch 'gitlab/master'
2017-12-23 10:31:24 +01:00
Jesper Gravgaard
9d6fd3e1c9
Simplified fragment symbol naming
2017-12-23 10:31:20 +01:00
jespergravgaard
c38e9b85e4
Implemented signed words - first test works. Closes #22
2017-12-23 02:35:50 +01:00
jespergravgaard
978c1fb997
Improved readability.
2017-12-22 14:34:10 +01:00
jespergravgaard
b3649997b6
Simplified fragement synthesis.
2017-12-13 00:48:59 +01:00
jespergravgaard
177be17dd9
Last of fragment renaming completed (zpptrby1/zpptrsby1 => pbuz1/pbsz1)
2017-12-13 00:29:48 +01:00
jespergravgaard
49b8545232
Next part of fragment renaming completed (coby1/cosby1/cowo1/coswo1 => vbuc1/vbsc1/vwuc1/vwsc1)
2017-12-12 22:39:27 +01:00
jespergravgaard
07478e86b1
Next part of fragment renaming completed (zpby1/zpsby1 => vbuz1/vbsz1)
2017-12-12 20:53:22 +01:00
jespergravgaard
8b8095ff87
First part of fragment renaming completed (aby/xby/yby/asby/xsby/ysby => vbuaa/vbuxx/vbuyy/vbsaa/vbsxx/vbsyy)
2017-12-12 00:09:14 +01:00
Jesper Gravgaard
5a819659a0
Removed signed byte register usage by allowing the fragment binding to also look at the variable type.
2017-12-10 20:00:00 +01:00
Jesper Gravgaard
e2aa0cd7e0
Removed signed byte register usage by allowing the fragment binding to also look at the variable type.
2017-12-10 19:53:14 +01:00
jespergravgaard
69dba6ea27
Added casting problem test nocast.kc
2017-12-05 23:31:43 +01:00
jespergravgaard
a79853a4ec
Improved static ASM analysis to recognize & remove several LDA/LDX/LDY of the same value.
2017-12-05 22:01:32 +01:00
jespergravgaard
c1b2b8ab7d
Added sprite MSB
2017-12-05 21:49:40 +01:00
jespergravgaard
ad9873d201
Improved slightly
2017-12-05 01:15:17 +01:00
jespergravgaard
5b070b5a27
Added progress while generating sines
2017-12-05 01:11:31 +01:00
jespergravgaard
3569405dc1
Added some consts
2017-12-04 23:54:12 +01:00
jespergravgaard
56b74e7e0f
Implemented initial sinus sprites.
2017-12-04 23:48:14 +01:00
jespergravgaard
c74b86a616
Moved tables into methods.
2017-12-03 23:24:25 +01:00
jespergravgaard
9ea1d4f2c1
Minor refactoring improving sine example.
2017-12-03 23:17:13 +01:00
jespergravgaard
c769aabc0a
Minor refactoring improving float lib.
2017-12-03 23:08:47 +01:00
jespergravgaard
80d5f2bf9d
Updated print test reference data.
2017-12-03 22:59:25 +01:00
jespergravgaard
e18a8cb7d8
Added library for using BASIC functions. Improved print library. Added test creating a sine. Added asserts for methods with to few/many parameters. Added assert for requiring procedure return value. Added som missing fragments.
2017-12-03 22:57:54 +01:00
jespergravgaard
878d3ae36b
Added tests for to few and many method parameters
2017-12-03 17:01:23 +01:00
jespergravgaard
87f58d8782
Implemented check in pass1 ensuring that all used vars have been assigned a value. Closes #8 . Closes #21 .
2017-12-03 16:49:56 +01:00
jespergravgaard
b43489f11a
Implemented ASM long label relabelling. Closes #57
2017-12-03 15:12:20 +01:00
jespergravgaard
defd957837
Intorduced better error when assigning a constant. Closes #19
2017-12-03 14:26:28 +01:00
jespergravgaard
ee5b113b3a
Declared constants only create a single version. Closes #34 .
2017-12-03 14:01:31 +01:00
jespergravgaard
0323fb0a0d
Fixed tests to take adcantadge of casting & int constant type elasticity.
2017-12-02 17:17:19 +01:00
jespergravgaard
9c39311d67
Preventing double imports. Closes #102
2017-12-02 16:56:58 +01:00
jespergravgaard
41fd3bc436
Implemented import functionality. Added import test. Closes #32 .
2017-12-02 16:35:13 +01:00
jespergravgaard
78dd8bc149
Added import keyword and failing test.
2017-12-02 00:01:53 +01:00
jespergravgaard
2f0bcfacd7
Rewrote syntax to separate declarations and statements.
2017-12-01 23:45:09 +01:00
jespergravgaard
fed99da261
Disallowing code outside methods. Closes #18 .
2017-12-01 23:25:53 +01:00
jespergravgaard
3023540e15
Refactored unused var analysis to reuse VariableReferenceInfos
2017-12-01 08:33:25 +01:00
jespergravgaard
18c36a6ed9
Implemented pass1 removal of all unused variables - but keeping all calls & side-effects. Closes #31
2017-11-30 23:19:02 +01:00
jespergravgaard
deb1304ba6
Added pass 1 base class. Added test for unused vars.
2017-11-30 21:51:13 +01:00
jespergravgaard
42840f8f77
Renamed phase 5 optimization.
2017-11-30 20:08:03 +01:00
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
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