1
0
mirror of https://github.com/KarolS/millfork.git synced 2024-07-02 18:29:50 +00:00
Commit Graph

576 Commits

Author SHA1 Message Date
Karol Stasiak
dfd9dd4c6a Don't remove things referred to only by aliases 2018-12-17 17:03:01 +01:00
Karol Stasiak
235700c44c Multiline value support in platform definition files 2018-12-17 10:41:28 +01:00
Karol Stasiak
8fcf628c8f Better tracking of the original source 2018-12-17 00:35:32 +01:00
Karol Stasiak
4fb786522d Fixed not compiling code 2018-12-16 22:59:58 +01:00
Karol Stasiak
acf9db80d3 Reenable mistakenly disabled tests 2018-12-16 22:56:02 +01:00
Karol Stasiak
eb29e78f56 More warnings 2018-12-16 21:07:27 +01:00
Karol Stasiak
78afe3d5f5 Preliminary support for volatile variables 2018-12-16 21:07:04 +01:00
Karol Stasiak
5a99dc7293 65816: various improvements 2018-12-16 19:34:33 +01:00
Karol Stasiak
cd8697552c Add sizeof operator 2018-12-16 15:43:17 +01:00
Karol Stasiak
badd7ef1d8 Compiler performance improvements 2018-12-16 14:38:57 +01:00
Karol Stasiak
0e5d79f222 6502 Minor comparison optimisation 2018-12-15 00:01:34 +01:00
Karol Stasiak
4f8e4838e8 6502: Fix comparison optimization 2018-12-15 00:01:12 +01:00
Karol Stasiak
f32d72b51f Multiplication u16×u8 2018-12-14 22:50:20 +01:00
Karol Stasiak
a73e1eae1e Preprocesor should use current options 2018-12-14 22:49:26 +01:00
Karol Stasiak
65f5c552b4 6502: optimization improvements 2018-12-14 22:09:22 +01:00
Karol Stasiak
c28b71add5 6502: Stack-related things:
– software variable stack
– fixes for handling stack variables
2018-12-14 22:01:52 +01:00
Karol Stasiak
db1ce07ed6 8080: Fix comparisons 2018-12-14 21:07:14 +01:00
Karol Stasiak
eb6b7d7769 Fix and improve nonet operations 2018-12-14 15:43:12 +01:00
Karol Stasiak
406d69c74a Add original line numbers to generated assembly 2018-12-14 15:42:31 +01:00
Karol Stasiak
a985c4f753 More various optimization fixes and improvements 2018-12-14 00:10:30 +01:00
Karol Stasiak
dbe8e39e4a various optimization fixes and improvements 2018-12-13 23:18:56 +01:00
Karol Stasiak
c1ce4a9283 8080: fixed shifting by 0 2018-12-13 23:12:46 +01:00
Karol Stasiak
bdd41350a7 6502: Optimize constant comparisons 2018-10-12 00:13:49 +02:00
Karol Stasiak
ab267c88ac Assume tabs are 4 spaces 2018-10-12 00:01:48 +02:00
Karol Stasiak
6b33cc49a8 Fix bad code deduplication 2018-10-12 00:01:19 +02:00
Karol Stasiak
30c979cc39 Fix badly handled stack overflow 2018-10-12 00:00:41 +02:00
Karol Stasiak
df71435c78 Fix for...downto loops 2018-10-11 23:59:50 +02:00
Karol Stasiak
6b43f73f57 Don't deduplicate non-elidable code 2018-10-04 23:23:04 +02:00
Karol Stasiak
ed38b00031 8080: Faster strlen; more multiplication optimizations 2018-10-04 23:22:26 +02:00
Karol Stasiak
fe1bf68295 Add align keyword 2018-10-04 21:34:53 +02:00
Karol Stasiak
3736b5ae56 6502: Use zeropage addressing mode when accessing fixed zeropage locations 2018-09-29 01:16:22 +02:00
Karol Stasiak
cbe6d03e60 8080: Optimized multiplication 2018-09-28 23:45:26 +02:00
Karol Stasiak
f37696df5a Added #infoeval preprocessor directive 2018-09-28 22:49:28 +02:00
Karol Stasiak
c9c3ebc8a4 6502: Fix shifting 2018-09-28 22:39:16 +02:00
Karol Stasiak
b41f9bebc1 6502: Shifting improvements and fixes 2018-08-16 22:03:27 +02:00
Karol Stasiak
74dbca1f53 Fix typo in test 2018-08-16 22:01:45 +02:00
Karol Stasiak
462041e8f4 Don't align the main function 2018-08-09 12:42:29 +02:00
Karol Stasiak
376c3283b8 Improvements to trigonometric functions 2018-08-08 23:52:47 +02:00
Karol Stasiak
466f6e4fea Z80: Various optimizations, mostly from z80heaven 2018-08-08 23:52:32 +02:00
Karol Stasiak
34b7107d27 Allow casting to wider types 2018-08-08 23:14:09 +02:00
Karol Stasiak
9581891d66 Following jumps. Generating conditional returns/calls. 2018-08-08 23:12:20 +02:00
Karol Stasiak
2d0f3a5a12 Fix tests 2018-08-08 18:48:11 +02:00
Karol Stasiak
0cb91c0f68 Z80: Better inlining of variables into register pairs 2018-08-08 17:52:08 +02:00
Karol Stasiak
019547aae8 Z80: Faster array indexing 2018-08-08 17:50:27 +02:00
Karol Stasiak
8b09941cef Z80: Jump shortening 2018-08-08 13:45:38 +02:00
Karol Stasiak
5c65af17d4 Z80: More optimizations 2018-08-08 13:45:26 +02:00
Karol Stasiak
fc3ace20c4 Fix subbyte constants in Intel syntax 2018-08-08 13:45:02 +02:00
Karol Stasiak
2b279ac5e8 Give the preprocessor access to compilation options 2018-08-08 13:44:30 +02:00
Karol Stasiak
2af8304512 Deduplicate more complex code. Better deduplication. 2018-08-08 01:53:47 +02:00
Karol Stasiak
b01c440cf0 6502: Improve memset 2018-08-08 01:38:49 +02:00
Karol Stasiak
46ce602a3e Allow for function alignment 2018-08-07 23:55:08 +02:00
Karol Stasiak
46df8a6f21 6502: Check if memset is over actual pointers 2018-08-07 22:15:50 +02:00
Karol Stasiak
02d6b5b71c 6502: Crank up the optimizations 2018-08-07 21:37:25 +02:00
Karol Stasiak
8dd8415432 6502: Track values of zeropage registers 2018-08-07 21:36:53 +02:00
Karol Stasiak
64744f7559 Fix initialized array allocation 2018-08-07 19:50:02 +02:00
Karol Stasiak
8dfb223a8c Fast memset for Z80 and 6502 2018-08-07 17:37:09 +02:00
Karol Stasiak
7750c4ec45 Optimize constants of form (B+A)-B 2018-08-07 17:36:14 +02:00
Karol Stasiak
f937355c54 6502: Fix word addition if zpreg is larger than 2 2018-08-07 17:35:40 +02:00
Karol Stasiak
3e7bbaf5fc Z80: optimize loads to registers pairs 2018-08-07 17:35:02 +02:00
Karol Stasiak
a8f6bc4c0e Z80: Correctly analyze flow through LDIR and LDDR 2018-08-07 17:34:31 +02:00
Karol Stasiak
c846a19eef Preliminary support for object alignment 2018-08-07 17:32:20 +02:00
Karol Stasiak
60d2cc1959 Actually enable code decuplication 2018-08-07 17:28:59 +02:00
Karol Stasiak
ff16854a11 Code deduplication 2018-08-06 19:29:09 +02:00
Karol Stasiak
f045f7f4c2 Z80: Analyze flow through RES and SET correctly 2018-08-06 19:20:07 +02:00
Karol Stasiak
86ce1d42f3 6502: More optimizations. 2018-08-06 19:19:13 +02:00
Karol Stasiak
87c5d698bc 6502: Don't optimize away things like a[f()]^=0 2018-08-06 19:17:57 +02:00
Karol Stasiak
a2eb6fe353 Z80: fix subtraction. 2018-08-06 19:17:08 +02:00
Karol Stasiak
7cf78ca2bd Use one statement preprocessor per function. 2018-08-06 19:16:42 +02:00
Karol Stasiak
bf47473162 Allow setting the size of the zeropage register from the command line. 2018-08-06 19:15:41 +02:00
Karol Stasiak
48b183828b Z80: LDH instruction for LR35902 2018-08-03 16:43:31 +02:00
Karol Stasiak
f4a2c96512 Fix comparisons 2018-08-03 16:21:02 +02:00
Karol Stasiak
fab1cafec3 Z80: Intel syntax support 2018-08-03 13:23:37 +02:00
Karol Stasiak
e393a3de9c Z80: More optimizations 2018-08-03 13:21:04 +02:00
Karol Stasiak
388ceb8b3a 6502: software BCD, increase default zpreg to 4 2018-08-03 13:06:23 +02:00
Karol Stasiak
30aa62ceaf Z80: Fix 16-bit operations 2018-08-03 13:02:18 +02:00
Karol Stasiak
779cc6ab5c Extract asDecimal. Improve constants. 2018-08-03 12:59:44 +02:00
Karol Stasiak
0a01dd30e1 6502: Fix zeropage register if larger than 2 bytes 2018-08-03 11:11:03 +02:00
Karol Stasiak
e952d89849 Z80: Intel syntax for output. 2018-08-01 21:16:20 +02:00
Karol Stasiak
d4beba11a1 Z80: >>' operator 2018-08-01 18:49:37 +02:00
Karol Stasiak
9b5b39181a Z80: Decimal subtraction on 8080, fixes for adding longs returned from functions 2018-08-01 15:33:07 +02:00
Karol Stasiak
6b02c5178a Z80: More arithmetic optimizations 2018-08-01 15:32:11 +02:00
Karol Stasiak
0326c7a73b Z80: Fix stack-related optimizations 2018-08-01 15:31:42 +02:00
Karol Stasiak
bc1dc0e500 6502: allow functions with large return values on the right hand side of modifying operators 2018-08-01 15:28:47 +02:00
Karol Stasiak
69f233e378 Z80: Interrupt handlers. Allow using IY as base pointer. 2018-08-01 12:50:05 +02:00
Karol Stasiak
99df25bde2 Fix macro expansion 2018-08-01 12:43:17 +02:00
Karol Stasiak
ffbed1ba26 Allow processed/formatted array contents inside other array literals 2018-08-01 10:34:49 +02:00
Karol Stasiak
bebb8c45a5 Z80: More optimizations 2018-08-01 10:22:34 +02:00
Karol Stasiak
e914ad6d7b Move label generation into a separate class 2018-07-31 18:16:36 +02:00
Karol Stasiak
2046f94b55 Z80: Compile 8-bit values directly into registers other than A 2018-07-31 01:00:17 +02:00
Karol Stasiak
7e6f2dd4ea Z80: CALL <number> shouldn't prevent inlining 2018-07-31 00:59:24 +02:00
Karol Stasiak
53f550d266 Z80: Fix line size calculations 2018-07-31 00:52:01 +02:00
Karol Stasiak
2bac42c187 Optimizations for LR35902 and 8080 2018-07-30 23:51:41 +02:00
Karol Stasiak
6d7643b817 6502: Better descriptions of benchmarked tests 2018-07-30 23:50:44 +02:00
Karol Stasiak
453ce93952 Z80: RLA and RL A are two very different instructions 2018-07-30 23:49:25 +02:00
Karol Stasiak
2ef79d6894 Minor improvements for Intel 8080 and ZX Spectrum 2018-07-30 18:55:20 +02:00
Karol Stasiak
998902acf6 Refactor: error logging 2018-07-30 18:53:08 +02:00
Karol Stasiak
cb92b09942 Improvements related to large types:
– returning types larger than 2
– fastcall for 1 parameter of size 3 or 4 on Z80
– more integer types (up to int128)
– marked farword as a deprecated alias of int24
2018-07-30 14:33:16 +02:00
Karol Stasiak
070ae395ee Text literals in expressions, escape sequences, and more 2018-07-28 00:58:20 +02:00
Karol Stasiak
514e819ddf Fix several things:
– statement preprocessor
– unused label removal
– >>>> operator on 6502
– constant byte comparison on 6502
2018-07-28 00:56:25 +02:00
Karol Stasiak
67f3034afb Enable 8080 and LR35902 for users 2018-07-27 19:12:54 +02:00
Karol Stasiak
3c019b06c1 Tests for LR35902 2018-07-27 19:12:28 +02:00
Karol Stasiak
5c25e653bf Many things:
– better support for LR35902
– stack variables for 8080 and LR35902
– bugfixes
– minor optimizations
2018-07-27 19:11:59 +02:00
Karol Stasiak
600e49cf49 Make some tests work on LR35902 2018-07-27 19:10:15 +02:00
Karol Stasiak
1948c38e04 Separate optimization presets for Z80, LR35902 and 8080 2018-07-27 19:09:38 +02:00
Karol Stasiak
b7f173fb71 Don't print debug stuff 2018-07-27 19:07:50 +02:00
Karol Stasiak
7ea2fe6a4e Almost full LR35902 opcode space coverage 2018-07-27 19:07:12 +02:00
Karol Stasiak
2ca30315ca Preparations for work on LR35902 support 2018-07-24 23:44:00 +02:00
Karol Stasiak
c5b45947dc Preliminary support for Intel 8080 2018-07-24 23:14:41 +02:00
Karol Stasiak
749defd05a Decimal subtraction fixes 2018-07-24 23:14:09 +02:00
Karol Stasiak
1e822239d0 Z80: Fix SET n,(IX+d) and related instructions 2018-07-24 20:45:30 +02:00
Karol Stasiak
b724ba9c6a Z80: Full assembly support 2018-07-24 17:40:06 +02:00
Karol Stasiak
80efa95ba7 6502: Various optimization fixes and improvements 2018-07-24 16:17:27 +02:00
Karol Stasiak
e280aca08b Z80: Emit RES and SET instructions 2018-07-24 16:16:49 +02:00
Karol Stasiak
43c044c80c Z80: Various optimizations for stack variables 2018-07-24 14:31:23 +02:00
Karol Stasiak
9bcaffaa30 Z80: Faster calling convention 2018-07-24 01:43:59 +02:00
Karol Stasiak
c9cbd267c5 6502: Fix stack variables in more complex situations 2018-07-24 01:38:10 +02:00
Karol Stasiak
4be1e46308 6502: Faster page-aligned loops 2018-07-23 16:20:49 +02:00
Karol Stasiak
a34acbf6ce Z80: Operators *'=, <<' and <<'= 2018-07-23 15:47:03 +02:00
Karol Stasiak
85243c96a7 Z80: The >>>> operator 2018-07-23 13:49:59 +02:00
Karol Stasiak
a39064cf76 Z80: Return dispatch 2018-07-23 13:41:51 +02:00
Karol Stasiak
a7e1a24be6 Show filename and context for compile errors 2018-07-23 13:11:53 +02:00
Karol Stasiak
8c1492b211 A statement preprocessor with some basic node-level optimizations 2018-07-21 23:59:16 +02:00
Karol Stasiak
07c049c168 6502: Fix the optimization of inlining a variable to the accumulator 2018-07-21 23:53:30 +02:00
Karol Stasiak
c4c1bf00f2 Enumeration types. Stricter type checks. 2018-07-20 22:46:53 +02:00
Karol Stasiak
ff93775cbe Z80: Inline byte variables into registers 2018-07-17 21:08:56 +02:00
Karol Stasiak
55e9fd5174 Z80: Optimization improvements and fixes 2018-07-17 13:08:58 +02:00
Karol Stasiak
80aef5c412 Z80: detect read/changed registers more accurately 2018-07-17 13:08:25 +02:00
Karol Stasiak
190b398711 Z80: Faster +=2 and similar 2018-07-17 13:07:47 +02:00
Karol Stasiak
5f14484503 More Z80 optimizations. Finally almost as fast as C. 2018-07-16 23:10:55 +02:00
Karol Stasiak
21b086046c Always require a full optimization context when optimizing 2018-07-16 23:09:55 +02:00
Karol Stasiak
f4ecc2512c Refactoring the inlining calculators 2018-07-16 23:05:16 +02:00
Karol Stasiak
28e11873dc Add empty parameter store removal optimization 2018-07-16 23:03:52 +02:00
Karol Stasiak
ab57090790 Improve optimization in tests for 6502 2018-07-16 23:03:12 +02:00
Karol Stasiak
5a8fe547bf Fix macros and few other things when compiling for Z80 2018-07-16 23:02:34 +02:00
Karol Stasiak
39dfe13a3f Emit LD (m),BC and similar instructions 2018-07-16 23:01:04 +02:00
Karol Stasiak
704ae17d30 Fix environment namecheck for Z80 2018-07-16 23:00:26 +02:00
Karol Stasiak
caec1bdc1b Improvements for constants 2018-07-16 23:00:05 +02:00
Karol Stasiak
0efd9ada3e Few optimization improvements for 6502 2018-07-16 22:59:08 +02:00
Karol Stasiak
b2fa129482 Improve tracking of changed and read registers on Z80 2018-07-16 22:57:20 +02:00
Karol Stasiak
2c0256c1c1 Tons of Z80 improvements:
– long assignments
– word and long comparisons
– byte multiplication
– correct sign extension
– fixed flow analysis for LD A,(IX,0) and similar
– unused variable store elimination
– unused code elimination
– unused label elimination
– poinless stack stashing elimination
– function inlining
– other flow analysis improvements
– other bugfixes
– other stuff
– more tests
2018-07-16 00:13:35 +02:00
Karol Stasiak
ca4ae4ce2e Fix optimization of ADC on 6502 2018-07-16 00:07:22 +02:00
Karol Stasiak
215d8d92b4 Preprocessor. Z80 improvements. Library improvements. 2018-07-12 19:39:25 +02:00
Karol Stasiak
35f3638a4f Added alias support 2018-07-12 01:23:38 +02:00
Karol Stasiak
2c8de8b6a5 Text encoding improvements 2018-07-07 00:58:44 +02:00
Karol Stasiak
265f729b24 Fix Z80-based platforms 2018-07-07 00:13:46 +02:00
Karol Stasiak
a00ba49820 Multiple improvements and fixes:
– reorganized code for future support of larger zeropage register sets
– added stack-allocated variables for Z80
– added many stack-related optimizations for 6502 and Z80
– fixed flow analysis and optimization bugs for Z80
– flow analysis for stack-allocated variables on Z80
– added more optimizations for 6502 and Z80
– fixed IX/IY-indexed operations on Z80
– code cleanup
2018-07-06 22:45:59 +02:00
Karol Stasiak
55b42645be Don't print an extra newline on ZX Spectrum 2018-07-06 22:38:19 +02:00
Karol Stasiak
40c98567a0 Make the parser much faster 2018-07-06 01:05:24 +02:00
Karol Stasiak
dffc6e71d9 Optimize operations on known register values 2018-07-05 00:58:07 +02:00
Karol Stasiak
670741392c Fix tests 2018-07-05 00:57:43 +02:00
Karol Stasiak
c3504a63b3 ZX Spectrum improvements 2018-07-05 00:50:13 +02:00
Karol Stasiak
fe85757e00 Initial and very incomplete support for Z80 assembly 2018-07-05 00:49:51 +02:00
Karol Stasiak
24ae52e3cc Really early and very incomplete ZX Spectrum support 2018-07-03 22:37:18 +02:00
Karol Stasiak
00be0b552e Use target file name as disk label 2018-07-03 22:36:15 +02:00
Karol Stasiak
3390fe552e Allocate all variables in single pass on Z80 2018-07-03 22:34:45 +02:00
Karol Stasiak
4acc040813 More tests for Z80 2018-07-03 01:52:29 +02:00
Karol Stasiak
0da4637036 Fix and extend Z80 word/long operations 2018-07-03 01:47:31 +02:00
Karol Stasiak
57bde60ced Fix Z80 shifting 2018-07-03 01:46:57 +02:00
Karol Stasiak
e5ee32f7d6 Fix Z80 reverse flow analysis for CP 2018-07-03 01:45:58 +02:00
Karol Stasiak
be04c9b195 Fix emitting constant decimal expressions 2018-07-03 01:45:20 +02:00
Karol Stasiak
da023daadc Z80 doesn't have a zeropage 2018-07-02 22:34:29 +02:00
Karol Stasiak
02a408e1be Fix array iteration on Z80 2018-07-02 22:33:43 +02:00
Karol Stasiak
a394ab631f Faster array iteration for Z80 2018-07-02 14:59:21 +02:00
Karol Stasiak
619bf8116a Optimization fixes and improvements for Z80 2018-07-02 14:58:45 +02:00
Karol Stasiak
9512e8e7ae Really early and very incomplete PC-88 support 2018-07-02 00:31:47 +02:00
Karol Stasiak
62e94d96f7 Added unsigned byte comparisons for Z80 2018-07-02 00:18:33 +02:00
Karol Stasiak
4d00cb4db9 Added Z80 emulator for testing 2018-07-01 22:28:27 +02:00
Karol Stasiak
dc3425f64e Preliminary and partial machine code output for Z80 2018-07-01 22:28:09 +02:00
Karol Stasiak
893515b649 8- and 16-bit shifting for Z80 2018-07-01 22:27:12 +02:00
Karol Stasiak
f7f22767e4 Various minor Z80-related fixes 2018-07-01 22:26:30 +02:00
Karol Stasiak
35caae6d8b Unify syntax of command-line switches 2018-07-01 19:19:30 +02:00
Karol Stasiak
f51e42cc1d Fixed all the legal stuff 2018-06-25 22:42:12 +02:00
Karol Stasiak
2500f842e9 Interprocedural optimization plus some minor fixes:
– fixed handling LDX/LDY/LDZ when inlining variables into registers
– fixed CLA/CLX/CLY instruction generation
– refactored optimization definitions
2018-06-25 21:29:04 +02:00
Karol Stasiak
57740cc6b4 Optimizations for shifting 2018-06-25 01:13:01 +02:00
Karol Stasiak
83e055a1d1 Allow for "file" array specifier inside another array 2018-06-24 00:30:57 +02:00
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
Karol Stasiak
0355495aff Fixed format of array contents in assembly output 2018-03-24 17:11:10 +01:00
Karol Stasiak
c9c0c16e98 Allowed more kinds of constants within variable and array initializers 2018-03-19 21:58:51 +01:00
Karol Stasiak
7ac86b97b5 Cosmetic fixes for messages 2018-03-18 23:54:48 +01:00
Karol Stasiak
046597e9a0 Do not allocate removed variables; also, some weird bugfix 2018-03-18 23:54:32 +01: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
6fa82a5a58 Added ZeropagePseugoregister to default compilation flags 2018-03-18 23:51:25 +01:00
Karol Stasiak
5f2ecb8258 Code cleanup 2018-03-17 18:12:31 +01:00
Karol Stasiak
4f46b21867 Tiny fix 2018-03-17 18:01:44 +01:00
Karol Stasiak
fa34402749 Segment syntax test 2018-03-17 13:49:37 +01:00
Karol Stasiak
fbd9fddf44 Few optimization improvements and fixes 2018-03-16 19:03:50 +01:00
Karol Stasiak
4d927a8949 Loop unrolling improvements 2018-03-16 14:13:24 +01:00
Karol Stasiak
45e284bdb1 Fixed treatment of -Of and -Ob commandline options 2018-03-16 14:12:38 +01:00
Karol Stasiak
e0c3a566b7 Long comparisons; word vs unsigned byte comparison optimization 2018-03-16 13:19:54 +01:00
Karol Stasiak
2548822b8b Interrupt handler optimization fixes 2018-03-16 11:42:42 +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
e95d403752 Flow analyser bugfixes 2018-03-10 00:07:40 +01:00
Karol Stasiak
bc077d3ada Inline assembly parsing improvements 2018-03-10 00:06:50 +01:00
Karol Stasiak
bf851af2e4 LAX optimization bugfix 2018-03-09 17:33:56 +01:00