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
|
d6393cdbe5
|
'-vm' option now also reads .p8ir files
|
2022-09-20 12:14:33 +02:00 |
|
Irmen de Jong
|
ab00822764
|
move IR optimizer to IR Codegen module
|
2022-09-19 19:41:43 +02:00 |
|
Irmen de Jong
|
b4352ad38b
|
refactor IR codegen into separate module
|
2022-09-19 19:24:24 +02:00 |
|
Irmen de Jong
|
d07d00fa41
|
Join codeAst and codeCore modules
|
2022-09-19 17:28:18 +02:00 |
|
Irmen de Jong
|
627ed51a1b
|
IR: mem mapped vars and memory slabs
|
2022-09-19 15:20:40 +02:00 |
|
Irmen de Jong
|
3091e3a1c8
|
IR support for instructions operating on cpu regs
|
2022-09-18 01:51:04 +02:00 |
|
Irmen de Jong
|
0e831d4b92
|
fix superfluous usage of addressOf()
|
2022-09-16 00:31:04 +02:00 |
|
Irmen de Jong
|
7294ec9a3c
|
working on address-of
|
2022-09-15 22:44:33 +02:00 |
|
Irmen de Jong
|
e34bab9585
|
change syntax of address-of in p8virt code to &X, instead of {X}
|
2022-09-13 23:28:52 +02:00 |
|
Irmen de Jong
|
aacea3e9db
|
incbin in IR
|
2022-09-13 23:06:05 +02:00 |
|
Irmen de Jong
|
6886b61186
|
also output inline asm chunks
|
2022-09-13 23:06:05 +02:00 |
|
Irmen de Jong
|
3c315703c0
|
making IR file reader
|
2022-09-13 23:06:05 +02:00 |
|
Irmen de Jong
|
101b33c381
|
split intermediate representation into separate module
|
2022-09-13 23:06:05 +02:00 |
|
Irmen de Jong
|
a182b13e5a
|
fixup for memoryslabs
|
2022-09-13 23:06:05 +02:00 |
|
Irmen de Jong
|
fc0a0105b3
|
move memoryslab administration from allocator to symboltable
|
2022-08-21 19:48:56 +02:00 |
|
Irmen de Jong
|
6b41734d6a
|
check memory() calls before entering codegen
|
2022-08-21 19:02:34 +02:00 |
|
Irmen de Jong
|
40aa733ea7
|
clearer name
|
2022-08-15 20:55:35 +02:00 |
|
Irmen de Jong
|
2d34fdd28f
|
in a block marked option force_output, make all subroutines in asm use .block rather than .proc
this fixes some obscure assembly issues where subroutines were omitted from the output program by 64tass
|
2022-08-10 21:28:40 +02:00 |
|
Irmen de Jong
|
ac1bd2fb7b
|
virtual: properly output "memmapped" variables too
still as regular variables though
|
2022-08-08 20:42:17 +02:00 |
|
Irmen de Jong
|
e560e2ab3f
|
vm instructions now contain info on input/output registers
|
2022-08-07 18:49:16 +02:00 |
|
Irmen de Jong
|
1e441c2ddf
|
tweak vm codegen
|
2022-08-07 13:45:03 +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
|
00b717cde8
|
tweak
|
2022-08-04 18:35:10 +02:00 |
|
Irmen de Jong
|
046dceb5c2
|
added optimized case for signed division by 2
|
2022-07-24 13:59:35 +02:00 |
|
Irmen de Jong
|
dcc1f00048
|
fix rounding errors in signed divide by power-of-two
The optimized bit-shifting division is removed (for now)
|
2022-07-24 12:34:55 +02:00 |
|
Irmen de Jong
|
f2d27403c5
|
add string.endswith() to efficiently test for a suffix without copying
add string.startswith() to efficiently test for string prefix without copying
|
2022-07-21 00:38:30 +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
|
a07c52e112
|
conv.any2uword / conf.hex2uword can now deal with iso lower and upper case letters as well.
|
2022-07-17 02:39:40 +02:00 |
|
Irmen de Jong
|
feb5c8be95
|
vm: some more peephole optimizations
|
2022-07-12 19:04:19 +02:00 |
|
Irmen de Jong
|
ff1fc28287
|
added immediate value vm logical instructions because these are so common
|
2022-07-12 16:12:32 +02:00 |
|
Irmen de Jong
|
314398ba4c
|
added immediate value vm arithmetic instructions because these are so common
|
2022-07-12 15:21:26 +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
|
41f4e22a17
|
introduce BOOL type
|
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
|
beea6bc794
|
about bool
|
2022-07-04 20:26:03 +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
|
f675dbc726
|
vm var allocator now also recognises the memory-mapped variables. no longer crashes
|
2022-06-30 22:09:49 +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
|
bb1cda0916
|
fix: boolean values of terms in logical expressions are now properly evaluated
|
2022-06-26 23:55:34 +02:00 |
|
Irmen de Jong
|
69f3106062
|
first vm peephole optimizer
|
2022-06-22 00:21:06 +02:00 |
|
Irmen de Jong
|
cc174b7b85
|
added boolean() builtin function and use it to get rid of !=0 comparisons
|
2022-06-14 23:34:45 +02:00 |
|
Irmen de Jong
|
5a756aaed9
|
Pipe expression "|>" removed from the language
|
2022-06-12 18:41:42 +02:00 |
|
Irmen de Jong
|
c6e92ecac4
|
some code cleanup
|
2022-06-12 16:15:08 +02:00 |
|
Irmen de Jong
|
710f27afa9
|
bump library versions
|
2022-06-09 22:44:17 +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 |
|