Irmen de Jong
|
0a43eae184
|
rework registerArgsViaStackEvaluation to use cpu hardware stack instead
|
2022-02-18 22:38:00 +01:00 |
|
Irmen de Jong
|
3117e2b2a3
|
more tweaks
|
2022-02-18 01:25:08 +01:00 |
|
Irmen de Jong
|
7aa807ec7f
|
proper error if attempting to do a containment check against non const range, and some cleanup in asmgen
|
2022-02-16 00:39:19 +01:00 |
|
Irmen de Jong
|
4d16e1e14a
|
now checks for invalid text encodings for given compilation target
|
2022-02-15 01:39:12 +01:00 |
|
Irmen de Jong
|
73fc18099e
|
properly report duplicate label names
|
2022-02-15 00:39:10 +01:00 |
|
Irmen de Jong
|
2725c4ad4d
|
slight tweaks to zp and allocator
|
2022-02-12 00:15:52 +01:00 |
|
Irmen de Jong
|
c8cd6e9460
|
removed old @"screencodes" string encoding syntax (use sc:"hello" instead)
|
2022-02-11 22:07:14 +01:00 |
|
Irmen de Jong
|
0cd27d6129
|
fix empty lines in subroutine ast printing
|
2022-02-11 21:44:38 +01:00 |
|
Irmen de Jong
|
c13b7fd883
|
report free/occupied Zeropage space at end of compilation
|
2022-02-10 21:59:44 +01:00 |
|
Irmen de Jong
|
41b1c80492
|
label name from memory() no longer interned as string var
|
2022-02-10 00:45:20 +01:00 |
|
Irmen de Jong
|
e5d7316e5d
|
streamlining non-zpvars asmgen using new mechanism
|
2022-02-10 00:09:09 +01:00 |
|
Irmen de Jong
|
b043c3a6da
|
streamlining vars asmgen using new mechanism
|
2022-02-09 21:58:25 +01:00 |
|
Irmen de Jong
|
98b2855b9c
|
cleanups
|
2022-02-09 16:35:52 +01:00 |
|
Irmen de Jong
|
f3c52c409f
|
variable zp allocation now only done in the allocator
|
2022-02-08 23:44:21 +01:00 |
|
Irmen de Jong
|
8c2e6971fc
|
start using vars instead of callgraph (2)
|
2022-02-08 21:09:00 +01:00 |
|
Irmen de Jong
|
1903990f30
|
start using vars instead of callgraph
|
2022-02-08 20:40:10 +01:00 |
|
Irmen de Jong
|
7d67005709
|
more rewrite variable allocation
|
2022-02-08 20:40:10 +01:00 |
|
Irmen de Jong
|
6bdd81623f
|
cleaning up AsmGen interface
|
2022-02-06 17:07:03 +01:00 |
|
Irmen de Jong
|
8ae3bad6f7
|
fix rts in empty asmsub
|
2022-02-06 05:05:58 +01:00 |
|
Irmen de Jong
|
77de99b383
|
rts-check for non-inlined subroutines + var init adjustment when noreinit, moved out of codegen
|
2022-02-06 04:03:03 +01:00 |
|
Irmen de Jong
|
312949f336
|
added experimental codegen backend option
|
2022-02-05 21:42:03 +01:00 |
|
Irmen de Jong
|
30e1c3307c
|
simplify SourceCode: just read the full text immediately. Also optimized imports.
|
2022-02-05 03:50:54 +01:00 |
|
Irmen de Jong
|
08e052380a
|
comments
|
2022-02-05 03:14:26 +01:00 |
|
Irmen de Jong
|
548374ac2d
|
fix: do proper sign exension when multiplying signed word and byte vars
|
2022-02-05 01:52:13 +01:00 |
|
Irmen de Jong
|
69b9dfa468
|
fix invalid recursion warning for code referencing subroutine but not via a call
|
2022-02-01 23:09:52 +01:00 |
|
Irmen de Jong
|
5c8c64242f
|
callgraph: nameInAssemblyCode searches smarter (for unused())
|
2022-02-01 00:33:05 +01:00 |
|
Irmen de Jong
|
f965804e6d
|
fix invalid optimization of returning a parameter variable in a subroutine
|
2022-01-28 16:44:42 +01:00 |
|
Irmen de Jong
|
ec078eba72
|
optimize w=msb(w) => w>>=8, w=lsb(w) ==> w&=$00ff
|
2022-01-28 16:11:52 +01:00 |
|
Irmen de Jong
|
7b3cd71085
|
fixed improper optimization of word<<8 and word>>8
|
2022-01-28 13:54:06 +01:00 |
|
Irmen de Jong
|
06128b5d07
|
optimize word&=$ff00 and word&=$00ff
|
2022-01-28 13:40:28 +01:00 |
|
Irmen de Jong
|
5ecf2a3357
|
enable more optimizations for typecasted assignments. Fixed missing codegen for assigning bytes to words in certain cases.
|
2022-01-27 18:05:25 +01:00 |
|
Irmen de Jong
|
e2b8c069d7
|
check for missing '&' in string + value expressions (can't just add a value to a string)
|
2022-01-24 23:30:40 +01:00 |
|
Irmen de Jong
|
08db72903c
|
for long containment checks use a subroutine instead of huge cmp-table
|
2022-01-24 22:40:22 +01:00 |
|
Irmen de Jong
|
46f9fab140
|
library API change: string.find now returns index of character + carry bit status (instead of substring address)
|
2022-01-24 21:37:04 +01:00 |
|
Irmen de Jong
|
b7d06f2c0a
|
API change: added alignment parameter to memory() function
|
2022-01-24 18:58:57 +01:00 |
|
Irmen de Jong
|
586ce1fc80
|
tweak return's use of intermediate variable
|
2022-01-24 01:10:04 +01:00 |
|
Irmen de Jong
|
adb979df38
|
tweak comment
|
2022-01-23 22:34:05 +01:00 |
|
Irmen de Jong
|
3401cb5b4a
|
fixed compiler recursion crash when returning certain typecasted value
|
2022-01-23 19:13:20 +01:00 |
|
Irmen de Jong
|
5766208207
|
fix compiler crash when initializing an array var with another array var
|
2022-01-23 14:23:34 +01:00 |
|
Irmen de Jong
|
4bf4771f08
|
fix @requirezp in astToSource. Fix sometimes allocating zeropage variables in normal ram.
|
2022-01-23 13:42:52 +01:00 |
|
Irmen de Jong
|
0e87db9eb7
|
fix invalid size copied when initializing arrays in Zeropage
|
2022-01-23 13:00:01 +01:00 |
|
Irmen de Jong
|
1e053783f3
|
fix invalid size copied when assigning non-byte arrays
|
2022-01-23 02:42:36 +01:00 |
|
Irmen de Jong
|
7afc96112b
|
now correctly requires using & (address-of) when assigning the address of a label or subroutine, used to generate invalid code when it was omitted
|
2022-01-23 02:23:30 +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
|
3d1b0eb843
|
fixed compiler crash when using cx16.r0H as function call argument
|
2022-01-23 01:28:16 +01:00 |
|
Irmen de Jong
|
9219ec539d
|
allow "goto pointervar" for indirect jumps
|
2022-01-21 22:55:59 +01:00 |
|
Irmen de Jong
|
c8bd57cd4d
|
fixed signature of mouse_get(): it returns the buttonstatus in A. Added convenience cx16.mouse_pos() routine.
|
2022-01-21 22:06:17 +01:00 |
|
Irmen de Jong
|
9ed7587e3e
|
document new string encoding syntax
|
2022-01-19 21:21:33 +01:00 |
|
Irmen de Jong
|
3b59592110
|
generalize string encoding flag into enum
|
2022-01-18 21:21:49 +01:00 |
|
Irmen de Jong
|
72640ae058
|
no longer add nops around breakpoint for vice
|
2022-01-17 22:12:58 +01:00 |
|
Irmen de Jong
|
d916027e75
|
labels no longer start with '_' fixes #62
|
2022-01-17 22:03:53 +01:00 |
|
Irmen de Jong
|
b3368acb33
|
todos to fix broken examples
|
2022-01-16 17:57:47 +01:00 |
|
Irmen de Jong
|
a3b5c2ad71
|
fix zp address output and adjust vars datastructure
|
2022-01-16 17:20:36 +01:00 |
|
Irmen de Jong
|
fb4c1473c5
|
array and string initialization in zeropage
|
2022-01-16 17:20:36 +01:00 |
|
Irmen de Jong
|
641477d6f6
|
add @requirezp and allow str/array to be on zp (with warning)
|
2022-01-16 17:20:32 +01:00 |
|
Irmen de Jong
|
8e56656c8d
|
fix broken code generated for certain ==/!= expressions
|
2022-01-16 17:10:49 +01:00 |
|
Irmen de Jong
|
c58b8a4973
|
fix ast to source: @shared wasn't printed
fix grammar: @shared and @zp can occur in any order now in vardecl
|
2022-01-13 02:29:55 +01:00 |
|
Irmen de Jong
|
e425c4cca8
|
optimizing pipe codegen
|
2022-01-11 23:17:35 +01:00 |
|
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 |
|