Irmen de Jong
|
c59df6ec20
|
optimize isZpVar
|
2023-02-16 00:41:20 +01:00 |
|
Irmen de Jong
|
5c3f41f64d
|
reintroduce explicit PtAugmentedAssign ast node
|
2023-02-15 22:54:32 +01:00 |
|
Irmen de Jong
|
cf3523f49f
|
Merge branch 'codegen-on-new-ast'
|
2023-02-14 22:48:11 +01:00 |
|
Irmen de Jong
|
db794752cb
|
fix ast error on inline sub
|
2023-02-14 22:37:33 +01:00 |
|
Irmen de Jong
|
bceaebe856
|
fix crash on sort/reverse unused arrays
fixes #95
|
2023-02-14 00:26:29 +01:00 |
|
Irmen de Jong
|
0cbc56b82e
|
remove unused ast print func
|
2023-02-13 00:19:48 +01:00 |
|
Irmen de Jong
|
b95608f68a
|
new common ICodeGeneratorBackend interface for all code generator classes
|
2023-02-12 23:52:54 +01:00 |
|
Irmen de Jong
|
b6e5dbd06c
|
optimized away VarDecl.subroutineParameter
|
2023-02-12 23:19:35 +01:00 |
|
Irmen de Jong
|
75d486b124
|
fix variable node casting
|
2023-02-12 17:04:58 +01:00 |
|
Irmen de Jong
|
4914609485
|
local varnames and fix uninitialized parents
|
2023-02-12 16:00:58 +01:00 |
|
Irmen de Jong
|
75bd66326a
|
fix variable zpwish
|
2023-02-11 15:18:57 +01:00 |
|
Irmen de Jong
|
30d20a453b
|
tweak SymbolTable and fix its unittest
|
2023-02-09 22:58:21 +01:00 |
|
Irmen de Jong
|
6aabbffc62
|
some cleanups
|
2023-02-09 02:34:18 +01:00 |
|
Irmen de Jong
|
f117805129
|
order
|
2023-02-05 12:36:32 +01:00 |
|
Irmen de Jong
|
c75b1581d2
|
lookup via new ST
|
2023-02-05 01:15:23 +01:00 |
|
Irmen de Jong
|
201b77d5b6
|
boolean vs byte cast fixing, and pointervar error
|
2023-02-02 00:57:20 +01:00 |
|
Irmen de Jong
|
0f5cd22bb7
|
more codegen fixes
|
2023-01-31 22:57:26 +01:00 |
|
Irmen de Jong
|
2f5bed36b3
|
remove bool to ubyte typecasts
|
2023-01-31 01:25:44 +01:00 |
|
Irmen de Jong
|
5b6534bb28
|
fix symbol lookup in new ast and minor codegen errors
|
2023-01-31 00:18:21 +01:00 |
|
Irmen de Jong
|
07d5fafe2e
|
Merge branch 'master' into codegen-on-new-ast
# Conflicts:
# compiler/src/prog8/compiler/astprocessing/IntermediateAstMaker.kt
|
2023-01-29 13:34:00 +01:00 |
|
Irmen de Jong
|
e08da659e5
|
got rid of PtScopeVarsDecls node, just insert variable nodes directly
|
2023-01-29 13:25:15 +01:00 |
|
Irmen de Jong
|
3f3b01b5f6
|
Merge branch 'master' into codegen-on-new-ast
|
2023-01-26 01:40:30 +01:00 |
|
Irmen de Jong
|
19a2791c65
|
vm target can't use asmsub at all, give better error for that
|
2023-01-26 01:38:13 +01:00 |
|
Irmen de Jong
|
117d848466
|
consolidate builtin function definitions into codeCore
|
2023-01-25 00:23:00 +01:00 |
|
Irmen de Jong
|
b2cb125bd4
|
more 6502 codegen on new Pt-AST.
|
2023-01-22 17:10:52 +01:00 |
|
Irmen de Jong
|
32c1c19224
|
tweak sys.wait() routines on various targets
add warning to docs about FP usage in IRQ
|
2023-01-20 03:29:10 +01:00 |
|
Irmen de Jong
|
3718b9d768
|
less joins
|
2023-01-02 02:10:38 +01:00 |
|
Irmen de Jong
|
c25eb088ec
|
redo 8e730ef93d to avoid larger code generated
|
2023-01-01 23:43:33 +01:00 |
|
Irmen de Jong
|
3feb3e52f8
|
optimizing scoped names in zeropage
|
2022-12-31 03:57:51 +01:00 |
|
Irmen de Jong
|
8e730ef93d
|
optimizing scoped names more and fix scoping of identifier names in arrays (pointers) in SymbolTable
|
2022-12-31 03:20:20 +01:00 |
|
Irmen de Jong
|
e0913a39ab
|
optimizing
|
2022-12-30 18:50:45 +01:00 |
|
Irmen de Jong
|
7a27fbc001
|
add params for future changes
|
2022-12-30 17:43:55 +01:00 |
|
Irmen de Jong
|
002006517a
|
rewrite bool=bool^1 into bool=not bool
|
2022-12-29 19:42:38 +01:00 |
|
Irmen de Jong
|
81bd5c784e
|
don't remove consecutive assigns to IO space location
|
2022-12-24 18:01:54 +01:00 |
|
Irmen de Jong
|
1860f66de5
|
allow "x not in array" as equivalent to "not x in array"
update antlr parsing lib
|
2022-12-23 17:59:56 +01:00 |
|
Irmen de Jong
|
ded9ada9bc
|
allow "not xx in array" expression in 6502 codegen
fix compiler crash on certain bool to byte casts
|
2022-12-23 17:07:34 +01:00 |
|
Irmen de Jong
|
d0e6a2eb8b
|
fix compiler crash on hoisting certain vardecls from inner scopes
|
2022-12-22 18:49:53 +01:00 |
|
Irmen de Jong
|
def7e87151
|
fixed silly if-goto expression code in IR codegen where it used too many branching instructions
|
2022-12-12 22:47:15 +01:00 |
|
Irmen de Jong
|
d1d0115aed
|
removed unused option 'keepIR'
|
2022-12-09 18:44:44 +01:00 |
|
Irmen de Jong
|
bf0604133c
|
fix error in IR for inline asm and BSS vars.
|
2022-12-04 16:48:44 +01:00 |
|
Irmen de Jong
|
a82b2da16e
|
Fix some FP related assignment issues in 6502 codegen.
|
2022-12-04 13:03:38 +01:00 |
|
Irmen de Jong
|
17bedac96c
|
vm: memory is randomized on start instead of 0. P8ir file now has BSS segment. Vm clears BSS vars to 0.
|
2022-12-03 17:46:06 +01:00 |
|
Irmen de Jong
|
5e896cf582
|
preparing to add Golden RAM
|
2022-12-03 00:21:31 +01:00 |
|
Irmen de Jong
|
f470576822
|
it's now possible to use symbols that are the same name as 6502 instructions
because these are now prefixed internally before generating assembly.
|
2022-11-30 18:39:56 +01:00 |
|
Irmen de Jong
|
b8fb391022
|
- ir codegen now allows subroutine having the same name as its block
this is not possible for the 6502 codegen due to 64tass scoping limitation
|
2022-11-28 21:54:33 +01:00 |
|
Irmen de Jong
|
ec64a68a71
|
fixed compiler crash: unsigned = (-(unsigned as word) as uword)
|
2022-11-27 17:25:47 +01:00 |
|
Irmen de Jong
|
d8409a9d2b
|
fix compiler crash: if uwordvar > label
|
2022-11-26 14:39:03 +01:00 |
|
Irmen de Jong
|
e2f20ebf94
|
fix crash on empty conditional branch statement (if_cc { } )
|
2022-11-23 02:14:48 +01:00 |
|
Irmen de Jong
|
f870e4965a
|
added cx16diskio.f_seek() function to seek to a position in an opened file
f_open uses channel 12 now, f_open_w uses 13
|
2022-11-23 01:48:04 +01:00 |
|
Irmen de Jong
|
d8e87bd881
|
make uword xx = 1<<shift into a word shifting
|
2022-11-16 01:39:34 +01:00 |
|
Irmen de Jong
|
f4f355c74a
|
added cx16/diskspeed example
|
2022-11-14 17:55:55 +01:00 |
|
Irmen de Jong
|
e6688f4b9d
|
clearer error for VM limitation cannot load label address as value
|
2022-11-12 13:45:02 +01:00 |
|
Irmen de Jong
|
9d7b9771c2
|
p8ir file format is now valid XML
|
2022-11-11 23:35:52 +01:00 |
|
Irmen de Jong
|
e67c05c274
|
ir: fix asmsub contents not appearing in IR file
|
2022-11-02 20:50:51 +01:00 |
|
Irmen de Jong
|
b22804efaf
|
ir: fix inlineasm linking
|
2022-10-31 23:59:33 +01:00 |
|
Irmen de Jong
|
5b6569d0f9
|
ir: fix overwriting chunk label
|
2022-10-30 19:03:02 +01:00 |
|
Irmen de Jong
|
0eda7ac498
|
vm: don't crash on empty code chunks
|
2022-10-30 17:05:08 +01:00 |
|
Irmen de Jong
|
a5ef353484
|
ir: fix memory mapped var as for loop counter
|
2022-10-30 14:54:47 +01:00 |
|
Irmen de Jong
|
67a36d8d31
|
more robust 'return' statement checks in subroutines
|
2022-10-30 14:41:28 +01:00 |
|
Irmen de Jong
|
7cc3cc3990
|
ir: fix non-code chunk linkage
|
2022-10-30 12:55:06 +01:00 |
|
Irmen de Jong
|
5b35232ab4
|
fix "fpReg1 out of bounds" crash for vm target for in-place float array assignment. #85
|
2022-10-29 17:04:39 +02:00 |
|
Irmen de Jong
|
434515d957
|
fix: array[x] = ~array[x] no longer crashes the codegen
|
2022-10-27 23:56:38 +02:00 |
|
Irmen de Jong
|
094f7803b7
|
fix: array[x] = -array[x] no longer crashes the codegen
|
2022-10-27 23:20:40 +02:00 |
|
Irmen de Jong
|
b0c7bad391
|
fix: array[x] = -value no longer crashes the codegen
|
2022-10-27 21:58:37 +02:00 |
|
Irmen de Jong
|
8f9d1cfa30
|
fix regression: indexing pointer variable with word (>255) didn't work anymore since release 8.2 or so
|
2022-10-24 23:43:47 +02:00 |
|
Irmen de Jong
|
0d7b14e2d8
|
fix crash when assigning certain memory read to word variable. Fixes #82
|
2022-10-23 11:57:23 +02:00 |
|
Irmen de Jong
|
e94bf4c63c
|
replace rnd()/rndw() builtin functions by regular routines in math module
|
2022-10-22 17:02:43 +02:00 |
|
Irmen de Jong
|
7b722a0001
|
ir: fix count register uses
|
2022-10-04 00:25:55 +02:00 |
|
Irmen de Jong
|
5a8f97a0b6
|
ir: adding last missing features to be able to encode all of Prog8
|
2022-09-30 16:01:00 +02:00 |
|
Irmen de Jong
|
0d4dd385b8
|
added '%ir' to write inline IR code, '%asm' is now only for real 6502 assembly.
(%ir is probably only used in the library modules for the virtual machine target)
|
2022-09-30 15:12:26 +02:00 |
|
Irmen de Jong
|
7c1bdfe713
|
ir: uninitialized vars remain empty, bss section classifier (unused for now as there are no segements yet)
|
2022-09-28 16:56:50 +02:00 |
|
Irmen de Jong
|
06cf2e0bd7
|
vm: fix memory slabs (bsieve example)
|
2022-09-27 16:32:44 +02:00 |
|
Irmen de Jong
|
db1aa8fcbd
|
vm: new translation of IRProgram into vm program list
|
2022-09-27 01:50:00 +02:00 |
|
Irmen de Jong
|
0da117efd2
|
vm: get rid of .p8virt file and cruft
|
2022-09-26 19:28:40 +02:00 |
|
Irmen de Jong
|
1d65d63bd9
|
ir: making sure all names are scoped properly. textelite now runs in vm
|
2022-09-25 18:02:35 +02:00 |
|
Irmen de Jong
|
dda19c29fe
|
vm: fix symbols to be case sensitive properly in p8virt assembler
|
2022-09-25 15:51:50 +02:00 |
|
Irmen de Jong
|
ca41669f4f
|
vm: fix scoped name in address-of inside array
|
2022-09-24 18:26:35 +02:00 |
|
Irmen de Jong
|
0e1886e6bd
|
vm: fix nested label prefixing
|
2022-09-24 16:00:25 +02:00 |
|
Irmen de Jong
|
c26e116f0e
|
vm: fix crashes when array contains pointers/strings
|
2022-09-24 14:42:07 +02:00 |
|
Irmen de Jong
|
ca2fb6cef3
|
IR no longer depends on VM syscalls but has its own syscall list for the few builtin functions that still require it
|
2022-09-23 14:27:51 +02:00 |
|
Irmen de Jong
|
fb22f78fb3
|
added '-keepIR' option to save the IR file if it's generated.
|
2022-09-20 12:30:22 +02:00 |
|
Irmen de Jong
|
f37a822725
|
move
|
2022-08-14 13:17:03 +02:00 |
|
Irmen de Jong
|
d8e18df3a1
|
added c64 starfield example
|
2022-08-14 12:02:23 +02:00 |
|
Irmen de Jong
|
b6eef3612f
|
added some ported bench8 test programs
|
2022-08-12 22:08:27 +02:00 |
|
Irmen de Jong
|
4b7b1379d9
|
also binexpr split on and,or,xor if appropriate
|
2022-08-08 00:09:18 +02:00 |
|
Irmen de Jong
|
93ce74eeb1
|
removed problematic expression "simplifications" (that introduced arbitrary r9 temp register usage)
|
2022-08-07 12:26:11 +02:00 |
|
Irmen de Jong
|
f718f4251b
|
working on better encoding of romsub in new ast/vmtarget
|
2022-08-07 12:21:10 +02:00 |
|
Irmen de Jong
|
4644c9b621
|
got rid of GoSub ast node and codegen complexity related to that.
sometimes programs get smaller, sometimes bigger.
|
2022-08-07 03:24:20 +02:00 |
|
Irmen de Jong
|
90ddec2ad8
|
avoid multiple change events in watch mode
added bsieve example
|
2022-07-31 11:58:27 +02:00 |
|
Irmen de Jong
|
f531daa872
|
on C64, the cx16.r0...cx16.r15 virtual regs are now in zeropage as well when using kernalsafe or full
|
2022-07-28 19:13:33 +02:00 |
|
Irmen de Jong
|
05f935b598
|
simplify & fix recursion detector
|
2022-07-22 22:22:43 +02:00 |
|
Irmen de Jong
|
7d4695c5b2
|
cx16: graphics module y resolution corrected from 200 to 240. added 'cx16/circles' example.
|
2022-07-17 18:59:52 +02:00 |
|
Irmen de Jong
|
5189eaca36
|
move the vm unit tests to codeGenVirtual module and remove virtualmachine dependency in the compiler module
|
2022-07-17 12:56:22 +02:00 |
|
Irmen de Jong
|
cfb31377fc
|
c64 zeropage: added a few more locations to Kernalsafe free list that should be safe
this makes $02-$21 inclusive, available for use later (x16 virtual registers are placed here on x16...)
|
2022-07-17 12:12:47 +02:00 |
|
Irmen de Jong
|
8e1071aa89
|
fix compiler crashes: txt.chrout("a"), uword[] a = ["ls", subroutine] without & before subroutine.
|
2022-07-15 23:17:03 +02:00 |
|
Irmen de Jong
|
4bc65e9ef7
|
fix stack crash in cx16.push_vera_context()
|
2022-07-14 16:33:09 +02:00 |
|
Irmen de Jong
|
2d600da8b6
|
fix codegen crash on certain nested typecast
|
2022-07-13 22:24:31 +02:00 |
|
Irmen de Jong
|
feb5c8be95
|
vm: some more peephole optimizations
|
2022-07-12 19:04:19 +02:00 |
|
Irmen de Jong
|
edf12bec71
|
improve bool params typecasting, fix compiler crash on abs(floatvar)
|
2022-07-12 17:52:37 +02:00 |
|
Irmen de Jong
|
840331347b
|
added a few more vm optimizations and unit tests
|
2022-07-12 12:42:37 +02:00 |
|
Irmen de Jong
|
6181b12ab8
|
added -esa option to override the evalstack location, and shift cx16.r0-r15 accordingly
|
2022-07-11 19:29:04 +02:00 |
|
Irmen de Jong
|
88cbb6913d
|
tweak bool type handling
|
2022-07-11 14:55:50 +02:00 |
|
Irmen de Jong
|
92eb3b0bf6
|
bool logical testcase
|
2022-07-09 22:29:38 +02:00 |
|
Irmen de Jong
|
97f90d9684
|
Merge branch 'master' into bool_type
|
2022-07-09 22:09:49 +02:00 |
|
Irmen de Jong
|
f91786367f
|
added maze example
|
2022-07-09 22:00:46 +02:00 |
|
Irmen de Jong
|
6a57337a68
|
improved bool type checking
|
2022-07-08 22:59:35 +02:00 |
|
Irmen de Jong
|
1dfa8ee7d8
|
add ARRAY_BOOL array type
|
2022-07-07 23:07:30 +02:00 |
|
Irmen de Jong
|
1163543a98
|
fix bool param lookup problem
|
2022-07-07 22:23:56 +02:00 |
|
Irmen de Jong
|
65daf29acd
|
fix compiler crash related to word types in certain comparison expressions
|
2022-07-07 22:23:56 +02:00 |
|
Irmen de Jong
|
298b25cf7d
|
fix compiler crash on certain typecasting assignment
|
2022-07-07 22:23:56 +02:00 |
|
Irmen de Jong
|
b41779bd02
|
added -D command line option to define symbols in the assembly file
|
2022-07-06 23:40:36 +02:00 |
|
Irmen de Jong
|
4b336b1853
|
if passing a subroutine or label name as an uword argument, without &, add the addressof automatically
|
2022-07-02 23:55:32 +02:00 |
|
Irmen de Jong
|
e1c77ce236
|
fix pop() name scoping
|
2022-07-02 23:27:08 +02:00 |
|
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
|
4b358abbb7
|
"not" operator removed from ast and codegen (it's been replaced with x==0 as equivalent)
|
2022-06-29 01:13:08 +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
|
eea09f4de5
|
fix invalid asm label sometimes generated for multiple loops in same subroutine
|
2022-06-24 02:26:45 +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
|
5a756aaed9
|
Pipe expression "|>" removed from the language
|
2022-06-12 18:41:42 +02:00 |
|
Irmen de Jong
|
3054a1d32d
|
api change: removed swap() builtin function (too complex in codegen for little used function)
|
2022-06-06 16:01:11 +02:00 |
|
Irmen de Jong
|
46ca0ac10d
|
properly optimize X - -1 and X + -1, this also fixes type change of ubyte - 2 + 10
|
2022-06-05 15:35:29 +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
|
8f1c86f550
|
fixed several old test files
|
2022-06-05 14:20:08 +02:00 |
|
Irmen de Jong
|
af2ca7a67e
|
fix problematic characters that cause path errors on Windows
|
2022-06-05 11:46:37 +02:00 |
|
Irmen de Jong
|
9e3e2ff81a
|
fix assembly generation error when pipe character is part of string literal
|
2022-06-04 22:25:51 +02:00 |
|
Irmen de Jong
|
a862a81480
|
added unit test for name shadowing warning
|
2022-06-04 21:35:48 +02:00 |
|
Irmen de Jong
|
1e61d84fd1
|
vm: fix expression codegen for pointer indexing
|
2022-06-04 19:32:35 +02:00 |
|
Irmen de Jong
|
c40cfaa388
|
preparing optimizing pointer indexing
|
2022-06-04 14:23:02 +02:00 |
|
Irmen de Jong
|
ba614801ee
|
cleanup
|
2022-05-22 23:11:22 +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
|
8c4765b386
|
vm: support non-unary functions in pipe expressions
|
2022-05-07 20:42:05 +02:00 |
|
Irmen de Jong
|
7eea97d741
|
- floats: remove all floating point builtin functions and move them to the floats module instead
|
2022-04-22 00:45:54 +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
|
3f6393f732
|
PtNumber can now be compared
|
2022-04-10 17:48:03 +02:00 |
|
Irmen de Jong
|
b6eb343234
|
moving string escaping out of antlr project
|
2022-04-10 17:31:30 +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
|
b133d51a83
|
make the parser report '&&' as an error instead of treating it as bitwise and followed by address-of.
|
2022-04-02 02:08:01 +02:00 |
|
Irmen de Jong
|
3b6e7eccdd
|
simplified containment check, only possible on string and arrays (as per the docs)
|
2022-03-27 16:59:55 +02:00 |
|
Irmen de Jong
|
3e44620966
|
add unit test for the string encoders special handling of 0x0000 and 0x8000-0x80ff
|
2022-03-25 18:26:23 +01:00 |
|
Irmen de Jong
|
27f6d47efa
|
working on vm codegen
|
2022-03-24 23:26:57 +01:00 |
|
Irmen de Jong
|
ff57c5e9d3
|
working on vm and new ast
|
2022-03-21 01:36:11 +01:00 |
|