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

928 Commits

Author SHA1 Message Date
jespergravgaard
9816e4cba1 Fixed test 2018-09-01 00:03:45 +02:00
jespergravgaard
e335a956e7 Added inline hello world 2 2018-08-31 23:43:37 +02:00
jespergravgaard
82c7a6c84d Improved command help 2018-08-31 23:22:09 +02:00
jespergravgaard
17ad45d453 Moved some KC-files to stdlib. Added option for multiple include paths. 2018-08-31 22:52:10 +02:00
jespergravgaard
7f29a344ae Improved commandline to include output-directory, compilation & execution. 2018-08-27 01:03:15 +02:00
jespergravgaard
7b940014a2 Version 0.5. First cmdline runnable version. 2018-08-26 09:12:31 +02:00
jespergravgaard
ffba4a87c1 Added target to create JAR 2018-08-25 10:28:22 +02:00
jespergravgaard
c05b04ff3c Created initial simple commandline using picocli. 2018-08-23 23:54:39 +02:00
jespergravgaard
8efb7f9f2f Added example of (non-working) calls inside unrolled loop.
Refactored hyperscreen to use c64.kc.
2018-08-23 22:14:39 +02:00
jespergravgaard
6dca0ada51 Added few comments and a few new constants 2018-08-23 00:35:19 +02:00
jespergravgaard
63badba136 Removed a bit more logging. 2018-08-23 00:24:33 +02:00
jespergravgaard
2c6fab8fe4 Removed a bit more logging. 2018-08-22 22:38:40 +02:00
jespergravgaard
126c8f6e0d Added detection of non-constant loops. 2018-08-22 22:23:43 +02:00
jespergravgaard
a223abdf6e Now also simplifying +0 and *0 in constant values. 2018-08-22 12:40:19 +02:00
jespergravgaard
105510a9ae Now consolidating constant integer increments eliminating xx+1+1+1 expressions in the output. 2018-08-22 11:36:38 +02:00
jespergravgaard
42bc31126a Decreased default logging. 2018-08-22 11:10:10 +02:00
jespergravgaard
2a5cdfb064 A bit more inlining 2018-08-22 10:17:58 +02:00
jespergravgaard
5fe09eefde Fixed test ref (and added failing infinite unroll loop) 2018-08-22 02:45:38 +02:00
jespergravgaard
a78960a823 Using loop unrolling in logo scroller. 2018-08-22 02:34:03 +02:00
jespergravgaard
1d339804da Added a double unroll loop 2018-08-22 02:19:27 +02:00
jespergravgaard
be18a84d98 Working loop unrolling! There are probably still a lot of non-working cases - and the lack of loop unroll limit will definitely cause infinite loops. 2018-08-22 01:42:00 +02:00
jespergravgaard
bbeb37ea61 Loop unroll prepare now complete. 2018-08-21 16:45:07 +02:00
jespergravgaard
4f23ed5079 Split unroll prepare into separate pass 2018-08-21 10:01:09 +02:00
jespergravgaard
b19bf2246e Created "loop-unroll" branch. 2018-08-19 21:48:26 +02:00
jespergravgaard
a87da922f8 Centralized getting all entry point blocks in the program into ControlFlowGraph 2018-08-12 01:03:44 +02:00
Jesper Gravgaard
75a8749db4 Moved interrrupt registers into c64.kc 2018-08-11 12:04:52 +02:00
Jesper Gravgaard
39e7ce3df1 Refactored all casts to pointers to use the generic OperatorCastPtr. 2018-08-11 11:38:19 +02:00
Jesper Gravgaard
129de6c3ec Refactored most casts to pointers to use the generic OperatorCastPtr. 2018-08-11 11:30:19 +02:00
Jesper Gravgaard
fe7950798e Added call-graph recursion in clobber-analysis for interrupt hardware clobber. 2018-08-11 11:08:43 +02:00
jespergravgaard
9a9eeec129 Fixed tests. 2018-08-11 00:52:02 +02:00
jespergravgaard
f33d7018ba Implemented clobber analysis to ensure that hardware clobber interrupts only save the registers clobbered. 2018-08-11 00:48:15 +02:00
jespergravgaard
9ef574f32d Fixed tests 2018-08-10 20:33:17 +02:00
jespergravgaard
df224c70b6 Fixed tests 2018-08-10 20:32:45 +02:00
jespergravgaard
f8ec74dc14 Implemented hardware & kernel interrupt types. 2018-08-10 12:46:44 +02:00
jespergravgaard
6a20fc33c7 Improved comments 2018-08-06 00:41:29 +02:00
jespergravgaard
044282e523 Added 2 Raster IRQ tests. 2018-08-06 00:37:40 +02:00
jespergravgaard
238cd2a531 Added volatile keyword and initial implementation ensuring that volatiles are not constant-optimized or put into registers. 2018-08-05 22:40:13 +02:00
jespergravgaard
b23029760a IRQ referencing outside const. 2018-08-05 17:50:45 +02:00
jespergravgaard
b8841a90f5 Added forward reference support yo procedure references. 2018-08-05 17:46:42 +02:00
jespergravgaard
b755cd4297 Added interrupt types (kernel, hardware). 2018-08-05 17:28:02 +02:00
Jesper Gravgaard
f463606742 Implemented interrupt procedures and pointers to procedures initial support. 2018-08-05 13:33:23 +02:00
Jesper Gravgaard
c0c7a1da44 Fixed test 2018-08-04 13:11:34 +02:00
jespergravgaard
0763a63a66 Working on interrupts 2018-08-04 13:07:21 +02:00
jespergravgaard
18473295c9 Fixed tests 2018-08-03 02:08:39 +02:00
jespergravgaard
ca55ac68cb Improved the multiplexer - now 32 sprites. 2018-08-03 02:02:08 +02:00
jespergravgaard
962fefe582 Improved the multiplexer 2018-08-03 00:07:42 +02:00
jespergravgaard
3559ac29d5 Improved multiplexer 2018-08-02 23:05:33 +02:00
jespergravgaard
0f4490dfb0 Implemented sprite multiplexer 2018-08-02 22:57:20 +02:00
jespergravgaard
3658d9f68e Implemented sorter inside a multiplexer. 2018-08-02 02:53:52 +02:00
Jesper Gravgaard
c272b93872 Added kickasm support for expressions specifying bytes & cycles. 2018-07-25 20:44:10 +02:00
Jesper Gravgaard
6475f70192 Added kickasm support for bytes & cycles. Changed location to pc. 2018-07-25 19:59:49 +02:00
Jesper Gravgaard
ae765bec6b Allowing location to be any expression that ends up being constant. Changed syntax for kickasm directives. 2018-07-25 20:09:12 +09:00
Jesper Gravgaard
19855bed21 Added "location" directive to inline kickasm to allow absolute placement. 2018-07-25 17:10:46 +09:00
Jesper Gravgaard
ea80c9445a Fixed arrays with fixed size defined by a simple named constant. 2018-07-23 23:24:44 +09:00
Jesper Gravgaard
112087b7bb Added iteration through all parts of the symbol table to usage finding. Now array lenghts set to constant calculations also work. 2018-07-23 16:27:30 +09:00
Jesper Gravgaard
99085f1351 Refactored ReferenceInfos to use a more abstract model of references to variables/constants. 2018-07-23 01:00:25 +09:00
Jesper Gravgaard
4b4c6f5364 Using ProgramValueIterator instead of custom loop. 2018-07-22 16:41:19 +09:00
Jesper Gravgaard
81e214cee3 Now replacing in both control flow graph and symbol table per default. 2018-07-22 16:24:08 +09:00
Jesper Gravgaard
f17422a564 Renamed ValueReplacer classes to ValueIterator to better illustrate the generic nature. 2018-07-22 16:02:51 +09:00
Jesper Gravgaard
a14fa4dec3 Eliminated AliasReplacers separate implementation of the execution. Now using a clean ValueReplacer. Also fixed Pass1GenerateSSA to use a clean ValueReplacer. 2018-07-22 14:14:15 +09:00
Jesper Gravgaard
f9449997cb Refacing ValueReplacer 2018-07-21 23:29:11 +09:00
Jesper Gravgaard
62cfda6468 Added SymbolVariableRef (preparing for refacing ValueReplacer and ReferenceInfos) 2018-07-21 22:58:42 +09:00
Jesper Gravgaard
3328a570c6 Implemented late constant resolving for array lengths allowing the use of any constant expressions in the first/last values. The length inside the SymbolType still needs to be fixed - so a few tests currently fail. 2018-07-21 18:13:36 +09:00
Jesper Gravgaard
ac9ba0065c Implemented late constant resolving for ranged for() allowing the use of any constant expressions in the first/last values.. 2018-07-12 14:42:47 +02:00
Jesper Gravgaard
dbcbe597c0 Fixed test on Windows. 2018-07-10 22:29:12 +02:00
jespergravgaard
cda0a9b498 Added a sinus plotter to test the sinus curves against macro-generated sinus. 2018-07-10 11:56:01 +02:00
jespergravgaard
ad0512cc9d Fixed test 2018-07-09 18:57:14 +02:00
jespergravgaard
5abd555206 Implemented initial logo scroller. Fixed long branch detection when inlining kickasm. Added needed fragments. 2018-07-09 18:39:01 +02:00
Jesper Gravgaard
5e9b15477a Implemented sinus generator for logo scroller. Added missing fragments and fixed issue when removing an unused block also made some variables unused. 2018-07-08 23:58:43 +02:00
Jesper Gravgaard
2c0299ee09 Implemented support for resources neede for inline KickAsm code. 2018-07-07 19:23:38 +02:00
Jesper Gravgaard
a82c5cf5b1 Implemented support for inline KickAssembler code 2018-07-07 13:55:15 +02:00
jespergravgaard
198c941d85 Added syntax for extern variables and inline kickasm code 2018-07-06 12:42:59 +02:00
jespergravgaard
45f30c7031 Fixed fragment test 2018-06-03 23:33:49 +02:00
Jesper Gravgaard
364ea5e9b9 Fixed fragment tests 2018-06-02 11:34:35 +02:00
Jesper Gravgaard
11b700d269 Fixed tests 2018-06-01 00:45:18 +02:00
Jesper Gravgaard
bb1048fdfa Fixed problem with ROL/ROR/ASL/LSR A not marked as clobbering A.
Working on line anim.
2018-05-31 20:01:56 +02:00
jespergravgaard
68cba8f9af A bit more line anim - work in (early) progress. Added inlined toD018() and toDd00(). 2018-05-14 23:53:03 +02:00
jespergravgaard
a7b751a9fd A bit more line anim - work in (early) progress. 2018-05-14 10:31:43 +02:00
jespergravgaard
f492173178 Added line anim - work in (early) progress. 2018-05-08 00:25:33 +02:00
jespergravgaard
808b60d06a Added printable error context to statements 2018-05-05 21:34:24 +02:00
jespergravgaard
21478bd5b6 Removed param-assignment attribute from call 2018-05-01 22:51:00 +02:00
jespergravgaard
e589373374 Added support for multi-level function inlining containing value-lists. 2018-05-01 22:37:28 +02:00
jespergravgaard
de8654322f Renamed method 2018-05-01 22:10:06 +02:00
jespergravgaard
4e973cebc7 Now supporting more complex functions inlining. 2018-05-01 22:08:23 +02:00
jespergravgaard
6bd3a2dedf Implemented function inlining. Closes #63 2018-05-01 00:09:51 +02:00
jespergravgaard
b15a88f27e Changed control flow graph block collection to a modifiable list. 2018-04-29 22:34:26 +02:00
jespergravgaard
3879ac83b0 Added ConstantCastValue for when noop casts are used on constant values. 2018-04-29 21:39:12 +02:00
jespergravgaard
a3109431bf Renamed modulus to modulo 2018-04-28 13:07:51 +02:00
jespergravgaard
469fd63320 Renamed modulus to modulo 2018-04-28 13:00:20 +02:00
jespergravgaard
55fa7be4d1 Implemented compound assignments. Closes #104 2018-04-28 12:06:01 +02:00
jespergravgaard
6a399cf210 Renamed boolean to bool. Closes #110 2018-04-28 08:41:05 +02:00
jespergravgaard
37e300fb2b Added test of chained assignments. 2018-04-28 08:22:53 +02:00
jespergravgaard
7ed032f039 Fixed fragment test reference data 2018-04-28 08:15:21 +02:00
jespergravgaard
35080d08d1 Added error when encountering runtime dicision/multiplication/modulus. 2018-04-27 20:12:51 +02:00
jespergravgaard
779e10aefc Added some basic arithmetic expression tests. 2018-04-27 16:11:42 +02:00
jespergravgaard
760ea7db44 Added missing fragment 2018-04-27 15:05:19 +02:00
jespergravgaard
521385065d Fixed logging 2018-04-27 14:55:46 +02:00
jespergravgaard
80f57ed5f1 Added boolean pointer test and a test that modifying a constant results in an error. 2018-04-27 14:49:35 +02:00
jespergravgaard
ad54c264c4 Added boolean type variables & fragments. Lots of missing fragments. Inlining any booleans possible will improve performance. Closes #86 2018-04-27 01:09:34 +02:00
jespergravgaard
e3da759057 Added test with a constant word pointer. Added missing word fragments. Fixed issue with pointer to unused word variable. 2018-04-26 23:29:43 +02:00
jespergravgaard
9265592f25 Implemented identical phi elimination 2018-04-25 01:11:28 +02:00
jespergravgaard
b2f16e2a57 Added missing fragments and a few new synth rules for derefidx 2018-04-24 23:15:18 +02:00
jespergravgaard
34d8afcaae Added some simple test programs for the manual. 2018-04-24 10:05:48 +02:00
jespergravgaard
34909f47d8 Recusion now detected, resulting in CompileError. Closes #88 2018-04-22 23:46:26 +02:00
jespergravgaard
a34f77d319 Improved fragment synthesis by allowing X/Y registers to be used for constant byte values - great for _derefidx_vbuc1! Closes #99 2018-04-22 22:49:40 +02:00
Jesper Gravgaard
eb2ff934c7 Added pass 2 assertion that no unversioned or fwddref variable refs exist. 2018-04-22 12:40:20 +02:00
Jesper Gravgaard
4640b31043 Added another test securing that undefined variables cannot be used even if fwd-refs are allowed. 2018-04-22 12:22:48 +02:00
jespergravgaard
c8edee4291 Implemented constant pointer detection - allowing for efficient NULL-code using const byte* NULL = $00. Closes #79 2018-04-22 11:40:25 +02:00
jespergravgaard
43395567af Implemented constant pointer detection - allowing for efficient NULL-code using const byte* NULL = $00. Closes #79 2018-04-22 11:24:02 +02:00
jespergravgaard
3a0a8f450d Now allowing forward references to variables (expected to be constants). Closes #101 2018-04-22 11:10:47 +02:00
jespergravgaard
13249cd744 Fixed problem where inline string is used only in hi/lo operator. Closes #103 2018-04-22 09:59:08 +02:00
jespergravgaard
b2f1e1abe3 Implemented boolean && / 2018-04-21 23:00:05 +02:00
jespergravgaard
8a7f5bde39 Implemented identification & elimination of complex constant if()s 2018-04-21 21:38:30 +02:00
jespergravgaard
5e3cbe1f3a Added a const inline case 2018-04-20 23:09:18 +02:00
Jesper Gravgaard
b1b8f361d3 Improved bool min test 2018-04-20 20:48:13 +02:00
jespergravgaard
92cba685e1 Added another const bool test 2018-04-19 22:29:01 +02:00
jespergravgaard
ee6e58f79c Fixed problem with PHI-blocks still referencing blocks that no longer call them bacause of constant bool if()s. 2018-04-19 01:46:41 +02:00
jespergravgaard
2fb9619381 Implemented constant if elimination and unused block removal in pass 2. 2018-04-18 23:19:25 +02:00
Jesper Gravgaard
e319ec9260 Added bool min test 2018-04-18 20:03:39 +02:00
Jesper Gravgaard
1ae9dbb6cf Added inline string test 3 & made minor fix to dtv-blitter-min 2018-04-18 12:44:52 +02:00
jespergravgaard
3ddc19c5c2 Implemented blitter minimal example. Added missing ref files. 2018-04-15 23:32:49 +02:00
Jesper Gravgaard
c29d278146 Adding more C64DTV test programs 2018-04-15 20:02:48 +02:00
Jesper Gravgaard
9cc3490f28 Added the last modes 2018-04-14 01:08:08 +02:00
Jesper Gravgaard
7fd8669cc1 Fixed constant inlining of strings. Closes #102 2018-04-13 20:06:29 +02:00
jespergravgaard
23ff5bab95 Added Sixs FRED mode 2018-04-10 00:00:01 +02:00
jespergravgaard
301ea8b645 Added more presets 2018-04-09 08:46:37 +02:00
jespergravgaard
a49e61f747 Added more gfx to the tester 2018-04-08 02:32:37 +02:00
jespergravgaard
706734360f Fixed tests 2018-04-07 17:03:36 +02:00
jespergravgaard
72e39f7cc4 Form and GFX are now two separate modes 2018-04-07 16:01:35 +02:00
jespergravgaard
2aef56bb2c Implemented split screen form menu 2018-04-05 00:30:26 +02:00
jespergravgaard
6bfc6de252 Added a keyboard event queue with scanner. Using it in C64DTV Gfx Explorer. 2018-04-04 12:07:14 +02:00
jespergravgaard
93fb8e1bff Added form colors. Added all fields to form. 2018-04-03 22:52:59 +02:00
jespergravgaard
0ad7984fe2 Added form field max values 2018-04-03 19:49:06 +02:00
jespergravgaard
25f396de12 Added z4 to tests 2018-04-03 08:21:04 +02:00
jespergravgaard
17ffe83bd2 Implemented v0.1 of a screen form library 2018-04-03 00:02:25 +02:00
jespergravgaard
91589327e3 Fixed loop detection problem. 2018-04-01 12:32:45 +02:00
jespergravgaard
10fd6ff19a Lowered uplift combinations further for higher speed 2018-04-01 12:17:13 +02:00
jespergravgaard
617b85ba8d Added missing a ora c 2018-04-01 04:40:28 +02:00
jespergravgaard
2d2ca18553 Fixed syntax 2018-04-01 04:38:11 +02:00
jespergravgaard
ef83e4342c Making loop error not fail. 2018-04-01 04:00:07 +02:00
jespergravgaard
302b5a62d7 Implemented partial gfx mode tester for c64dtv. found loop error. 2018-04-01 03:58:07 +02:00
jespergravgaard
6e9503a14d Made modes 1-3 compatible with stock C64 2018-03-29 09:19:36 +02:00
jespergravgaard
626329ddaa Added hicol MC mode 2018-03-29 09:09:07 +02:00
jespergravgaard
89e2900fdc Added ECM modes and MC std mode. 2018-03-29 08:49:51 +02:00
jespergravgaard
88313bbb81 added std charset / hicolor std charset and ecm std charset modes 2018-03-29 00:37:04 +02:00
jespergravgaard
7a55705b3e Added Sixs FRED 2 mode 2018-03-28 16:43:47 +02:00
jespergravgaard
b4bfaf016a Lowered number of uplift permutations to 1000 2018-03-28 15:21:22 +02:00
jespergravgaard
e518c393e6 Added chunky 8bpp BMM 2018-03-28 13:00:32 +02:00
jespergravgaard
839c356118 Added 8bpp Pixel Cell Mode 2018-03-27 22:32:06 +02:00
Jesper Gravgaard
46e5cb3e79 Fixed high-byteoperator problem with constants. 2018-03-27 12:01:58 +02:00
Jesper Gravgaard
39a6b0493f Fixed high-byteoperator problem with constants. 2018-03-27 11:52:51 +02:00
jespergravgaard
b122ac8af3 Added Sixs FRED mode. 2018-03-27 10:01:28 +02:00
jespergravgaard
472e6c43bd Better test image for Two Plane Bitmap Mode. Added keyboard glitch tester and operator hi/lo problem test. 2018-03-26 23:49:07 +02:00
jespergravgaard
6cfa6633f4 Now also eliminating unused variables from phi blocks. Closes #89 2018-03-26 21:57:30 +02:00
jespergravgaard
dc25fa7d11 Improved keyboard routine slightly. 2018-03-26 21:41:09 +02:00
jespergravgaard
770f213b40 Added missing SCREEN var 2018-03-26 00:44:41 +02:00
jespergravgaard
13a3f46858 Started C64DTV GfxMode tester 2018-03-25 23:40:38 +02:00
jespergravgaard
e01be9d33b Added a partial 3x5 font - ref data 2018-03-25 13:31:57 +02:00
jespergravgaard
f652d14fed Added a partial 3x5 font 2018-03-24 22:37:11 +01:00
jespergravgaard
7922d0f21a Added missing fragments 2018-03-22 22:30:16 +01:00
Jesper Gravgaard
71e4e5d22d Added shift support to CHARGEN tester 2018-03-22 21:50:25 +01:00
Jesper Gravgaard
49d2aaaf24 Merge remote-tracking branch 'origin/master' 2018-03-22 18:34:09 +01:00
Jesper Gravgaard
981d925a4d Coding CHARGEN tester 2018-03-22 18:34:04 +01:00
jespergravgaard
18bf726d1c Fixed P key 2018-03-22 00:04:41 +01:00
Jesper Gravgaard
cfd0e836ce Added keyboard space check test program. 2018-03-20 00:52:55 +01:00
Jesper Gravgaard
b796a248c0 Added a fragment 2018-03-20 00:44:57 +01:00
Jesper Gravgaard
f613cbbe36 Added keyboard library and tester 2018-03-20 00:30:27 +01:00
jespergravgaard
2015c17d25 Updated fragment reference 2018-03-19 01:22:04 +01:00
jespergravgaard
8f6db3a39b Implemented keyboard routines for reading the keyboard matrix status. 2018-03-19 01:15:18 +01:00
jespergravgaard
171b015d5f Implemented simple DTV raster test 2018-03-18 16:35:47 +01:00
jespergravgaard
f212c55c02 Fixed const casting problem 2018-03-11 21:45:26 +01:00
jespergravgaard
979cb91eeb Moved operator type inference to Operator class. Improved type inference. 2018-03-11 18:44:48 +01:00
jespergravgaard
cfa3ab9047 Renamed calculate() to calculateLiteral() 2018-03-10 21:14:51 +01:00
jespergravgaard
ec791672ce Removed ConstantValueCalculator. 2018-03-10 21:11:24 +01:00
Jesper Gravgaard
18335aa29a Moved constant literal value calculation into Operator 2018-03-10 17:06:42 +01:00
Jesper Gravgaard
1fa3d8bbbf Moved statements, symbols and values into packages 2018-03-06 20:54:52 +01:00
Jesper Gravgaard
fd0b667b19 Moved expression operators to separate package 2018-03-06 19:50:26 +01:00
Jesper Gravgaard
73afb3d1be Moved expression operators to separate classes. 2018-03-05 23:49:09 +01:00
Jesper Gravgaard
7876b98573 Caching alive combinations for better performance. 2018-03-05 10:45:07 +01:00
Jesper Gravgaard
133f8603c7 Fixed precedence problems for casts and inc/dec 2018-03-05 10:10:56 +01:00
jespergravgaard
f4196b9e67 Fixed log 2018-03-05 01:14:10 +01:00
jespergravgaard
f31eb7b1f0 Added scaled sin generator - found problem with cast & precedence. 2018-03-05 01:00:33 +01:00
jespergravgaard
0663888a3f Added initial min/max sin-generator. 2018-02-26 23:00:10 +01:00
jespergravgaard
d5fd4a41c3 Fixed loop problem. 2018-02-25 19:27:36 +01:00
jespergravgaard
53d021bae3 Added second 8-bit sinus test (against 16-bit sinus) 2018-02-25 14:35:20 +01:00
jespergravgaard
2789361724 Fixed 8-bit sinus implementation. 2018-02-25 14:07:44 +01:00
jespergravgaard
7d26c74c21 Added initial 8-bit sinus (not quite working yet.) 2018-02-25 11:10:50 +01:00
jespergravgaard
97bc9870f9 Syntax changes 2018-02-25 00:39:19 +01:00
jespergravgaard
651de919b3 Comment fixed 2018-02-25 00:10:10 +01:00
jespergravgaard
73bdd4ff8d Optimized sin /128 part. 2018-02-25 00:08:11 +01:00
jespergravgaard
f0917c7bed Optimized ZP coalesce vastly. 2018-02-24 21:06:25 +01:00
jespergravgaard
1ec9060962 Added clobber test to ZP coalesce 2018-02-24 14:12:37 +01:00
jespergravgaard
a87a97c669 Moved sin to separate method. 2018-02-24 13:02:15 +01:00
jespergravgaard
948db1a389 Fixed lo/hi test 2018-02-24 08:14:01 +01:00
jespergravgaard
028fd75878 Fixed > & < for pointers. 2018-02-24 00:54:12 +01:00
jespergravgaard
b3537e3b66 Implemented full -$7fff-$7fff range word sinus generator. 2018-02-24 00:46:25 +01:00
jespergravgaard
6702baa875 Fixed lo/hi of dwords in constants. 2018-02-23 22:15:10 +01:00
jespergravgaard
37bfd18716 Working a bit on the sinus table generator. 2018-02-20 23:12:39 +01:00
jespergravgaard
696d1a1f5f Working a bit on sinus table generator. Tested resulting sinus - it is within +/-2 of a java-calculated sinus. 2018-02-20 22:41:36 +01:00
jespergravgaard
db603554ac Using reciprocal multiplication for divisions inside loop. 2018-02-20 10:53:31 +01:00
jespergravgaard
d3070fec14 Implemented first sinus generator using sinx=x-x^/3!+x^/5!. 2018-02-19 08:29:47 +01:00
jespergravgaard
a695a94422 Extended linear table gen with two tables. 2018-02-18 20:41:36 +01:00
jespergravgaard
b5dfef7368 Optimized line table generator. Improved const identification in phi-values. 2018-02-18 19:52:51 +01:00
jespergravgaard
0478bc7404 Limited label usage for constant integers referenced outside scope. Optimized division. 2018-02-18 19:39:08 +01:00
jespergravgaard
d3898d717e Using labels for constant integers referenced outside scope. 2018-02-18 17:49:03 +01:00
jespergravgaard
76d3e25b84 Implemented inline dword constructor dword dw = { wl, wh }; 2018-02-18 15:35:17 +01:00
jespergravgaard
0c7883532e Split multiply tests for performance 2018-02-16 08:59:54 +01:00
jespergravgaard
8f21ffc0e4 Implemented signed word multiplication & test. 2018-02-16 01:13:57 +01:00
jespergravgaard
34d3c732da Implemented word multiplication 2018-02-15 20:36:26 +01:00
jespergravgaard
b5a79848f3 Implemented dword ASM and printing 2018-02-15 19:50:33 +01:00
jespergravgaard
8b54f38640 Implemented bitshift signed byte multiply. 2018-02-15 12:35:40 +01:00
Jesper Gravgaard
c936da289e Implemented normal binary multiply for unsigned integers - mul8u(). 2018-02-14 11:30:31 +01:00
Jesper Gravgaard
a6f32bea13 Renamed multiply.kc to fastmultiply.kc - and methods multiply()/signed_multiply() to mulf8u(), mulf8s() 2018-02-14 10:05:18 +01:00
Jesper Gravgaard
7900c846c9 Adde useful comment 2018-02-13 23:21:24 +01:00
Jesper Gravgaard
3eb08597cf Implemented 16bit signed division. 2018-02-13 23:10:47 +01:00
Jesper Gravgaard
1fd0cd6874 Moved remainder to global var 2018-02-13 22:07:01 +01:00
Jesper Gravgaard
8705527316 Fixed conflict 2018-02-13 21:40:52 +01:00
Jesper Gravgaard
a50d685574 Fixed problem with phi lifting not updating predecessor in phi blocks when introducing new blocks. Implemented signed division for bytes. 2018-02-13 21:27:17 +01:00
jespergravgaard
1feed93b43 Renamed long branch fix label. 2018-02-13 13:05:46 +01:00
jespergravgaard
aec15a3125 Removed a bit of unused code. 2018-02-13 12:46:35 +01:00
jespergravgaard
c8a2d03550 Fixed register coalesce issues (Double.MIN_VALUE is unexpectedly positive). 2018-02-13 04:23:44 +01:00
jespergravgaard
9f80f71c64 Isolated KickAss assembly during test. Fixed long branches. Closes #62 2018-02-13 03:34:21 +01:00
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