Karol Stasiak
341466b198
Decimal multiplication, decimal right shift fixes
2018-01-31 22:26:20 +01:00
Karol Stasiak
c26d36f974
Added return dispatch statements.
2018-01-30 17:38:32 +01:00
Karol Stasiak
ac51bcaf6c
Optimizing pointless sign extensions
2018-01-30 17:37:37 +01:00
Karol Stasiak
49d126ffa0
RLE decoding test
2018-01-29 12:08:44 +01:00
Karol Stasiak
7bbf655e6f
Optimization bugfixes
2018-01-29 12:08:21 +01:00
Karol Stasiak
17920cee26
Zeropage variable optimizations
2018-01-29 11:55:15 +01:00
Karol Stasiak
c5d4665c92
Inlining variables into accumulator; flag behaviour preservation when inlining variables
2018-01-21 21:54:37 +01:00
Karol Stasiak
7c4570766a
More loop-related optimizations
2018-01-21 21:06:28 +01:00
Karol Stasiak
5d6be83499
Fix tests running in headless JVMs
2018-01-20 22:43:12 +01:00
Karol Stasiak
4e80236a65
For-to loop fixes
2018-01-20 22:32:57 +01:00
Karol Stasiak
430051635d
Tail-call optimization shouldn't move discard pseudoinstructions
2018-01-20 22:03:19 +01:00
Karol Stasiak
7e04312462
More optimizations
2018-01-20 20:00:51 +01:00
Karol Stasiak
91acbfae2f
Using short jumps whenever possible
2018-01-20 18:51:49 +01:00
Karol Stasiak
8d818f7624
Early name check improvements
2018-01-20 02:12:12 +01:00
Karol Stasiak
ba9e1b6475
Type casting
2018-01-20 01:54:10 +01:00
Karol Stasiak
013bcd63f1
Early name check improvements
2018-01-20 01:53:58 +01:00
Karol Stasiak
372d341763
Replacing Ml* with Mf* everywhere
2018-01-20 01:32:06 +01:00
Karol Stasiak
c520bbb698
Comparison improvements
2018-01-20 01:30:46 +01:00
Karol Stasiak
c5e01d5117
A variable with fixed address shouldn't have an initial value
2018-01-20 01:30:28 +01:00
Karol Stasiak
0b334ba570
Index register changing optimization improvement
2018-01-20 01:30:06 +01:00
Karol Stasiak
cb5f025ea9
Early name check
2018-01-20 00:57:37 +01:00
Karol Stasiak
f8f1af287f
Tracing index register changes during superoptimization
2018-01-19 00:12:28 +01:00
Karol Stasiak
57e11c8741
Fixing Loading branches optimization
2018-01-19 00:11:55 +01:00
Karol Stasiak
4c0d184c47
Constant evaluation fixes
2018-01-18 22:38:17 +01:00
Karol Stasiak
64f72c8a1c
Optimization fixes (inlining to registers, function inlining, bit operations, DCP opcode)
2018-01-18 22:37:57 +01:00
Karol Stasiak
d696704af9
More bit-packing and transfer optimizations
2018-01-08 12:00:46 +01:00
Karol Stasiak
4676b0d48e
Variable to register optimization fixes
2018-01-08 12:00:05 +01:00
Karol Stasiak
33716f3881
Runtime bounds checking
2018-01-08 01:18:14 +01:00
Karol Stasiak
502faa3694
panic()
2018-01-08 01:17:48 +01:00
Karol Stasiak
309f12cf82
Don't optimize away PLP
2018-01-08 01:04:04 +01:00
Karol Stasiak
14a5a58134
Generate warnings on some too complex separate bytes expressions
2018-01-08 01:03:08 +01:00
Karol Stasiak
0c66dac3ae
Optimizations for bit packing and common subexpressions
2018-01-07 23:32:10 +01:00
Karol Stasiak
9ea3823bfd
Compilation fixes
...
Separated bytes compilation fixes (although only preliminary, it's still a pretty broken feature)
Better compilation of complex expressions (don't spill to the stack so often)
2018-01-07 23:30:43 +01:00
Karol Stasiak
2bc27fba75
Separated bytes parsing fix and "for" statement parsing fix
2018-01-07 23:28:26 +01:00
Karol Stasiak
8b086f6c2f
More optimisations
2018-01-06 00:21:28 +01:00
Karol Stasiak
92999ec490
Better allocator
2018-01-04 22:58:00 +01:00
Karol Stasiak
76122a2dd7
Some more documentation
2018-01-04 01:15:04 +01:00
Karol Stasiak
1f020e2ced
An instruction used for its opcode should not be elidable
2018-01-04 01:08:47 +01:00
Karol Stasiak
504cb56ee7
Multiple arguments for some relative operators
2018-01-01 22:37:23 +01:00
Karol Stasiak
3e0d1d4978
References to variables in assembly should always refer to their addresses
2018-01-01 22:13:05 +01:00
Karol Stasiak
566631fc5e
Decimal shifts
2017-12-27 22:26:30 +01:00
Karol Stasiak
9193a4f035
String literal improvements
2017-12-27 22:26:13 +01:00
Karol Stasiak
138ff8b82d
Reserve flow analyser shouldn't mark parameters passed in registers as unimportant
2017-12-27 22:25:39 +01:00
Karol Stasiak
a7372ec7ca
Inline multiple variables into index registers, taking into account their lifetimes
2017-12-24 00:09:52 +01:00
Karol Stasiak
917210b4cf
Explicitly addressed variables should have "*.addr"
2017-12-24 00:09:22 +01:00
Karol Stasiak
c57c0c2fdb
Support for comparing on-stack words + zeropage optimizations
2017-12-24 00:08:49 +01:00
Karol Stasiak
2945cd0003
Important optimization bugfixes + empty memory store removal
2017-12-24 00:07:53 +01:00
Karol Stasiak
e28ff16717
More optimizations, including optimizations with jump counting
2017-12-20 12:00:24 +01:00
Karol Stasiak
f5f4c033f3
Test benchmark tweak
2017-12-20 09:54:51 +01:00
Karol Stasiak
d9e0ad168a
Don't emit labels for inlined functions
2017-12-20 09:54:32 +01:00