1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-10-21 17:24:39 +00:00
Commit Graph

818 Commits

Author SHA1 Message Date
jespergravgaard
3b297ef85d working on struct strategy 2019-12-14 09:50:26 +01:00
jespergravgaard
2bad8c915f Improved log message. 2019-12-08 16:04:35 +01:00
jespergravgaard
0e5087c99a Improved test. 2019-12-08 15:47:00 +01:00
jespergravgaard
cd62004812 Fixed test data with ASM optimization. 2019-12-08 15:21:23 +01:00
jespergravgaard
ad28ad18f9 A very early grid bob. 2019-12-08 15:16:32 +01:00
jespergravgaard
9daf5d7dc8 Added an ASM optimization 2019-12-08 13:25:34 +01:00
jespergravgaard
caec30ff0b Now both Vogel Sunflower Bobs & Sprites. 2019-12-01 14:04:18 +01:00
jespergravgaard
7aff220a6e Working on Vogel Sunflower Bobs. 2019-11-30 23:57:23 +01:00
jespergravgaard
d5f7a914f8 working on prebob. 2019-11-28 08:25:00 +01:00
jespergravgaard
87ab93f0ee Updated test with better fragment. 2019-11-24 23:53:07 +01:00
jespergravgaard
99f02843c2 Added better fragment. 2019-11-24 23:14:45 +01:00
jespergravgaard
5463c3174e Added pre-calculated char BOBs. 2019-11-24 23:00:44 +01:00
jespergravgaard
59ab4e0eb1 Improved variable constructors. Improved constant comments. 2019-11-23 23:46:46 +01:00
jespergravgaard
363a6c4424 Aligned struct variable creation with normal variables. 2019-11-23 18:31:00 +01:00
jespergravgaard
5ab9b4353c Refactoring Variable creation. 2019-11-22 23:41:01 +01:00
jespergravgaard
397680ea9c Removed FilledArray. Fixed unary plus. Closes #339 2019-11-19 08:28:54 +01:00
jespergravgaard
4f5064a372 Cleaning up old usages of SymbolTypeArray. 2019-11-18 23:19:58 +01:00
jespergravgaard
4ab7fe0596 Moving array properties from type to variable. Fixed the last few tests. 2019-11-18 22:56:18 +01:00
jespergravgaard
8656cc4785 Moving array properties from type to variable. A few tests still failing. 2019-11-18 22:50:06 +01:00
jespergravgaard
37f5d833c9 Moving array properties from type to variable. A few tests still failing. 2019-11-18 22:40:12 +01:00
jespergravgaard
ecccf55a08 Moving array properties from type to variable. A few tests still failing. 2019-11-18 22:02:29 +01:00
jespergravgaard
20dcf58eee Removed notregister from Variable. 2019-11-17 20:05:26 +01:00
jespergravgaard
fa5f96221d Removed inferedType from Variable. 2019-11-17 19:58:06 +01:00
jespergravgaard
4cd74cf0a0 Removed __notconst directive. 2019-11-17 19:36:30 +01:00
jespergravgaard
bd83f1f5bf Added example of a 8bit-per-pixel logo for the XMega65. 2019-11-17 16:49:54 +01:00
jespergravgaard
09c504e693 Working on catching all declared constants in parse 0. 2019-11-17 01:51:42 +01:00
jespergravgaard
6b15bedde0 Working on catching all declared constants in parse 0. 2019-11-04 00:39:09 +01:00
jespergravgaard
b921c99661 Converting constant value lists directly to constant values during parse. 2019-11-03 22:12:51 +01:00
jespergravgaard
cfb27e5915 Converting constant value lists directly to constant values during parse. 2019-11-03 21:27:11 +01:00
jespergravgaard
b6b01ab232 Fixed tests. 2019-11-03 20:11:06 +01:00
jespergravgaard
0b477d24ae Identifying declared constants already during Pass0. 2019-11-03 17:05:55 +01:00
jespergravgaard
5839a98c60 Changed declared const handling. 2019-11-03 10:48:40 +01:00
jespergravgaard
e35f1b1530 Fixed tests. Moved all attributes to SymbolVariable. 2019-10-31 23:07:51 +01:00
jespergravgaard
445f104309 Merge remote-tracking branch 'origin/328-memvars' into 328-memvars 2019-10-31 22:48:24 +01:00
jespergravgaard
db60a5e2a4 Moved constant value to SymbolVariable. 2019-10-31 22:48:08 +01:00
Jesper Gravgaard
e427cb648b Merge remote-tracking branch 'origin/328-memvars' into 328-memvars 2019-10-31 16:10:46 +01:00
Jesper Gravgaard
ad7c0c57ac Fixes static optimization problem. Closes #336 2019-10-31 16:10:29 +01:00
jespergravgaard
acb71114e2 Changed to standard C syntax. 2019-10-30 08:32:11 +01:00
jespergravgaard
7f9fd7b46a Updated tetris to C types. 2019-10-29 23:55:43 +01:00
jespergravgaard
d29a935507 Updated sinusgen8 test code. 2019-10-20 20:49:31 +02:00
jespergravgaard
e0749c4ac2 Updated sinusgen8 test code. 2019-10-20 20:41:16 +02:00
jespergravgaard
7ece3b172d Added another __notconst test. 2019-10-20 20:17:23 +02:00
jespergravgaard
79e6c92dd1 Added test of __notconst directive. 2019-10-20 20:15:01 +02:00
jespergravgaard
a34abcbdff Added __notconst directive. 2019-10-20 20:01:38 +02:00
jespergravgaard
ea4563cf99 Working on constant identification. 2019-10-20 17:06:17 +02:00
jespergravgaard
bacd900a9b Added test for __ssa / __notssa. Made literal char ConstantEnumerable. 2019-10-20 14:06:54 +02:00
jespergravgaard
71ce3d0438 Aligned hardcoded address register implementation between memory registers and zp registers. 2019-10-20 13:21:04 +02:00
jespergravgaard
93456f0eb0 Cleaned up code generation and register.isZp() 2019-10-20 12:12:36 +02:00
jespergravgaard
0298452244 Fixed tests. 2019-10-20 11:41:56 +02:00
jespergravgaard
9e6fcdc781 Fixed tests. 2019-10-20 03:43:58 +02:00
jespergravgaard
a8c9943b73 Fixed test data for constants. Closes #209 2019-10-20 01:48:09 +02:00
jespergravgaard
82d3cc7e68 Improved ASM name shortening to remove labels representing the same variable with different versions and the same allocation. Closes #209 2019-10-20 01:43:51 +02:00
jespergravgaard
fcf0d65bcb Adding a few directives to find. 2019-10-19 00:27:33 +02:00
Jesper Gravgaard
8f274f18a6 Refactored directive parsing slightly. 2019-10-17 11:13:46 +02:00
Jesper Gravgaard
90b2077ac5 Changed memory area keywords to __zp / __mem / address(0xnn) / address(0xnnnn). 2019-10-17 01:27:56 +02:00
Jesper Gravgaard
c215cfed28 Fixed test data 2019-10-16 08:34:33 +02:00
jespergravgaard
689e0e1e97 Improved struct value unwinding. 2019-10-14 01:07:01 +02:00
jespergravgaard
85676bc83a Implemented support for fixed address main memory variables using __mem(0x1000) directive. 2019-10-14 00:51:19 +02:00
jespergravgaard
12aed34f2d Added test for zeropage notregister variable. 2019-10-13 23:49:52 +02:00
jespergravgaard
da2dd21514 Changed 'memory' keyword to 'notregister'. Changed default for 'notregister' variables to be on zeropage. 2019-10-13 23:36:40 +02:00
jespergravgaard
0c4e0a833c Removed support for register(NUMBER) and memory(NUMBER). Added keywords for using zeropage memory (__zp) or main memory (__mem). Added support for __zp(NUMBER) and __mem(NUMBER). 2019-10-13 22:09:33 +02:00
jespergravgaard
f2660a8680 Improved fragments. Improved printing main memory registers. 2019-10-12 11:51:55 +02:00
Jesper Gravgaard
70aa2836da Improved printing register ZP. 2019-10-12 11:40:36 +02:00
jespergravgaard
873adf0b26 Renaming. 2019-10-06 23:48:27 +02:00
jespergravgaard
949917f734 Fixed test. 2019-10-06 23:20:15 +02:00
jespergravgaard
b93d65423d Eliminated most register types and classes. 2019-10-06 22:41:21 +02:00
jespergravgaard
1b9e4347fc Now trying registers for boolean vars. 2019-10-06 21:11:56 +02:00
Jesper Gravgaard
9877da213d Improved a few fragments. Moved to use the SymVar.isStorageXxx() methods. 2019-10-05 12:06:43 +02:00
jespergravgaard
6feeb0d842 Working on M/Z synth rules. 2019-10-04 00:20:17 +02:00
jespergravgaard
ec1087b876 Working on M/Z synth rules. 2019-10-04 00:00:41 +02:00
jespergravgaard
633cc9294b Working on M/Z synth rules. 2019-10-03 23:29:21 +02:00
jespergravgaard
78d316e7db Working on M/Z synth rules. 2019-10-03 22:58:34 +02:00
jespergravgaard
ec6139de54 Updated fragment test data #328 2019-10-02 08:27:48 +02:00
jespergravgaard
ce0377e155 Changed Z-fragments to M-fragments. Added z-to-m synth. 2019-10-02 01:07:42 +02:00
jespergravgaard
75dbe31cef Progress on memory variables. Added identification of identical memory registers. #328 2019-10-01 22:28:54 +02:00
jespergravgaard
7b7d7de49d Progress on memory variables. Avoided const/alias/... passes. Added new register type and the first few fragments. The first few tests working. #328 2019-09-30 23:57:27 +02:00
jespergravgaard
73854b7ee3 Added two memory variable tests with struct values. (illustrating that they do not work yet.) #328 2019-09-30 00:18:41 +02:00
jespergravgaard
624c27686c Added underscores to compiler-generated ASM-symbols to avoid clashes with C-symbols. Closes #329 2019-09-29 23:13:42 +02:00
jespergravgaard
198f4ee55f Optimized constant handling in pass 1. 2019-09-29 22:42:37 +02:00
jespergravgaard
bfdd2fb0a5 Optimizing constant detection - avoiding versions. 2019-09-29 22:36:02 +02:00
jespergravgaard
032f9d079e Completed refactoring of Variable class to use StorageStrategy. 2019-09-29 21:53:44 +02:00
jespergravgaard
f09e4da4d4 Fixed struct tests 2019-09-29 20:59:38 +02:00
jespergravgaard
587027397d Variable storage strategy implementation almost done. 2019-09-29 20:57:28 +02:00
jespergravgaard
688a36b6d7 Added fragment synths for Travis Fisher and Clay Cowgill. 2019-09-29 17:48:20 +02:00
jespergravgaard
a749cce83d Added test with a memory variable pointer. Illustrates how it would be better to make "real" memory variables instead of pointers to ... #328 2019-09-27 19:51:26 +02:00
Jesper Gravgaard
a450da9123 Fixed tests. #328 2019-09-26 15:05:50 +02:00
Jesper Gravgaard
b83ab7d402 Added another test. #328 2019-09-26 14:53:33 +02:00
Jesper Gravgaard
5652a11131 Implemented memory variable data output. Initialization can still be optimized. #328 2019-09-26 14:35:02 +02:00
jespergravgaard
f696f8db18 Added test declaring a memory-variables. #328 2019-09-24 08:55:06 +02:00
Jesper Gravgaard
665b9adbfb Added constant for return value offset on stack. Added padding when return value is larger than parameters. Improved calculations of stack frame sizes. #316 2019-09-23 17:53:23 +02:00
jespergravgaard
2b36c5c18b Fixed parameter push type sizes. #316 2019-09-23 08:30:18 +02:00
jespergravgaard
a11929dbd3 Renamed stack pull/push/idx - including fragments. #316 2019-09-23 07:42:13 +02:00
jespergravgaard
cbec257332 Results are now pushed. #316 2019-09-23 00:10:44 +02:00
jespergravgaard
6540d60e60 Fixed clobber-problem with stack-parameter-passing return-values. Results are still not pushed. #316 2019-09-22 23:12:19 +02:00
jespergravgaard
dc08f86302 Working on stack-parameter-passing. Split calls into prepare/execute/finalize. Still some clobber problems and results are not pushed. #316 2019-09-22 22:20:45 +02:00
jespergravgaard
bcddd821ff Renamed stack-manipulating fragments. Added fragment-based stack clean-up. #316 2019-09-20 16:27:50 +02:00
Jesper Gravgaard
5e1c05dc2e Added stack clean-up. Added parameter stack fetch type. #316 2019-09-20 14:19:43 +02:00
jespergravgaard
c6a5c54909 Added test data. 2019-09-20 08:34:51 +02:00
jespergravgaard
51d1e6f41f Changed control flow graph to print procedure signatures. 2019-09-18 23:00:34 +02:00
jespergravgaard
70435aec30 Added tests for different reported problems & fixes. 2019-09-18 21:53:32 +02:00
jespergravgaard
0ce718371e Fixed problem with adding ints to literal string pointers. Closes #315 2019-09-14 11:21:29 +02:00
jespergravgaard
bc1bb7d2e5 Fixed test 2019-09-14 08:09:34 +02:00
jespergravgaard
4f6908ac80 Fixed double emitting of strings inside arrays inside structs. Closes #312 2019-09-13 23:29:42 +02:00
jespergravgaard
edb12d8577 Moved strings into chunk method. 2019-09-13 21:21:32 +02:00
jespergravgaard
8b441f6814 Arrays of structs with arrays now working - with some minor flaws (Size of sub-array is not checked, Const Strings are output as data twice, ASM for indexing into array inside struct by pointer is not optimal). Closes "274" 2019-09-13 01:23:55 +02:00
jespergravgaard
24e40b9083 Fixed signed word greater-than fragments with errors. Progress on structs containing arrays elements. #312 2019-09-12 23:48:12 +02:00
jespergravgaard
f110b86ee1 Fixed _deref(_deref_pptc1) fragments to handle {c1}>255. Added simpler test for struct containing array problem. #312 2019-09-10 00:18:31 +02:00
jespergravgaard
4ab1cac029 Added missing test data 2019-09-09 23:29:18 +02:00
jespergravgaard
5fe5c9f84b Added missing struct-ptr fragments. Added padding to initialization of fixed size arrays with to few elements in the initializer. Closes #311 2019-09-09 23:01:04 +02:00
jespergravgaard
d6ad2c3b9b Added missing fragment. Fixed exception when casting literal string. Closes #309 2019-09-09 15:51:39 +02:00
Jesper Gravgaard
1a6be50c70 Working on CPU/ROM support. #307 2019-09-08 16:26:25 +02:00
jespergravgaard
3d0871f757 Added support for #pragma cpu(). Added test of program without illegal opcodes. Closes #303 2019-09-08 02:29:20 +02:00
jespergravgaard
9f01a27df0 Moved illegal opcode fragments to 6502X. #303 2019-09-08 01:48:56 +02:00
jespergravgaard
62f9d7c9d9 Added initial support for specifying which CPU to compile to. #303 2019-09-08 01:35:38 +02:00
jespergravgaard
32ead9cc87 One more optimization. 2019-09-07 22:31:24 +02:00
jespergravgaard
7fb7d3acf6 Optimized live ranges by statement idx in PassNLiveRangeVariables. Added example of how to use segments to compile code meant for transfer to zeropage. 2019-09-07 18:23:11 +02:00
jespergravgaard
0bf1363c90 Improved fragment 2019-09-04 23:11:35 +02:00
jespergravgaard
899058ce42 Added fragment for Paul Nelsen. 2019-09-04 23:09:27 +02:00
Jesper Gravgaard
036ff9259c Fixed problem with recursive aliasses (it was caused by a bad alias-replacement earlier). Closes #305
Fixed literal calculation of constant pointer decrement.
2019-09-03 16:16:07 +02:00
jespergravgaard
42ecee2f94 Working on #304, #305, #306. 2019-09-03 08:35:38 +02:00
jespergravgaard
9b113b4bcd Fixed problem with inline ASM culling JMP. Closes #302 2019-09-02 23:35:15 +02:00
Jesper Gravgaard
51cd148433 Implemented detection of constant addresses being <256 - and generating ZP ASM for these. Closes #301 2019-09-01 22:06:32 +02:00
jespergravgaard
8c56181554 Added support for allocating specific zeropage addresses for variables using the register(0x12) directive. This also includes function parameters making it possible to the calling convention pretty well. Closes #287 2019-08-29 22:52:58 +02:00
Jesper Gravgaard
67157f0a70 Implemented interval analysis for detecting conditions that are always true/false. Closes #291 2019-08-29 20:05:08 +02:00
jespergravgaard
a4450db06a Merge remote-tracking branch 'origin/master' 2019-08-29 15:40:51 +02:00
jespergravgaard
cc7e7829cb Fixed tests. 2019-08-29 15:40:41 +02:00
Jesper Gravgaard
c35d35c238 Updated test data 2019-08-29 09:29:33 +02:00
Jesper Gravgaard
b6d917a264 Added missing fragment. Added test for literal string pointer cast to word. #298 2019-08-27 14:54:49 +02:00
Jesper Gravgaard
a1fc0ace62 Added test showing inline ASM preserving called functions. #294 2019-08-27 14:31:30 +02:00
jespergravgaard
00c9b47481 Added support for specifying that inline kickasm uses a procedure - preventing it from being culled. Closes #294 2019-08-26 19:31:55 +02:00
jespergravgaard
452b9d2ae6 Fixed tests & fragment. 2019-08-26 00:55:22 +02:00
jespergravgaard
0dc8d5e735 Added fragments from Richard-William Loerakker 2019-08-26 00:23:05 +02:00
jespergravgaard
b97d8300b3 Added another example of loophead optimization giving wrong return value. #290 2019-08-25 22:57:23 +02:00
jespergravgaard
2739456cc3 Added test for optimizing comparisons to types outside range of type. Added a missing fragment (that won't be used when the optimization is implemented). #291 2019-08-25 22:44:06 +02:00
jespergravgaard
3aad07f4e1 Disabled constant loop head optimization by default (until the two known issues have been fixed.) 2019-08-25 22:21:58 +02:00
jespergravgaard
19e53bf6fd Implemented handling of expr-statements that do not produce a statement - this forces an assignment to a tmp-var (which means that it will be type-checked and more). Closes #276 2019-08-25 21:37:10 +02:00
jespergravgaard
c75e788fd1 Fixed problems casting strings to void*. Closes #281 2019-08-25 15:54:09 +02:00
jespergravgaard
0fb90dc8b7 Fixed problem casting a constant pointer to char. Closes #288 2019-08-25 14:51:07 +02:00
jespergravgaard
d3fa1f3743 Cleaned up lexer/parser. Added test of using ASM mnemonic as C symbol name. 2019-08-25 13:53:54 +02:00
jespergravgaard
91a7f0bb0d Implemented CParser, which handles imports at the token level. 2019-08-25 00:20:50 +02:00
jespergravgaard
f4032e6c84 Addes parser/lexer state ensuring that typedefs are recognized as types. Closes #269 2019-08-24 14:30:21 +02:00
jespergravgaard
bb53f0b51d Addes parser/lexer state ensuring that ASMREL labels does not get confused with negated struct references. Closes #266 2019-08-24 14:11:45 +02:00
jespergravgaard
5642c8d228 Added pointer ANDing test case. 2019-08-24 12:18:56 +02:00
jespergravgaard
2de0744639 Fixed switch test 2019-08-22 12:20:37 +02:00
jespergravgaard
a78ecc0e42 Added test for 32bit long pointer for 45GS02. 2019-08-22 12:15:33 +02:00
jespergravgaard
5923245630 Added missing fragments for Paul Nelsen 2019-08-22 11:13:52 +02:00
jespergravgaard
c70ac2f440 Fixed tests. 2019-08-22 01:51:32 +02:00
jespergravgaard
642f196786 Fixed switch without default. Closes #285 2019-08-22 01:01:01 +02:00
jespergravgaard
67a9880b94 Added example of Using function as error does not give an error - instead silently throws away the statement. #276 2019-08-21 07:06:11 +02:00
jespergravgaard
d42c7250af Fixed tests. 2019-08-20 00:26:04 +02:00
jespergravgaard
f4777a5876 Added interrupt type hardware_stack which uses the stack for saving the registers. Closes #256 2019-08-20 00:08:49 +02:00
jespergravgaard
733751dbe3 Added parenthesis to fragments when derefs are nested. Closes #270 2019-08-19 23:54:01 +02:00
jespergravgaard
e3427796d3 Added examples of 2 problems 2019-08-19 08:42:48 +02:00
jespergravgaard
0185370732 Fixed problem where code after return resulted in NPE. Closes #273 2019-08-18 23:44:01 +02:00
jespergravgaard
19c0637f1e Fixed relative labels in KickAss 5.9 #272
ASM  now uses literal encoded chars for better readability #245
2019-08-18 23:18:53 +02:00
jespergravgaard
65dffdbdea Added upport for continue inside switch statement. Closes #170 2019-08-18 21:55:21 +02:00
jespergravgaard
55b7dfdf91 Added a few fragments - and some tests illustrating certain problems. 2019-08-18 20:59:57 +02:00
jespergravgaard
3c12acbb43 Added support for \\ escape code. #241 2019-08-18 17:00:26 +02:00
jespergravgaard
577e0f6011 Implemented support for string and character escape codes \n \r \\ \" \'. Closes #241 2019-08-18 16:43:15 +02:00
jespergravgaard
f08812ab91 fixed test 2019-08-18 14:20:05 +02:00
jespergravgaard
891a4c21c2 Improved Atari Tempest Example Code. 2019-08-16 22:28:37 +02:00
jespergravgaard
8d7b0385cb Fixed type inference error message. Closes #260 2019-08-13 08:08:43 +02:00
jespergravgaard
c9a3f33773 Implemented switch()-statement - first simple test working. #170 2019-08-12 21:46:01 +02:00
jespergravgaard
1dd2f1ebe6 Improved basic-floats.kc 2019-08-11 01:16:56 +02:00
jespergravgaard
ffa75b1732 Expanded "used" logic of inine ASM to include procedure refs. 2019-08-10 18:27:05 +02:00
jespergravgaard
074826fb1f Playing a little with XMega helloworld. 2019-08-10 16:48:47 +02:00
jespergravgaard
7484e27a32 Working helloworld for XMega65 Xemu. 2019-08-10 15:41:32 +02:00
jespergravgaard
c82234db19 Fixed problem with for() continue. 2019-08-10 15:07:51 +02:00
jespergravgaard
da56d74339 Merged IcePic/master fragments. Thanks to Janne Johansson. #248 2019-08-10 14:41:46 +02:00
jespergravgaard
741f424116 Merged IcePic/master fragments. Thanks to Janne Johansson. #248 2019-08-10 14:41:30 +02:00
jespergravgaard
65bf7be4d7 Added support for export directive on data variables ensuring they are always included in the output ASM even if not used. Closes #252 2019-08-10 09:02:35 +02:00
jespergravgaard
7b155ee4b0 Added support for register keyword without parameter for compatibility. Closes #229 2019-08-10 08:39:42 +02:00
jespergravgaard
5755616588 Changed syntax slightly 2019-08-10 08:21:58 +02:00
jespergravgaard
e53159699b Implemented Xmega65 SYSCALLS. 2019-08-10 00:22:57 +02:00
jespergravgaard
4430974f25 Implemented Xmega65 SYSCALLS. 2019-08-10 00:17:55 +02:00
jespergravgaard
d70fbe4c34 Implemented Xmega65 SYSCALLS. 2019-08-10 00:16:33 +02:00
jespergravgaard
dbb6ce5933 Added support for #pragma code_seg() and #pragma data_seg(). #113 2019-08-09 22:38:33 +02:00
Jesper Gravgaard
6b0ef4408c Added test data. 2019-08-09 17:50:02 +02:00
Jesper Gravgaard
313d45fd03 Improved target platform handling. 2019-08-09 16:11:28 +02:00
jespergravgaard
8f0b9c886f Implemented initial KickAsm segment support. #113 2019-08-09 11:31:08 +02:00
jespergravgaard
d3081d3fe1 Renamed AsmSegment to AsmChunk in preparation for introduction of KickAsm segments. #113 2019-08-08 23:46:43 +02:00
Jesper Gravgaard
ab28c25528 Added #pragma syntax 2019-08-08 13:16:17 +02:00
jespergravgaard
db3e77d8fd Added NMI sample example. 2019-08-07 21:35:40 +02:00
jespergravgaard
7a49ded40c Now all instructions addressing zero-page have an explicit .z added to the ASM to ensure the ASM generated does zeropage-addressing. Closes #249 2019-08-07 21:00:21 +02:00
jespergravgaard
c78bebf2a8 Updated stdlib & tests with 0-terminated strings. 2019-08-07 19:48:56 +02:00
jespergravgaard
6c59110896 Fixed encoded string zero termination. Closes #192 2019-08-07 19:36:19 +02:00
Jesper Gravgaard
62b03bcefb Fixed encoding for literal chars through work-around. Closes #245 2019-08-07 14:58:57 +02:00
Jesper Gravgaard
ce5e3cf19a Added constant loop head optimization, that detects when the condition is constant in the first loop iteration. Closes #246 2019-08-07 13:22:05 +02:00
jespergravgaard
b2804ef335 Added a smaller sieve. 2019-08-07 11:35:15 +02:00
jespergravgaard
dacd25ac5f Added constant loop-head detection to a switchable optimization option -Oloophead. #246
Implemented for()-loop condition checking before body. Closes #183
2019-08-07 11:27:56 +02:00
jespergravgaard
c88932d423 Added constant loop-head detection to a switchable optimization option -Oloophead. #246
Implemented for()-loop condition checking before body. Closes #183
2019-08-07 11:09:29 +02:00
jespergravgaard
be4983cb13 Implemented for()-loop condition checking before body. #183
Moved constant loop-head detection to switchable optimization option.
2019-08-07 10:56:41 +02:00
jespergravgaard
0a58b03094 Constant loop head identification working. #246 is essentially complete. A few program grow to much from the optimization - this needs attention at some point. 2019-08-07 01:32:46 +02:00
jespergravgaard
e167f8dce8 Fixed almost all problems in constant loop head identification. A few program becomes infinite loops - needs fixing! A few also become way to long when rewritten - probably detect & rollback. 2019-08-06 01:10:57 +02:00
Jesper Gravgaard
c63b031dbe Implemented new Unroller that can copy a set of blocks in the control flow graph and handles block transitions according to a specified strategy. Moved loop-unroll implementation to the new Unroller. 2019-08-05 17:32:37 +02:00
jespergravgaard
3d0f0b648d Working on optimizing constant loop heads (Pass2LoopHeadConstantIdentification). #246 2019-08-04 01:50:00 +02:00
jespergravgaard
4807bbded7 Code generation now handles encoding in literal chars. Done 2/3 of #245 2019-08-04 00:13:33 +02:00
jespergravgaard
9e56b49a7e Added encoding information to literal chars. Working on 2/3 of #245 2019-08-03 14:08:48 +02:00
jespergravgaard
198280e1c8 Snapshotting program dynamic state now working through Serialization. Working on #246 2019-08-03 13:22:27 +02:00
jespergravgaard
764e0c1069 Added some basic loop tests. 2019-08-01 21:15:33 +02:00
jespergravgaard
a006e67f82 Upgraded to KickAss 5.8. Closes #243 2019-08-01 12:58:40 +02:00
jespergravgaard
129cad782b Fixed test 2019-08-01 11:03:19 +02:00
jespergravgaard
f8dfe3743b Implemented light-weight zeropage coalesce. Closes #237 2019-07-31 13:47:22 +02:00
jespergravgaard
869a2dcade Working on extracting zp coalesce logic. 2019-07-31 11:08:33 +02:00
jespergravgaard
2135bb1170 merged masters 2019-07-30 22:29:33 +02:00
jespergravgaard
78f89c927b Added joystick test 2019-07-30 22:28:19 +02:00
Jesper Gravgaard
73fb40a3e3 merged and fixed conflict 2019-07-30 15:01:43 +02:00
jespergravgaard
b27c69635b Working on light-weight coalesce #237 2019-07-29 23:50:42 +02:00
jespergravgaard
dc853bcffa Converted letter C to array of struct literal. 2019-07-28 23:11:41 +02:00
jespergravgaard
a50e9e212a Added support for literal arrays of structs by making the literal-identification and literal-handling and code-generation recursive over the value lists. Closes #223 2019-07-28 23:05:30 +02:00
jespergravgaard
44df048e64 Added support for address-of array-element &sieve[j]. Closes #228 2019-07-26 16:12:12 +02:00
jespergravgaard
07b08e3ed7 Renamed struct tests away from "problem-" name. Postponed struct member unwinding for non-variable members. 2019-07-26 14:54:10 +02:00
jespergravgaard
f336907efd Added test refs. 2019-07-26 14:31:37 +02:00
jespergravgaard
a30939e72c Finished fixes for uniwnding struct pointers/arrays. 2019-07-26 14:31:00 +02:00
jespergravgaard
66f6195739 Fixed problem with passing struct inside array as parameter. Closes #224 2019-07-26 13:22:18 +02:00
jespergravgaard
a1ef8ad163 Fixed problem with passing dereferenced struct pointers as parameters. Closes #225 2019-07-26 13:15:54 +02:00
jespergravgaard
0c33353bf8 Fixed problems with sizeof()-handling struct members. Closes #230 2019-07-25 23:06:09 +02:00
jespergravgaard
a9e0c7805f Added error when exhausting zeropage space for variables. Closes #233 2019-07-25 17:26:43 +02:00
jespergravgaard
e8a0694f34 Added support for different target platforms. Added first platforms c64basic and asm6502 (no upstart). Closes #232 2019-07-25 17:06:19 +02:00
jespergravgaard
424f5ce006 Added an extra test. 2019-07-25 14:55:10 +02:00
jespergravgaard
02ff354d3f Dropped SelfPhiEliminate pass - so now phi-variables have value for all predecessor-blocks. Added self-phi-handling to Identical-PHI optimization step instead. Closes #231 2019-07-25 14:35:43 +02:00
Jesper Gravgaard
9231fe18d6 Added splie test creating a (slowly) rotating truetype c. 2019-07-19 02:23:44 +02:00
Jesper Gravgaard
5a0b1a5d57 Added prime sieve test program 2019-07-18 09:47:41 +02:00
Jesper Gravgaard
660d2a8979 Changed print_cls() to use memset(). Fixed error in fragment. 2019-07-18 01:54:16 +02:00
Jesper Gravgaard
25f16b6b87 Added utoa() and ultoa() to print() 2019-07-18 00:45:46 +02:00
Jesper Gravgaard
9e66c01b6c Changed RADIX enum values. 2019-07-17 23:46:07 +02:00
Jesper Gravgaard
31ede3c794 Added utoa() implementation handling binary/octal/decimal & hexadecimal. 2019-07-17 23:38:09 +02:00
Jesper Gravgaard
aefa5c9f49 Added test example of sub-optimal ASM generated for sub-structs member access of a struct through a pointer. #226 2019-07-16 23:14:14 +02:00
Jesper Gravgaard
bef7663023 Optimized & minimized spline sample program. Added test demonstrating struct array initializer problem #223 2019-07-16 22:32:41 +02:00
Jesper Gravgaard
33b506902f Optimized & minimized spline sample program. Found a few TODO's regarding struct unwinding. 2019-07-16 22:03:16 +02:00
Jesper Gravgaard
eba674bd44 Added spline sample. Added many fragments. Fixed error in line where from&to are the same. Fixed cast to dword/sdword. Fixed unwinding of members that are themselves structs. Closes #222 2019-07-16 21:16:00 +02:00
Jesper Gravgaard
dd8ccaf186 Added spline test, a bunch of missing fragments and special ror/rol 8 handling. 2019-07-15 23:45:52 +02:00
Jesper Gravgaard
13509b59cb Added optimize option for using a fragment cache. Yields no significant performance benefit. 2019-07-15 09:47:47 +02:00
Jesper Gravgaard
d1333cdbe4 Added a few missing fragments. 2019-07-14 20:40:44 +02:00
jespergravgaard
9264967b3f fixed tests 2019-07-11 06:31:29 +02:00
jespergravgaard
57bbe42711 Fixed problem with small negative constant unsigned words. 2019-07-10 20:54:35 +02:00
jespergravgaard
fd63efafe2 Added a bresenham line routine to singlecolor bitmap bitmap2.kc 2019-07-10 18:43:42 +02:00
jespergravgaard
62d7ecbeff Moved back to malloc() based impl. 2019-07-10 12:07:06 +02:00
jespergravgaard
7a36932c48 Finished bucket-based spiral 2019-07-09 18:13:05 +02:00
jespergravgaard
bafffa14f2 fixed tests 2019-07-09 17:33:20 +02:00
jespergravgaard
91a428d22b Updated to 256 buckets & parametrized screen. 2019-07-09 16:05:55 +02:00
jespergravgaard
bf0d399b2c Working on buckets 2019-07-09 15:03:02 +02:00
jespergravgaard
80e84f3234 Added fragments. Implemented working buckets. 2019-07-09 14:41:29 +02:00
jespergravgaard
a7ac33a653 Changed HEAP to grow down from $a000. Fixed inner increment problem. Closes #216 2019-07-09 11:40:56 +02:00
jespergravgaard
b5222c7929 Fixed tests. 2019-07-09 00:51:54 +02:00
jespergravgaard
f8b4dde791 Added fragments - fixed object equality problem when incrementing complex expressions of non-byte type. 2019-07-09 00:31:44 +02:00
jespergravgaard
0e59591d6c Improved output from -Sc option adding C-code comments to the ASM. 2019-07-08 16:43:10 +02:00
jespergravgaard
bf60fab6d0 Removed segment ID from default log. 2019-07-08 12:04:44 +02:00
jespergravgaard
b053acf39b Fixed fragment tests 2019-07-07 00:39:34 +02:00
jespergravgaard
1d092962b3 Added center-based plasma, some fragments and some synth rules. 2019-07-07 00:17:00 +02:00