Irmen de Jong
|
24d13dd120
|
fix problematic optimizations to logical expressions
|
2022-07-02 00:56:24 +02:00 |
|
Irmen de Jong
|
965340ff90
|
logical and/or/xor/not all replaced by bitwise &,|,^,~ (ast, codegens)
this also fixed some invalid outcomes of logical expressions!
|
2022-07-02 00:38:17 +02:00 |
|
Irmen de Jong
|
2eb41a8caf
|
temporary workaround for code problem around 'not'
|
2022-07-01 00:38:19 +02:00 |
|
Irmen de Jong
|
97cb0cbd08
|
tweak "not" removal/rewriting
|
2022-06-30 02:16:30 +02:00 |
|
Irmen de Jong
|
dc82a0fc16
|
better not(x) replacement by x==0
|
2022-06-28 23:50:23 +02:00 |
|
Irmen de Jong
|
435d6f6f3f
|
vm: and/or/xor/not are all bitwise operations again
|
2022-06-28 03:17:51 +02:00 |
|
Irmen de Jong
|
ef92451d1a
|
fix logical expressions on arbitrary values, for now with boolean() around the operands
|
2022-06-28 01:18:36 +02:00 |
|
Irmen de Jong
|
c75bd97537
|
update kotest
|
2022-06-26 18:51:03 +02:00 |
|
Irmen de Jong
|
bf9d120081
|
logical operators now always return a boolean byte result, instead of sometimes word type as well
(preparing for codegen simplifications for these)
|
2022-06-13 01:37:16 +02:00 |
|
Irmen de Jong
|
031f647952
|
allow casting negative numbers to unsigned, result = 2's complement
|
2022-06-05 14:21:10 +02:00 |
|
Irmen de Jong
|
c40cfaa388
|
preparing optimizing pointer indexing
|
2022-06-04 14:23:02 +02:00 |
|
Irmen de Jong
|
dad5b17ac8
|
fix regression compiler crash in string comparison
|
2022-05-08 13:47:24 +02:00 |
|
Irmen de Jong
|
fef52c0112
|
automatically convert multi-compare expression (if X==1 or X==2..) to contaiment check if X in [1,2,..]
|
2022-05-08 13:21:34 +02:00 |
|
Irmen de Jong
|
6f2fdbe447
|
added %option merge, also fixed problem with unit test building in newer IntelliJ version
|
2022-04-15 22:38:32 +02:00 |
|
Irmen de Jong
|
220246278a
|
removed sum(), max(), min(). abs() now always returns uword type.
This greatly simplifies internal handling of builtin functions by always having one fixed return type.
|
2022-04-14 00:21:16 +02:00 |
|
Irmen de Jong
|
ab1766a559
|
moved all *integer* builtin trig functions (sin8u, cos8u etc) as regular asmsubs in math module
|
2022-04-13 00:27:35 +02:00 |
|
Irmen de Jong
|
036d9dbe59
|
got rid of unnecessary cast of boolean expressions by making their type dynamically adjust to byte or word
|
2022-04-04 23:43:55 +02:00 |
|
Irmen de Jong
|
92737bb695
|
better handling of loadAddress
|
2022-03-13 16:21:02 +01:00 |
|
Irmen de Jong
|
3961f26635
|
consolidating modules
|
2022-03-11 20:45:39 +01:00 |
|
Irmen de Jong
|
e51c274a18
|
reducing dependencies
|
2022-03-11 20:32:35 +01:00 |
|
Irmen de Jong
|
e75d0c58a9
|
reducing dependencies
|
2022-03-10 23:46:43 +01:00 |
|
Irmen de Jong
|
9a798360f4
|
introduced codeAst and codeCore modules to reduce dependencies
|
2022-03-10 22:38:16 +01:00 |
|
Irmen de Jong
|
251b6fcf70
|
reducing dependencies
|
2022-03-10 02:09:34 +01:00 |
|
Irmen de Jong
|
ab1fffb721
|
reducing dependencies
|
2022-03-10 01:41:42 +01:00 |
|
Irmen de Jong
|
db7ae028b2
|
simplified CompilationResult a bit
|
2022-03-07 21:41:12 +01:00 |
|
Irmen de Jong
|
f7aa0c45df
|
optimize imports
|
2022-03-05 15:54:42 +01:00 |
|
Irmen de Jong
|
067283834a
|
got rid of old IVariablesAndConsts object
|
2022-03-05 14:40:41 +01:00 |
|
Irmen de Jong
|
496245c801
|
working on symboltable
|
2022-03-05 12:10:20 +01:00 |
|
Irmen de Jong
|
859ab36347
|
variables extraction moved to the very end, so no need anymore to change the table after the fact
|
2022-03-04 23:12:24 +01:00 |
|
Irmen de Jong
|
df35dfe3bf
|
added atari XEX output format with default $2000 load address
|
2022-02-26 15:36:22 +01:00 |
|
Irmen de Jong
|
eeb3c968d6
|
streamline handling of launcher type and program load address. %address is now required if not using a basic-launcher.
|
2022-02-22 22:43:14 +01:00 |
|
Irmen de Jong
|
b47fc1c020
|
renames of some Ast node classes
|
2022-02-11 00:34:36 +01:00 |
|
Irmen de Jong
|
08bacdd090
|
temp vars are now dynamically added to AST as needed
|
2022-02-10 02:52:47 +01:00 |
|
Irmen de Jong
|
98b2855b9c
|
cleanups
|
2022-02-09 16:35:52 +01:00 |
|
Irmen de Jong
|
101fb0b8aa
|
some naming changes and cleanups
|
2022-02-06 23:14:44 +01:00 |
|
Irmen de Jong
|
10de7dc1f9
|
fixed the concurrent modification issue on zeropage when running unit tests in parallel, by not having machine targets be static objects
|
2022-02-06 21:29:06 +01:00 |
|
Irmen de Jong
|
6bdd81623f
|
cleaning up AsmGen interface
|
2022-02-06 17:07:03 +01:00 |
|
Irmen de Jong
|
312949f336
|
added experimental codegen backend option
|
2022-02-05 21:42:03 +01:00 |
|
Irmen de Jong
|
a170506356
|
simplify IdentifierReference equality check back to default (name+pos)
|
2022-01-27 23:32:55 +01:00 |
|
Irmen de Jong
|
7bb41a30ed
|
fixed compiler crash when assigning number larger than 65535
|
2022-01-23 01:44:16 +01:00 |
|
Irmen de Jong
|
056ec986c2
|
use var initializer assignments in a clearer way
|
2022-01-11 00:34:44 +01:00 |
|
Irmen de Jong
|
de3b2fb95b
|
slightly optimized certain list iterations into sequences
|
2022-01-10 23:15:24 +01:00 |
|
Irmen de Jong
|
895534f32b
|
don't remove dead variable assignments if they are a function call
|
2022-01-09 18:41:01 +01:00 |
|
Irmen de Jong
|
6fa3f0b6cd
|
small refactor
|
2022-01-08 18:02:38 +01:00 |
|
Irmen de Jong
|
d99d977d2b
|
fix more typecasting issues
|
2022-01-08 17:04:25 +01:00 |
|
Irmen de Jong
|
7dd7e562bc
|
pipes also as expressions, cleanup codegen, fix various typecasting issues
|
2022-01-08 13:45:19 +01:00 |
|
Irmen de Jong
|
de6ce4a46e
|
add "X in [1,2,3]" expression (efficient containment check)
|
2021-12-29 17:26:00 +01:00 |
|
Irmen de Jong
|
0feeb88024
|
codegen package rename 2
|
2021-12-28 14:23:36 +01:00 |
|
Irmen de Jong
|
7b54aa0c7d
|
more consistent naming of the statement classes
|
2021-12-28 13:56:47 +01:00 |
|
Irmen de Jong
|
67b0890a6e
|
remove unneeded var inits when an assignment is already present
|
2021-12-25 23:31:25 +01:00 |
|
Irmen de Jong
|
3d743a1ba1
|
added more constfolding
|
2021-12-09 23:32:48 +01:00 |
|
Irmen de Jong
|
abca618008
|
added more constfolding
|
2021-12-09 23:12:12 +01:00 |
|
Irmen de Jong
|
0d2c3901a3
|
added more constfolding
|
2021-12-09 22:12:31 +01:00 |
|
Irmen de Jong
|
d8d56b195f
|
comments
|
2021-12-09 21:13:13 +01:00 |
|
Irmen de Jong
|
8887e6af91
|
fix substituting 0 only if its actually the same variable that's substituted
|
2021-11-21 12:34:57 +01:00 |
|
Irmen de Jong
|
adfaddbcf4
|
give a nicer error when given a wrong compilation target.
|
2021-11-20 18:30:55 +01:00 |
|
Irmen de Jong
|
74db5c6be7
|
fix referencesIdentifier() and better removal of unnecessary assignments
|
2021-11-20 17:41:41 +01:00 |
|
Irmen de Jong
|
f9399bcce7
|
r=(q+r)-c and r=q+(r-c) are now both also 'augmentable', and BinExprSplitter doesn't check for associativeOperator anymore
|
2021-11-20 02:03:32 +01:00 |
|
Irmen de Jong
|
87600b23db
|
fix constvalue parent linkage for prefix and typecast
|
2021-11-20 00:20:35 +01:00 |
|
Irmen de Jong
|
cedfb17b18
|
fix too aggressive removal of vars that weren't completely unused
|
2021-11-19 22:49:35 +01:00 |
|
Irmen de Jong
|
fa4c83df6b
|
added 3 tests for discovered problems
|
2021-11-18 23:55:20 +01:00 |
|
Irmen de Jong
|
4c82af36e6
|
fix improperly changed behavior about =0 initializer
|
2021-11-18 00:17:22 +01:00 |
|
Irmen de Jong
|
dafa0d9138
|
fix compiler crash bug due to reused ast expression nodes. Now all (relevant) Nodes have a copy() function to make a clone.
|
2021-11-17 23:05:59 +01:00 |
|
Irmen de Jong
|
f48d6ca9f8
|
simplified NumericLiteral to always just contain a Double instead of a Number for the value
|
2021-11-16 23:52:54 +01:00 |
|
Irmen de Jong
|
c858ceeb58
|
compiler shouldn't use cx16.r15 as temp var
|
2021-11-14 02:38:59 +01:00 |
|
Irmen de Jong
|
f0f52b9166
|
optimize typecasted binary expression to avoid even more estack use. also fix wrong parent crash in removal of unused variable's assignments.
|
2021-11-13 14:22:37 +01:00 |
|
Irmen de Jong
|
3483515346
|
preparing for more optimizations
|
2021-11-12 23:23:51 +01:00 |
|
Irmen de Jong
|
75a06d2a40
|
preparing for more optimizations
|
2021-11-12 02:17:37 +01:00 |
|
Irmen de Jong
|
53ac11983b
|
better unused variable removal
|
2021-11-11 03:03:21 +01:00 |
|
Irmen de Jong
|
b909facfe5
|
fix compiler stackoverflow crash on certain typecasted expressions containing floats.
|
2021-11-09 19:31:19 +01:00 |
|
Irmen de Jong
|
7780d94de1
|
discovered crash related to float typecasting in asm assignment codegen
|
2021-11-09 03:45:07 +01:00 |
|
Irmen de Jong
|
4937e004b5
|
fix compiler crash where it used wrong datatype in split assignment
fixes crash for "ubyte bb ;; uword ww ;; bb = not bb or not ww"
|
2021-11-09 01:13:23 +01:00 |
|
Irmen de Jong
|
7961a09d16
|
converting compiler module's testcases to kotest assertions
|
2021-11-08 16:14:22 +01:00 |
|
Irmen de Jong
|
613efcacc7
|
converting compiler module's testcases to kotest (ongoing)
|
2021-11-08 15:08:48 +01:00 |
|
Irmen de Jong
|
7e287a5359
|
proper parent node linkage in generated const values out of typecast expressions. Fixes crash mentioned in #72
|
2021-11-02 00:47:01 +01:00 |
|
Irmen de Jong
|
3767b4bbe7
|
'Program' is not an ast Node
|
2021-10-30 00:25:34 +02:00 |
|
Irmen de Jong
|
9684f4e42a
|
add unit tests for AnonScope refactoring, cleaned up imports
|
2021-10-27 00:05:46 +02:00 |
|
Irmen de Jong
|
440abf4998
|
fix test to recognise inserted return statements
|
2021-10-20 22:50:18 +02:00 |
|
Irmen de Jong
|
df2d5c6585
|
tests for callgraph and unused subroutine removal in optimizer
|
2021-10-20 22:24:10 +02:00 |
|