1
0
mirror of https://github.com/KarolS/millfork.git synced 2024-10-07 16:54:46 +00:00
Commit Graph

84 Commits

Author SHA1 Message Date
Karol Stasiak
0f453e2d2c Start of the Z80 backend 2018-06-17 02:01:35 +02:00
Karol Stasiak
5281b5f527 Refactoring for the upcoming Z80 support 2018-06-12 22:46:20 +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
0919a98e4b Fix for i,const,downto,0 loops 2018-06-04 09:44:54 +02:00
Karol Stasiak
b6e61f16ec Optimizations of adding one 2018-06-01 09:51:59 +02:00
Karol Stasiak
2f1faa12c2 A 24-bit integer type 2018-05-14 02:16:46 +02:00
Karol Stasiak
76a30acf9a Preliminary BBC Micro support 2018-04-02 23:40:40 +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
1fcbf9fd5b More uses for the DCP instruction 2018-03-28 18:56:11 +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
e32887b6b7 Added array initialization syntax with for 2018-03-25 23:14:16 +02:00
Karol Stasiak
9ff888c0d9 Fixed zero-extending for bytes; improved adding bytes to constant words 2018-03-18 23:54:02 +01:00
Karol Stasiak
986252db5b Added some more optimizations 2018-03-18 23:52:40 +01:00
Karol Stasiak
fa34402749 Segment syntax test 2018-03-17 13:49:37 +01:00
Karol Stasiak
e0c3a566b7 Long comparisons; word vs unsigned byte comparison optimization 2018-03-16 13:19:54 +01:00
Karol Stasiak
516d7eae26 Removal of the <<<< operator; nonet operation improvements
Use `nonet(a << b)` instead of `a <<<< b`
2018-03-16 00:34:24 +01:00
Karol Stasiak
8a347e5058 Preliminary segment support; C16/+4 fixes 2018-03-15 23:09:19 +01:00
Karol Stasiak
9e8a125487 Various optimization improvements and bugfixes 2018-03-14 18:50:58 +01:00
Karol Stasiak
38f3923d4d Shifting by variable amount 2018-03-11 23:02:34 +01:00
Karol Stasiak
89b23ee425 Expanding macros from within assembly 2018-03-10 21:52:28 +01:00
Karol Stasiak
739461bfa9 Word addition and bit ops; better handling of side effects 2018-03-10 21:48:04 +01:00
Karol Stasiak
59cf1e06b4 nonet() operator 2018-03-10 00:08:13 +01:00
Karol Stasiak
807a9df8ac Fixed org option 2018-03-09 00:07:05 +01:00
Karol Stasiak
1d865302ca Indexing fixes; 16-bit indexing 2018-03-07 12:36:21 +01:00
Karol Stasiak
11337f4975 Optimizing predictable reads from local variables 2018-03-06 23:43:09 +01:00
Karol Stasiak
af812fe348 else if 2018-03-06 16:46:50 +01:00
Karol Stasiak
791f910cc4 Optimize away impossible odd/even equalities 2018-03-06 16:44:57 +01:00
Karol Stasiak
05e147b880 Removal of detailed flow analysis; it was slow and not worth it 2018-03-05 12:41:43 +01:00
Karol Stasiak
15dbaad6d1 Use zero page locations as as pseudo-registers; 8-bit multiplication and 16-bit shifts 2018-03-05 12:05:37 +01:00
Karol Stasiak
50ddd52786 Added break and continue statements 2018-03-03 21:34:12 +01:00
Karol Stasiak
6ed5d51260 Preliminary support for 65816, 65CE02 and HuC6280 2018-03-03 01:21:57 +01:00
Karol Stasiak
50b93db337 Constant pointer optimization 2018-03-01 15:57:54 +01:00
Karol Stasiak
3dc526bcb7 hi()/lo() builtins; identity table for using index registers as operands 2018-02-28 01:13:05 +01:00
Karol Stasiak
f9835ebf7e Removed invalid optimization, added bit shifting optimization 2018-02-27 12:01:53 +01:00
Karol Stasiak
ee18fecedf Optimize variables only written once 2018-02-27 01:20:42 +01:00
Karol Stasiak
7b480ea876 Even more optimizations 2018-02-26 01:07:23 +01:00
Karol Stasiak
7cd13332a3 More optimizations using illegal opcodes 2018-02-25 00:46:21 +01:00
Karol Stasiak
fa56d31cb4 Fixes for pointee incrementing and decimal addition 2018-02-25 00:45:25 +01:00
Karol Stasiak
d6f38ba87b More optimizations 2018-02-14 22:50:34 +01:00
Karol Stasiak
54e7139e84 Refactoring 2018-02-11 18:55:21 +01:00
Karol Stasiak
2665f18c77 Macro expansion fix, improved constant folding 2018-02-03 17:49:29 +01:00
Karol Stasiak
0ca1be0c00 Tons of things:
– changed `inline` to `macro`
– added support for parameters for macros written in Millfork
– added `inline`, `noinline`, `register` hints
– added <<<< operator
– pointer dereference expressions are now supported more widely
– C64 library fixes
– added `-O1` command line option as an alias for `-O`
2018-02-01 22:39:38 +01:00
Karol Stasiak
c599db0068 Inline assembly improvements 2018-02-01 00:22:53 +01:00
Karol Stasiak
9410b8f9e3 Interrupt handler optimization 2018-01-31 22:27:11 +01:00
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