Karol Stasiak
08f9426ccb
Multiplication fixes and improvements
2018-12-19 01:10:39 +01:00
Karol Stasiak
2454f223c8
Return dispatch over enums
2018-12-19 01:04:56 +01:00
Karol Stasiak
cfb099568e
Z80: track the IY stack frame
2018-12-19 00:59:28 +01:00
Karol Stasiak
7616c246ee
Fix Apple 2 text codec
2018-12-17 17:15:34 +01:00
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