Karol Stasiak
86ce4c75ad
Take into account that the sole byte parameter is passed via the accumulator in more locations
2018-06-23 23:47:18 +02:00
Karol Stasiak
456c674a0c
Track equality of S and X. Add relevant optimizations.
2018-06-23 23:24:32 +02:00
Karol Stasiak
bc21e5befc
If a function has one small parameter, pass it via the accumulator
2018-06-23 23:14:53 +02:00
Karol Stasiak
816bfb5f06
Optimization improvements:
...
– better zeropage register flow tracking
– reverse flow analysis speed improvement
– optimize TXA/TAX after LAX
– don't stash A onto stack over externally linear code blocks
2018-06-19 14:23:24 +02:00
Karol Stasiak
992ea7090e
Comparison fixes and improvements
2018-06-19 00:08:04 +02:00
Karol Stasiak
13b06bd505
Fix zeropage allocation
2018-06-18 22:40:14 +02:00
Karol Stasiak
9b7d58cf65
Optimizing addition by replacing it with bit ops (NMOS) or increments (CMOS)
2018-06-18 19:48:47 +02:00
Karol Stasiak
7510b44412
Optimization improvements:
...
– reloading from zeropage is faster than stashing the result into another register
– more jumping optimizations
2018-06-18 19:12:36 +02:00
Karol Stasiak
daf8461c07
Allocating arbitrary variables in the zeropage and using zeropage addressing when appropriate
2018-06-18 17:59:47 +02:00
Karol Stasiak
ca14e417dd
Loop compilation/optimization fixes/improvements
2018-06-18 17:54:45 +02:00
Karol Stasiak
24a3943501
Array filters (@word, @word_be)
2018-06-18 02:52:14 +02:00
Karol Stasiak
0f453e2d2c
Start of the Z80 backend
2018-06-17 02:01:35 +02:00
Karol Stasiak
780bfa3428
Fix for i,$FF,downto,0
2018-06-12 23:35:26 +02:00
Karol Stasiak
5ee550af3b
Fix double load optimization
2018-06-12 23:34:41 +02:00
Karol Stasiak
7fc8678eec
Better logging when shortening jumps
2018-06-12 23:34:16 +02:00
Karol Stasiak
5281b5f527
Refactoring for the upcoming Z80 support
2018-06-12 22:46:20 +02:00
Karol Stasiak
70818cc3d2
Fixing invalid short jumps
2018-06-11 00:04:24 +02:00
Karol Stasiak
a16f662031
Optimization fixes
2018-06-10 23:44:45 +02:00
Karol Stasiak
278cbcec63
Fixed return dispatch returns on LUnix. Added non-relocated address constants.
2018-06-10 01:56:04 +02:00
Karol Stasiak
8a417768b8
Removed a really invalid optimization
2018-06-10 01:48:42 +02:00
Karol Stasiak
8931ced6fc
Preliminary LUnix support
2018-06-09 00:18:21 +02:00
Karol Stasiak
5dc1bba8ed
Multiple improvements:
...
- fixed some invalid LDX(zp),Y instructions
- better error reporting
- removing unused extern functions
- a new testcase
2018-06-09 00:08:17 +02:00
Karol Stasiak
10860f6c5f
Fixed flag checks during optimisation
2018-06-04 16:49:45 +02:00
Karol Stasiak
c71af26989
Documentation updates
2018-06-04 16:24:18 +02:00
Karol Stasiak
0919a98e4b
Fix for i,const,downto,0 loops
2018-06-04 09:44:54 +02:00
Karol Stasiak
0c50c4562a
Optimize more pointless loads from the same memory/register
2018-06-04 09:44:24 +02:00
Karol Stasiak
beef56cdab
Fillout the call graph for variable overlap calculations
2018-06-04 09:43:51 +02:00
Karol Stasiak
b6e61f16ec
Optimizations of adding one
2018-06-01 09:51:59 +02:00
Karol Stasiak
1d468e1313
Index changing optimization fix
2018-06-01 09:51:30 +02:00
Karol Stasiak
a671ac1d06
Optimization improvements and fixes
2018-05-14 02:20:36 +02:00
Karol Stasiak
fae7bb31c9
Flow analysis fixes
2018-05-14 02:19:39 +02:00
Karol Stasiak
8cc3399239
Comparison fix
2018-05-14 02:18:46 +02:00
Karol Stasiak
28e53272b9
Removal of pointless constant type; variable-to-register inlining fix
2018-05-14 02:18:33 +02:00
Karol Stasiak
2f1faa12c2
A 24-bit integer type
2018-05-14 02:16:46 +02:00
Karol Stasiak
60b9378554
More aggressive constant simplification
2018-04-15 02:21:51 +02:00
Karol Stasiak
a2171aeef0
Trace output fix
2018-04-15 02:21:28 +02:00
Karol Stasiak
58f85bb46e
Optimization improvements
2018-04-15 02:07:44 +02:00
Karol Stasiak
cdfbbf61b8
Fixed allocating allocating local variables twice
2018-04-15 01:29:47 +02:00
Karol Stasiak
76a30acf9a
Preliminary BBC Micro support
2018-04-02 23:40:40 +02:00
Karol Stasiak
146e598636
Optimizing CMP/CPX/CPY/CPZ #0
2018-04-02 21:57:53 +02:00
Karol Stasiak
0ddf2f31c8
Inserting raw byte sequences in assembly
2018-04-02 21:40:54 +02:00
Karol Stasiak
d6995091cf
Character literals
2018-04-02 21:06:18 +02:00
Karol Stasiak
95375378ed
More text codecs
2018-04-02 19:47:11 +02:00
Karol Stasiak
1fcbf9fd5b
More uses for the DCP instruction
2018-03-28 18:56:11 +02:00
Karol Stasiak
343d339da3
Don't remove loads that are required for flags
2018-03-28 18:55:49 +02:00
Karol Stasiak
d785d43ae7
Many optimization improvements and bugfixes
...
- fixed VariableToRegisterOptimization removing variables during superoptimization
- fixed PointlessMathFromFlow giving results that do not fit a byte
- fixed PointlessLoadBeforeReturn moving reads from before to after memory modification
- achieved and exceeded CC65 performance when doing 16-bit Eratosthenes sieve
2018-03-28 12:37:38 +02:00
Karol Stasiak
cb3d848d0a
Prevent all functions with return dispatch from being inlined
2018-03-27 00:38:40 +02:00
Karol Stasiak
0231e4c4fd
Added ATASCII text codec
2018-03-26 00:01:29 +02:00
Karol Stasiak
e32887b6b7
Added array initialization syntax with for
2018-03-25 23:14:16 +02:00
Karol Stasiak
08544159d4
Don't emit branching instructions with broken offsets
2018-03-25 16:18:19 +02:00