Irmen de Jong
3831679772
VarDecl: make its origin explicit
2022-01-10 01:53:03 +01:00
Irmen de Jong
124befe9d6
slightly optimized code for assigning boolean expressions such as `b = xx>99
`
2022-01-09 18:49:44 +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
50c16fe6de
code size optimization: don't copy floats with inlined copy code but use copy_float routine
2022-01-09 16:18:13 +01:00
Irmen de Jong
a9b45630d7
optimized code for variable comparisons to zero
2022-01-09 13:10:01 +01:00
Irmen de Jong
c1a39c269e
optimized code for stack eval comparisons with zero
2022-01-09 03:19:49 +01:00
Irmen de Jong
9e5e3d1559
pipe expression not evaluated via stack
2022-01-08 17:51:23 +01:00
Irmen de Jong
7135205299
fix codegen bug for pipe expressions to actually return correct value and not corrupt X register
2022-01-08 17:41:46 +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
75d857027e
cleanup of Pipe codegen
2022-01-08 01:33:40 +01:00
Irmen de Jong
749ad700d8
naming consistency for some expression classes
2022-01-07 21:02:55 +01:00
Irmen de Jong
8f3df3039a
added pipe operator `|>
`
2022-01-06 22:54:18 +01:00
Irmen de Jong
c57ef7725e
preparing v7.6
2022-01-04 20:40:35 +01:00
Irmen de Jong
96225efd96
library doc tweaks
2022-01-03 23:15:34 +01:00
Irmen de Jong
74257163b1
fix that memory("name", ...) also allocates a STR variable for the name
2022-01-02 17:07:04 +01:00
Irmen de Jong
7bc75fd220
fix that memory("a b c", ...) produces invalid symbol
2022-01-02 16:11:53 +01:00
Irmen de Jong
a23281afab
added experimental -noreinit option
2022-01-01 16:35:36 +01:00
Irmen de Jong
c15a75556d
Merge branch 'master' into c128target
...
# Conflicts:
# compiler/src/prog8/CompilerMain.kt
# examples/test.p8
2021-12-30 18:22:05 +01:00
Irmen de Jong
b62183adcb
slightly optimized binexpr evaluation for ==/!= in some cases
2021-12-30 02:00:36 +01:00
Irmen de Jong
5d2dec1803
added missing codegen for augmented ==/!=
2021-12-30 01:34:10 +01:00
Irmen de Jong
4a98dab948
fix compiler warnings
2021-12-30 00:58:33 +01:00
Irmen de Jong
9f8c70b326
fix warning about testing multiple values
2021-12-30 00:49:36 +01:00
Irmen de Jong
4be3d63c0e
slight optimization of if-in
2021-12-29 18:13:43 +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
7a9e5afb93
fix: for loop over array literal no longer crashes the compiler
2021-12-28 17:51:38 +01:00
Irmen de Jong
b2876b0a03
add a suggestion to use when statement if it seems appropriate
2021-12-28 16:38:12 +01:00
Irmen de Jong
7b54aa0c7d
more consistent naming of the statement classes
2021-12-28 13:56:47 +01:00
Irmen de Jong
c55fdd9834
removed special code generation for while and util expression (replaced by jumps)
...
also added exhaustive parent node checker in validation step
2021-12-27 02:04:28 +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
4da4f96669
lower code: break -> goto after (simplifies codegen)
2021-12-25 22:30:38 +01:00
Irmen de Jong
d4153da8b9
setup float routine addresses for c128
2021-12-25 02:34:52 +01:00
Irmen de Jong
8fa84de28e
fix c128 clearscreen and bdmusic sound issue
2021-12-22 22:59:36 +01:00
Irmen de Jong
3e3da38de1
correctly disable charset switching
2021-12-22 21:47:41 +01:00
Irmen de Jong
cabf1e82e8
some shadow registers added to make uppercase()/lowercase() work
2021-12-22 21:20:34 +01:00
Irmen de Jong
6da83e2bd7
first steps to add C128 compiler target
2021-12-21 19:08:33 +01:00
Irmen de Jong
e051e09c1d
trim down number of warnings a bit
2021-12-17 20:21:14 +01:00
Irmen de Jong
77c2b2b326
fix position of @shared in array var declarations so that the order is now type[] @shared
2021-12-16 20:36:05 +01:00
Irmen de Jong
3cf9b9d9a5
code size optimization: subroutine calls with 2 byte arg will pass it via A/Y registers instead of separate param assignments at every call site
2021-12-16 01:48:22 +01:00
Irmen de Jong
629117e594
code size optimization: subroutine calls with 1 int arg will pass it via register instead of separate param assignment at every call site
2021-12-16 00:56:59 +01:00
Irmen de Jong
08f87c321f
fixed capitalization of operator sets to be consistent with other sets names
2021-12-15 23:43:14 +01:00
Irmen de Jong
1ff13723fe
implicit int to float conversion is now an error if floats are not enabled.
2021-12-15 01:52:28 +01:00
Irmen de Jong
510bda1b28
fix compiler crash when using floats in a comparison expression
2021-12-15 01:24:25 +01:00
Irmen de Jong
890327b381
the returnvalue of the diskio.load() function family now is just the last load address+1 (like kernal's LOAD routine).
...
This fixes the inconsistent attempt to calculate a size, just let the caller do this if required.
Added a small helper function in cx16diskio to do this for loads that span multiple banks.
2021-12-14 23:54:42 +01:00
Irmen de Jong
b21f7411dd
fix compiler crash when trying to concatenate string var and string literal.
2021-12-14 23:07:46 +01:00
Irmen de Jong
1e9d249f71
fixed output of float values in cmp instructions
2021-12-13 00:17:59 +01:00
Irmen de Jong
a7b5949e6a
fix compiler crash when using a gosub/subroutinecall in a branch statement
2021-12-11 15:11:16 +01:00
Irmen de Jong
02010170ce
fix compiler crash when attempting to call a non-function
2021-12-11 13:20:13 +01:00
Irmen de Jong
35998142fe
version 7.5
2021-12-10 20:18:17 +01:00
Irmen de Jong
33061aaa0d
fix: allow scoped variables such as cx16.rX as loop variable in forloops
2021-12-10 14:59:04 +01:00
Irmen de Jong
e342311bef
fix wrong code for inplace modification of a pointervariable's memory value
2021-12-10 14:48:53 +01:00