Irmen de Jong
f2daa17b92
tweak some not optimizations
...
cleanup IR typestring
2024-01-05 17:49:56 +01:00
Irmen de Jong
6d9fccacb1
boolean not expression tweaks and optimizations
2024-01-05 13:32:16 +01:00
Irmen de Jong
37638e7ed0
added Absorption laws optimization
2024-01-05 00:36:47 +01:00
Irmen de Jong
8a0e650511
apply De Morgan's laws for logical not, results in smaller code
2024-01-04 23:45:46 +01:00
Irmen de Jong
56ba24962c
fixed 'not not x' optimization to just 'x'
2024-01-04 15:02:21 +01:00
Irmen de Jong
242a3eec63
fix data type difference error on range from and to values
2024-01-03 21:46:22 +01:00
Irmen de Jong
6aed7e429a
allow containment check in a range expression ("run time" range expression)
2024-01-03 01:17:13 +01:00
Irmen de Jong
99c29343de
added -printast1 and -printast2 command line options
2024-01-01 22:48:19 +01:00
Irmen de Jong
d446b57d05
fix unittest
2024-01-01 16:11:50 +01:00
Irmen de Jong
d1f8ee1e56
replace most common subexpressions by a single temp variable
2024-01-01 14:57:24 +01:00
Irmen de Jong
75fd263e85
fix expericodegen crash related to shortcircuiting
2023-12-31 01:28:17 +01:00
Irmen de Jong
8f18b5b8a7
keep distinction between logical and bitwise boolean operators
2023-12-30 01:08:42 +01:00
Irmen de Jong
f790182f0b
adding short-circuit boolean expression evaluation (in IR codegen) also -noshortcircuit cli option
2023-12-30 01:08:41 +01:00
Irmen de Jong
d03ff1e4d0
improved var -> const replacement, now done in constfolding already (fixes some obscure problems later on)
...
Also fixed some directive parenting errors
2023-12-29 19:48:40 +01:00
Irmen de Jong
779a5606a7
add unittest for aa%bb (without space) to be parsed correctly as modulo, not directive
2023-12-29 05:11:50 +01:00
Irmen de Jong
ccc11e49d2
fix asmgen for uword shift right 8 or more bits
2023-12-29 05:06:09 +01:00
Irmen de Jong
e35cfd4971
get rid of the redundant 'f' suffix of several funtions in floats module (breaking change!)
...
Unfortunately a few routines (minf, maxf, clampf) remain unchanged, because removing the 'f' would make them clash with a builtin function.
floats.rndf -> floats.rnd
floats.parse_f -> floats.parse
floats.rndseedf -> floats.rndseed
floats.print_f -> floats.print
floats.str_f -> floats.tostr
2023-12-29 03:12:44 +01:00
Irmen de Jong
a0594cbce3
const optimizer now knows about a bunch of library functions, such as math.*
2023-12-28 20:14:13 +01:00
Irmen de Jong
9c1b11d605
some WARN messages are now INFO
2023-12-28 14:20:47 +01:00
Irmen de Jong
44d82f9190
add unit tests
2023-12-28 13:30:07 +01:00
Irmen de Jong
09c6cb4d6b
replace unwritten vars by consts. Improved const eval.
...
Fixed some slight bugs in library code
2023-12-28 05:17:15 +01:00
Irmen de Jong
2eb137618e
refactor block options
2023-12-26 22:13:08 +01:00
Irmen de Jong
4bb2b8ca9b
make isArray a computed property by simply checking the datatype
2023-12-26 19:58:08 +01:00
Irmen de Jong
0a4de45453
get rid of vardecl.declareddatatype
2023-12-26 19:33:58 +01:00
Irmen de Jong
ffdc658dc8
type error tweaks
2023-12-26 18:49:01 +01:00
Irmen de Jong
7530f4407b
ir tag change INLINEASM->ASM
2023-12-26 16:15:19 +01:00
Irmen de Jong
0d44492086
push,pushw,pop and popw are no longer built-in functions but regular routines in sys
2023-12-26 14:47:31 +01:00
Irmen de Jong
8ae435549d
added -slabshigh N and -slabsgolden for memory() slabs
2023-12-23 20:45:30 +01:00
Irmen de Jong
9b113c0cbb
added -varsgolden to put BSS into Golden Ram at $0400
2023-12-23 20:11:50 +01:00
Irmen de Jong
ad9eaeafeb
call
now returns a word value
2023-12-22 22:24:11 +01:00
Irmen de Jong
49ec430592
cx16: added several word Vera-registers as memory-mapped vars as well
2023-12-21 00:28:09 +01:00
Irmen de Jong
6bc079c7b7
more asm symbol prefixing: variables with p8v_, subroutines with p8s_ etc
...
labels with p8l_ . All this to avoid symbol clashes in the generated assembly code.
Everything got its own distinguishing prefix so we're done with it once and for all and have only 1 breaking change moment.
2023-12-20 22:20:59 +01:00
Irmen de Jong
299419917e
added symbol ambiguity error (variable vs block name for scoped symbols)
...
fixes #114
2023-12-20 00:28:15 +01:00
Irmen de Jong
b7279a3d9e
fix 'not in' parsing error
...
fixes #115
2023-12-19 19:49:25 +01:00
Irmen de Jong
e14b854d7b
cx16: added audio kernal routines example
2023-12-19 01:47:05 +01:00
Irmen de Jong
ae66fcac1e
added call
builtin function for indirect JSR
2023-12-17 15:45:28 +01:00
Irmen de Jong
a8be94de6b
better error message when attempting to cast a float to integer
2023-12-15 22:28:06 +01:00
Irmen de Jong
e98e951834
fix chained assignment and multi-vardecl RHS evaluation
2023-12-10 16:44:51 +01:00
Irmen de Jong
ef1c665b9a
allow underscores for numerical grouping
2023-12-09 13:13:34 +01:00
Irmen de Jong
d56565be25
fix multi-var decl
2023-12-09 12:32:41 +01:00
Irmen de Jong
1bdc427d73
multi var declarations ubyte x,y,z
2023-12-08 22:18:21 +01:00
Irmen de Jong
5c393091a0
unit test for %encoding
2023-12-07 21:54:01 +01:00
Irmen de Jong
8e4319cd5a
module directive %encoding to set the text encoding for that whole file (iso, petscii, etc.)
2023-12-06 23:54:08 +01:00
Irmen de Jong
f998888d6d
fix some unicode identifier issues
2023-12-05 17:38:23 +01:00
Irmen de Jong
7d8b42d63e
allow Unicode letters in identifiers: things like 'knäckebröd' and 'π' are now valid identifiers. Added floats.π constant.
2023-12-05 01:36:54 +01:00
Irmen de Jong
6ebd4e821f
improved docs about subroutine scoping, fix possible optimizer crash for inlined sub
2023-12-04 23:23:52 +01:00
Irmen de Jong
1d2d7155da
palette: changed some of the available presets. Also fix sizeof(array) crash.
2023-12-03 17:14:40 +01:00
Irmen de Jong
b09e0a05bf
some tweaks to errors about long integer literals
2023-12-03 02:45:26 +01:00
Irmen de Jong
c609e982fe
allow const expression intermediate values to be 32 bits integers to avoid needless overflow errors.
2023-12-03 01:48:12 +01:00
Irmen de Jong
48f09f71ab
fix TODO crash on uword[0] = uword[0] or 128 (byte register assign to word array)
2023-12-02 21:29:14 +01:00