Karol Stasiak
b7300616d1
6502: Faster accesses to small arrays
2019-10-22 16:35:17 +02:00
Karol Stasiak
d36b83421c
6502: Fix an optimization bug
2019-10-22 16:34:39 +02:00
Karol Stasiak
5ad6da2be4
6502: Optimize hi(nonet(...))
2019-10-22 16:34:13 +02:00
Karol Stasiak
ec96f16482
Improve and fix 16-bit comparisons
2019-10-22 13:54:30 +02:00
Karol Stasiak
ff46129c4e
#11 Fix allocation of variables in functions with trampolines
2019-10-22 01:39:11 +02:00
Karol Stasiak
f65651f2c0
#6 Improve error messages related to semicolons
2019-10-22 01:06:51 +02:00
Karol Stasiak
09294307fd
#8 Standardise the behaviour of for
loops.
2019-10-22 00:41:34 +02:00
Karol Stasiak
2d50e4fa73
Make the -o
option optional
2019-10-22 00:14:38 +02:00
Karol Stasiak
9e8b889533
#10 Fix removal of unused global structs and preserve reads in assignments from volatiles to unuseds.
2019-10-22 00:05:44 +02:00
Karol Stasiak
f5b6d9999c
#9 Support astral characters in UTF-8
2019-10-18 11:01:31 +02:00
Karol Stasiak
3a6790e47a
Add UTF-8 and UTF-16 encodings #9
2019-10-17 23:23:57 +02:00
Karol Stasiak
4fc0b98561
6809: Support break and continue
2019-10-16 22:43:16 +02:00
Karol Stasiak
1ec816496d
Allow adding fixed deltas to some outputs; #7 Fix Lynx output
2019-10-16 22:42:58 +02:00
Karol Stasiak
927c39585c
Fix non-compiling code
...
An incremental compiler can be both a blessing and a curse
2019-10-15 00:51:16 +02:00
Karol Stasiak
e9990dc9c1
Allow semicolons in certain positions. Partially implements #6
2019-10-08 18:45:11 +02:00
Karol Stasiak
e19ac75350
6809: Some optimizations
2019-10-08 15:11:22 +02:00
Karol Stasiak
f08caa0b7a
6809: Various improvements
2019-10-08 01:43:09 +02:00
Karol Stasiak
c61d044226
Document keywords and handle them better
2019-10-08 01:33:55 +02:00
Karol Stasiak
f251292dd0
6502: Few minor boolean conversion optimizations
2019-10-01 00:50:21 +02:00
Karol Stasiak
1185b1c0bb
Better removal of unused functions
2019-10-01 00:46:41 +02:00
Karol Stasiak
d1058b6223
ZX Spectrum Next CPU support
2019-10-01 00:46:15 +02:00
Karol Stasiak
f7dd78e4c0
Byte comparison optimizations
2019-10-01 00:45:14 +02:00
Karol Stasiak
5837c6fd7d
Add custom segment layout support
2019-09-25 01:17:52 +02:00
Karol Stasiak
2a21dd8e2e
Add debugging of constness
2019-09-25 01:17:23 +02:00
Karol Stasiak
2ff86889db
Fix sign extension in arithmetic promotions again.
2019-09-24 17:37:06 +02:00
Karol Stasiak
35bf4ba790
Fix returning constant bools
2019-09-24 00:24:17 +02:00
Karol Stasiak
680e94c3b7
Add zx80, zx81 and iso15 encodings
2019-09-20 19:41:53 +02:00
Karol Stasiak
d38405f467
Fix signed constants and word-sbyte subtraction
2019-09-20 18:33:41 +02:00
Karol Stasiak
b74974dbdd
Various tweaks for Lynx
2019-09-20 01:43:58 +02:00
Karol Stasiak
1d825a0c99
Fix parsing of zp_bytes
2019-09-18 01:03:13 +02:00
Karol Stasiak
c45cf7d51d
Add KOI-7 N2 and MSX-BR encodings. Some encoding enhancements.
2019-09-18 00:09:37 +02:00
Karol Stasiak
b1e5176aff
Allow larger nontrivial constants
2019-09-16 22:48:46 +02:00
Karol Stasiak
457472080f
6502: Improve inlining of functions with lots of parameters.
2019-09-16 21:32:57 +02:00
Karol Stasiak
fa7844e0b8
6502: Optimize ROL/ROR before AND
2019-09-16 21:31:53 +02:00
Karol Stasiak
635870585e
Add unsigned 16-bit division
2019-09-15 19:47:19 +02:00
Karol Stasiak
a4f91eda03
6502: Fix arithmetic promotion bugs for function return values
2019-09-14 16:01:02 +02:00
Karol Stasiak
1d445ecdd1
Support sizeof on arrays. Preliminary Commander X16 support.
2019-09-14 03:37:24 +02:00
Karol Stasiak
6c4dc81c1b
Add the -R
option
2019-09-14 02:40:03 +02:00
Karol Stasiak
3ce2249399
Add 16-bit multiplication
2019-09-04 21:17:06 +02:00
Karol Stasiak
e449b67a4a
Added encconv module.
2019-09-04 01:14:14 +02:00
Karol Stasiak
f3b5fe715c
Fix alias resolution during unused code elimination
2019-09-04 01:00:16 +02:00
Karol Stasiak
32df01be76
Allocators should allocate even the last byte in the segment
2019-09-02 23:23:51 +02:00
Karol Stasiak
0be52821d9
Add the {nullchar} escape sequence
2019-09-02 23:23:23 +02:00
Karol Stasiak
1f8ece007b
Add constants for segment bounds
2019-09-02 23:22:07 +02:00
Karol Stasiak
2159fc345f
Allow defining custom segment fill
2019-08-16 17:53:03 +02:00
Karol Stasiak
d91b35468e
Support non-decimal numbers in -D
2019-08-16 17:52:07 +02:00
Karol Stasiak
bcf403d269
Fix evaluation of constant expressions in assembly
2019-08-16 17:21:51 +02:00
Karol Stasiak
6b4236530d
Change fatal error message.
2019-08-16 01:11:03 +02:00
Karol Stasiak
785eb0780b
Fix cartridge targets
2019-08-16 01:09:03 +02:00
Karol Stasiak
1d530d896a
6809: Make some progress
2019-08-16 00:51:28 +02:00
Karol Stasiak
960d16fa18
Add nullchar constant, NULLCHAR feature, and vectrex encoding
2019-08-16 00:46:11 +02:00
Karol Stasiak
6b34ddf7f9
Some random stuff
2019-08-05 11:43:51 +02:00
Karol Stasiak
98553d56c0
Don't remove some important type casts
2019-08-04 17:16:01 +02:00
Karol Stasiak
127cd1b901
6502: Fix word multiplication by 0
2019-08-04 13:42:00 +02:00
Karol Stasiak
1a87929ad3
Fix TCO
2019-08-04 13:40:49 +02:00
Karol Stasiak
dfda9f9283
8080: Fix optimizations near ifs
2019-08-04 12:37:54 +02:00
Karol Stasiak
34254314a6
6502: Fix word division and byte multiplication
2019-08-04 00:05:35 +02:00
Karol Stasiak
f51f233571
Fix removing unused local variables
2019-08-03 20:46:01 +02:00
Karol Stasiak
dcbf54872b
Fix various compiler crashes
2019-08-03 20:34:02 +02:00
Karol Stasiak
778d04ce21
6502: Fix sign extension when type casting
2019-08-03 20:33:49 +02:00
Karol Stasiak
d760683ea5
6502: Add tests for byte shifting
2019-08-03 20:33:15 +02:00
Karol Stasiak
515da587d8
6502: Fix stack overflow
2019-08-03 20:32:45 +02:00
Karol Stasiak
48220f739d
8080: Fix byte division and simplify byte multiplication
2019-08-03 20:32:26 +02:00
Karol Stasiak
9d78385cba
6502: Fix byte shifting
2019-08-03 20:31:27 +02:00
Karol Stasiak
10c76dcc9c
Z80: Fix optimizations around multiplication
2019-08-03 16:42:40 +02:00
Karol Stasiak
9962a8344a
6502: Fix booleans
2019-08-02 00:17:24 +02:00
Karol Stasiak
bb63a73f15
Improve interprocedural optimizations
2019-08-01 19:11:35 +02:00
Karol Stasiak
35fbdcdbb1
6502: Fix compilation of some index expressions
2019-08-01 19:11:09 +02:00
Karol Stasiak
51da5ab2c0
6502: optimize bitops on words
2019-08-01 13:27:03 +02:00
Karol Stasiak
7ded8376d8
Better removal of unused local variables
2019-07-31 23:46:08 +02:00
Karol Stasiak
a1eef66e5c
In case of overflows, dump stack
2019-07-31 23:36:22 +02:00
Karol Stasiak
31cbb3d42d
Fix optimized struct assignments (again)
2019-07-31 23:36:08 +02:00
Karol Stasiak
5c5bfa3f00
6502: Allow comparing words on stack
2019-07-31 22:32:41 +02:00
Karol Stasiak
a3a168b90b
Fix optimized struct assignments
2019-07-31 22:30:33 +02:00
Karol Stasiak
fe25978d14
6502: fix broken jump optimization
2019-07-31 22:30:04 +02:00
Karol Stasiak
0f9bb4fb56
Detect stack overflow during Z80 tests
2019-07-31 22:29:50 +02:00
Karol Stasiak
05c017e375
New encodings for MSX
2019-07-31 00:20:18 +02:00
Karol Stasiak
22b4776139
Enable pointers to functions with a word parameter (using trampolines on 6502)
2019-07-30 22:49:32 +02:00
Karol Stasiak
613ddcf9a4
Refactoring
2019-07-30 22:25:05 +02:00
Karol Stasiak
e2c8dad7a5
Fix
2019-07-30 15:36:18 +02:00
Karol Stasiak
251c6c5562
Assembly output should contain decoded text literals
2019-07-30 15:31:00 +02:00
Karol Stasiak
d3b72f5b42
Add petjp and petscrjp encodings. Allow lowercase letters in string literals on Apple II.
2019-07-30 15:10:29 +02:00
Karol Stasiak
943a56a30f
6502: Fix some cases of word additions; optimize bitmasking
2019-07-30 14:47:52 +02:00
Karol Stasiak
40b2e393da
Another fix for PETSCII
2019-07-30 14:35:22 +02:00
Karol Stasiak
5c3637e2ea
6502: Optimize some word operations
2019-07-30 01:40:13 +02:00
Karol Stasiak
b68e4b67c8
Better support for big-endian systems
2019-07-29 22:51:08 +02:00
Karol Stasiak
dd4cb17a80
_.length and _.lastindex for arrays
2019-07-29 22:50:26 +02:00
Karol Stasiak
5fb6efbd61
Change PETSCII encoding to match CC65 and readkey
2019-07-29 02:07:30 +02:00
Karol Stasiak
cb0718b433
6809: First bits of the code generator
2019-07-29 00:55:24 +02:00
Karol Stasiak
b2afddf05b
More output operators
2019-07-28 17:49:20 +02:00
Karol Stasiak
8922beda00
Allow text literals in more positions
2019-07-27 01:38:06 +02:00
Karol Stasiak
35ba36ce11
Function pointers – initial version
2019-07-27 00:58:10 +02:00
Karol Stasiak
be9d27e2ee
Use standard logging during deduplication
2019-07-27 00:39:07 +02:00
Karol Stasiak
3aac33b54f
Add the bool type. Few boolean-related bugfixes.
2019-07-26 19:02:32 +02:00
Karol Stasiak
c8ca48a6b0
Better documentation for in-place modification operators
2019-07-26 18:56:24 +02:00
Karol Stasiak
96850d295d
Disallow calls to main when using software stack
2019-07-26 14:56:44 +02:00
Karol Stasiak
8d4e7b9326
Assignments of large objects accessed through pointers
2019-07-26 14:49:06 +02:00
Karol Stasiak
adc93aeb74
Z80: Fix optimizations near stack variables
2019-07-26 14:15:35 +02:00
Karol Stasiak
4b25ce2d8c
Pointers to fields of array elements
2019-07-24 00:14:27 +02:00
Karol Stasiak
b873030b29
6502: More optimizations
2019-07-23 23:17:03 +02:00
Karol Stasiak
a25f6ca3f6
6502: Fix optimizations involving the zeropage pseudoregister
2019-07-23 23:16:37 +02:00
Karol Stasiak
45c137e2c0
6502: more possible comparisons for 16-bit words
2019-07-19 15:48:08 +02:00
Karol Stasiak
ed6d96f3f5
Fix for-downto
2019-07-19 15:47:46 +02:00
Karol Stasiak
49d176fb3c
Extra message if a constant is not yet constant
2019-07-19 15:47:36 +02:00
Karol Stasiak
07a29643a8
Fix text literals as expressions
2019-07-19 15:47:19 +02:00
Karol Stasiak
12d32594d1
Allow a line break after an operator
2019-07-19 15:46:19 +02:00
Karol Stasiak
09f5ab269d
6502: fix invalid short jumps
2019-07-19 15:45:57 +02:00
Karol Stasiak
20f4baf2b2
Allow setting segments for multiple declarations at once
2019-07-17 20:51:34 +02:00
Karol Stasiak
8d8859b55f
Be more helpful for C users
2019-07-17 20:49:36 +02:00
Karol Stasiak
11825c43e1
Check if all segment exist right after parsing
2019-07-17 20:48:31 +02:00
Karol Stasiak
1d024eae76
Add LITTLE_ENDIAN and BIG_ENDIAN features
2019-07-15 14:15:38 +02:00
Karol Stasiak
e0cd000b99
Documentation tweaks
2019-07-15 14:15:05 +02:00
Karol Stasiak
f3dcfc78ba
Dijkstra wept
2019-07-15 02:06:23 +02:00
Karol Stasiak
98f35937e3
Improve text encodings on Atari
2019-07-12 13:29:59 +02:00
Karol Stasiak
6d499f3623
Arrays with elements larger than one byte
2019-07-10 16:51:12 +02:00
Karol Stasiak
a29b2a994b
Improve passing of register parameters to assembly functions
2019-07-09 22:40:14 +02:00
Karol Stasiak
c5135423f8
Fix: don't swap BC and DE if jumping outside the function
2019-07-09 22:39:57 +02:00
Karol Stasiak
7766ba932b
Fix variable coercing
2019-07-09 22:39:20 +02:00
Karol Stasiak
62f79388bd
Slowly move towards removing the farword
alias
2019-07-09 22:03:53 +02:00
Karol Stasiak
4ab45aba2e
8080: Fix certain bulk array operations
2019-07-09 21:59:02 +02:00
Karol Stasiak
8a5672c2dc
Allow declaring multiple variables in one line
2019-07-08 19:24:11 +02:00
Karol Stasiak
769f410767
Fix detection of local duplicate names
2019-07-08 19:10:21 +02:00
Karol Stasiak
56c1ab008d
6502: optimize special cases of bulk memory modifications
2019-07-08 19:02:42 +02:00
Karol Stasiak
d64d0b5f96
6502: Fix expressions like p[i] <<= 1
2019-07-08 18:51:49 +02:00
Karol Stasiak
767f0da703
Placeholder for future expansion
2019-07-08 09:26:51 +02:00
Karol Stasiak
1e4b5acfba
Fix some edge cases with large variables
2019-06-29 16:22:27 +02:00
Karol Stasiak
8af2cb6da2
6502: Make zeropage registers more detectable by the optimizer
2019-06-29 00:08:12 +02:00
Karol Stasiak
bcb2e362b2
Restrict subroutine extraction to make exponential runtime less likely
2019-06-29 00:07:32 +02:00
Karol Stasiak
3e0dad4cb0
Few more optimizations
2019-06-28 23:19:58 +02:00
Karol Stasiak
e1b2b7f2c9
Let's hope this doesn't break anything
2019-06-28 21:45:12 +02:00
Karol Stasiak
13c23c1bd1
Java 11 compatibility
2019-06-28 17:54:08 +02:00
Karol Stasiak
0af9bc4696
Better error reporting in arithmetic tests
2019-06-28 17:53:42 +02:00
Karol Stasiak
39b07a8bae
Fix init_rw_memory on Atari 2600
2019-06-28 16:44:41 +02:00
Karol Stasiak
674f8d1983
Allow initializing writable variables on cartridge targets
2019-06-28 16:28:49 +02:00
Karol Stasiak
3d68d4f990
mapValues is lazy what the fuck
2019-06-28 16:24:49 +02:00
Karol Stasiak
4d59edbe51
6502: Better error messages
2019-06-28 16:23:24 +02:00
Karol Stasiak
7d051eb5e0
Don't modify macro invocations
2019-06-27 00:50:21 +02:00
Karol Stasiak
efe69eb5a9
Fix performance regressions and some bugs
2019-06-27 00:18:05 +02:00
Karol Stasiak
261486b3cd
Don't enable -fsubroutine-extraction when using -Os or -Of
2019-06-26 19:07:25 +02:00
Karol Stasiak
14d6cf4d5c
Fix stack overflow
2019-06-26 19:06:45 +02:00
Karol Stasiak
51599c9615
Allow defining free zeropage bytes instead of pointers
2019-06-26 18:33:59 +02:00
Karol Stasiak
c580ba33ea
Fix nested #ifs
2019-06-26 18:31:45 +02:00
Karol Stasiak
c9a65d5971
Added #define directive
2019-06-26 13:43:15 +02:00
Karol Stasiak
22cdd1c768
Z80: Fix stack variable optimizations when addresses of stack variables are taken (2)
2019-06-26 10:46:59 +02:00
Karol Stasiak
afa871abcf
Z80: Fix stack variable optimizations when addresses of stack variables are taken
2019-06-26 02:11:53 +02:00
Karol Stasiak
a3b21c4810
8080: Use pointers instead of indexing when traversing an array in a loop
2019-06-26 01:56:32 +02:00
Karol Stasiak
8304650b3e
6502: Fix summing for-loops
2019-06-26 01:47:43 +02:00
Karol Stasiak
6cf746045f
8080/Z80: More optimizations
2019-06-26 01:47:03 +02:00
Karol Stasiak
507791bcaf
Fix stack overflow
2019-06-26 01:46:31 +02:00
Karol Stasiak
f90d6afc43
8080: Fixed inlining of byte-sized variables into registers
2019-06-26 01:45:34 +02:00
Karol Stasiak
2282e56845
6502: Faster summing for-loops
2019-06-25 18:23:31 +02:00
Karol Stasiak
260cfd50c4
Fix putword optimization
2019-06-25 18:19:57 +02:00
Karol Stasiak
e394fe15c3
Add struct literals
2019-06-25 00:45:49 +02:00
Karol Stasiak
978d97cd7d
Fix unused object detection
2019-06-25 00:26:52 +02:00
Karol Stasiak
d8defaad82
Fix and document for-each loops
2019-06-24 23:51:17 +02:00
Karol Stasiak
25c440f17d
Add local arrays
2019-06-24 22:32:29 +02:00
Karol Stasiak
663e38c264
Optimizations:
...
– optimize multiplication and division by constants
– optimize multiplication, division and shifts for size
2019-06-24 15:20:39 +02:00
Karol Stasiak
8ea3957023
8080: optimize loads to HL
2019-06-24 15:18:44 +02:00
Karol Stasiak
15475b6886
Don't require -Os for code deduplication
2019-06-24 15:17:35 +02:00
Karol Stasiak
23b4b110a6
8080: optimize more pointless loads
2019-06-24 15:17:05 +02:00
Karol Stasiak
4dd470141a
6502: zero-extend the division result
2019-06-24 15:16:14 +02:00
Karol Stasiak
4654698891
8080: tail call optimization
2019-06-24 00:47:07 +02:00
Karol Stasiak
869211658a
Division optimizations
2019-06-24 00:13:16 +02:00
Karol Stasiak
fbe20a240b
8080: Fix division
2019-06-24 00:13:02 +02:00
Karol Stasiak
0205520bf9
Allow taking addresses of stack variables
2019-06-23 22:53:42 +02:00
Karol Stasiak
f22b62e57f
Z80: Fix stack variable inlining
2019-06-23 22:31:46 +02:00
Karol Stasiak
63c43c414a
Various fixes related to the -> operator
2019-06-23 19:44:53 +02:00
Karol Stasiak
088b28989f
Division by zero warnings
2019-06-23 19:44:34 +02:00
Karol Stasiak
f46466365b
Compilation order should be decided by the import statements
2019-06-14 23:20:03 +02:00
Karol Stasiak
ba16021426
Allow using $$ instead of # in preprocessor directives
2019-06-14 15:33:17 +02:00
Karol Stasiak
ffff51dee9
6502: optimize variable pointers
2019-06-14 15:19:29 +02:00
Karol Stasiak
2a233930e8
8080: improve comparisons against constants
2019-06-14 15:19:13 +02:00
Karol Stasiak
51a6ec9d73
Preprocessor: add #use A=B and if(i,t,e)
2019-06-14 12:00:45 +02:00
Karol Stasiak
3852b2dbe9
More label file formats
2019-06-14 11:39:11 +02:00
Karol Stasiak
ecb366eafb
Add the -i option
2019-06-14 11:28:26 +02:00
Karol Stasiak
50415714fa
Detect the default include directiory when running the native executable
2019-06-13 00:16:45 +02:00
Karol Stasiak
dc13dbaa9a
Code cleanup
2019-06-12 22:55:34 +02:00
Karol Stasiak
0f179f79aa
Many big important things:
...
– Add support for undocumented 8085 instructions
– Convert undocumented 8085 instructions to 8086
– Add new CPU types and categorize CPU types correctly
– Fix macro expansion in some situations
– Improve 8080 optimizations
– Improve documentation
– Other improvements
2019-06-12 12:06:02 +02:00
Karol Stasiak
eaaa98a8e3
Add better configuration flag fillouts
2019-06-12 10:08:52 +02:00
Karol Stasiak
b15490c5bf
Fix constant printing
2019-06-12 09:54:54 +02:00
Karol Stasiak
4ec2fc2f62
Make tests toggleable by platform
2019-06-12 02:58:33 +02:00
Karol Stasiak
3b3fb24284
8086: partially fix memory leak in unit tests
2019-06-12 02:56:44 +02:00
Karol Stasiak
a1b868e3df
Optimize byte division by power of two
2019-06-06 13:35:26 +02:00
Karol Stasiak
e31737ad40
Unsigned division of word by byte
2019-06-06 13:06:30 +02:00
Karol Stasiak
2583f280a8
Unsigned byte division by non-constant
2019-06-06 01:17:34 +02:00
Karol Stasiak
010b44f23e
Unsigned byte division by a constant
2019-06-05 18:36:39 +02:00
Karol Stasiak
9164e78a2d
6502: Fix comparison optimizations
2019-06-05 18:12:57 +02:00
Karol Stasiak
77b3628dde
Z80: Analyse LD A,I and LD A,R correctly in the optimizer
2019-06-05 11:33:34 +02:00
Karol Stasiak
b3bb9bb063
Intel 8085 support
2019-05-31 17:27:38 +02:00
Karol Stasiak
1cb3b672b1
Add 8080-to-8086 translation
2019-05-31 17:03:35 +02:00
Karol Stasiak
b4a6c261de
8080: support raw bytes in assembly statements
2019-05-31 14:29:54 +02:00
Karol Stasiak
0f52efbe20
Minor fix to a debug log message
2019-05-31 14:29:20 +02:00
Karol Stasiak
e06d3bf081
8080: correct Intel disassembly for DI
2019-05-31 02:09:50 +02:00
Karol Stasiak
c747d198e6
6502: Fix optimization bug
2019-05-30 22:16:46 +02:00
Karol Stasiak
9b5134c7b9
6502: preserve line numbers in more optimizations
2019-05-29 14:09:55 +02:00
Karol Stasiak
d461046566
6502: use index registers less often
2019-05-29 14:09:41 +02:00
Karol Stasiak
d23f6e4248
6502: improve optimizations using undocumented instructions
2019-05-29 14:09:21 +02:00
Karol Stasiak
43686e0c33
6502: optimize signed comparisons against certain constants
2019-05-29 14:08:42 +02:00
Karol Stasiak
138dcfa19f
8080: implement signed byte comparisons for CPU's without the overflow flag
2019-05-29 14:07:57 +02:00
Karol Stasiak
0410cbea34
Preliminary GraalVM native-image support
2019-05-11 13:50:22 +02:00