Irmen de Jong
89cc7e5fa9
finalize short-circuit eval in IR codegen
2023-12-30 04:26:29 +01:00
Irmen de Jong
8f18b5b8a7
keep distinction between logical and bitwise boolean operators
2023-12-30 01:08:42 +01:00
Irmen de Jong
f790182f0b
adding short-circuit boolean expression evaluation (in IR codegen) also -noshortcircuit cli option
2023-12-30 01:08:41 +01:00
Irmen de Jong
9c1b11d605
some WARN messages are now INFO
2023-12-28 14:20:47 +01:00
Irmen de Jong
2b8f613a00
added %option ignore_unused to suppress warnings about unused vars and subs in that module/block.
...
Also improved error for invalid directive.
2023-12-26 23:37:59 +01:00
Irmen de Jong
2eb137618e
refactor block options
2023-12-26 22:13:08 +01:00
Irmen de Jong
0d44492086
push,pushw,pop and popw are no longer built-in functions but regular routines in sys
2023-12-26 14:47:31 +01:00
Irmen de Jong
4cd9bb8f99
allow Python-style negative array indexing to count from the end
2023-12-23 16:37:28 +01:00
Irmen de Jong
ad9eaeafeb
call
now returns a word value
2023-12-22 22:24:11 +01:00
Irmen de Jong
6bc079c7b7
more asm symbol prefixing: variables with p8v_, subroutines with p8s_ etc
...
labels with p8l_ . All this to avoid symbol clashes in the generated assembly code.
Everything got its own distinguishing prefix so we're done with it once and for all and have only 1 breaking change moment.
2023-12-20 22:20:59 +01:00
Irmen de Jong
ae66fcac1e
added call
builtin function for indirect JSR
2023-12-17 15:45:28 +01:00
Irmen de Jong
eba0bde6f3
Merge branch 'optimize-st'
...
# Conflicts:
# examples/test.p8
2023-12-17 02:11:01 +01:00
Irmen de Jong
b24df31c2b
IR: fix codegen for routines returning in CPU Status register flag
2023-12-14 21:16:14 +01:00
Irmen de Jong
01c2112881
remove PtJump label, just use identifier with dummy
2023-12-13 04:16:49 +01:00
Irmen de Jong
f97b3f23e2
optimize symbol table for IR
2023-12-12 19:26:27 +01:00
Irmen de Jong
8e4319cd5a
module directive %encoding to set the text encoding for that whole file (iso, petscii, etc.)
2023-12-06 23:54:08 +01:00
Irmen de Jong
5a776dd690
improve KotlinJavaRuntime library ref
2023-12-06 22:52:39 +01:00
Irmen de Jong
cce08d95db
unused subroutine warning only for main compilation module
2023-12-06 21:48:56 +01:00
Irmen de Jong
172e78e8f2
ir: ignore empty chunks instead of crashing
2023-12-01 22:49:20 +01:00
Irmen de Jong
ae2d96c455
added peekf
and pokef
builtin functions. Fixed sizeof() to allow number argument as well.
2023-11-27 23:36:02 +01:00
Irmen de Jong
9ef9c24388
IR: optimize redundant labels
2023-11-25 01:10:17 +01:00
Irmen de Jong
935450a45f
update kotest library
2023-11-22 18:40:07 +01:00
Irmen de Jong
af5ca2d0b8
vm: treat floats as 64 bits doubles. 0.0 printed as "0".
2023-11-21 00:57:56 +01:00
Irmen de Jong
161c02ced3
message
2023-11-17 00:37:12 +01:00
Irmen de Jong
ff8de8e42d
removing redundant compares
2023-11-16 22:56:19 +01:00
Irmen de Jong
76c09da961
make pokemon() be like poke, but also return the old value in the memory location.
2023-11-09 22:48:44 +01:00
Irmen de Jong
f68b46fc60
add a %zpallowed option to specify the range of zeropage register that can be used
2023-11-03 00:19:25 +01:00
Irmen de Jong
513611c5a6
IR: using EXT more
2023-10-29 02:57:21 +01:00
Irmen de Jong
92374e122b
IR: optimize concat with msb 0 into ext
2023-10-28 12:53:41 +02:00
Irmen de Jong
13ab4166c0
new kotest library version
2023-10-19 21:57:06 +02:00
Irmen de Jong
a48ce35f0b
added %option verafxmuls
2023-10-05 22:06:33 +02:00
Irmen de Jong
1da0c59182
vm: remove BNER opcode -> CMP + BSTNE
2023-09-23 11:47:24 +02:00
Irmen de Jong
36e8f10d2b
vm: remove BEQR opcode -> CMP + BSTEQ
2023-09-23 11:42:58 +02:00
Irmen de Jong
cdf5a8f20f
vm: remove BNE opcode -> CMPI + BSTNE
2023-09-23 11:22:33 +02:00
Irmen de Jong
eb64d92333
vm: remove BEQ opcode -> CMPI + BSTEQ
2023-09-23 11:21:43 +02:00
Irmen de Jong
eb55da63ef
weird
2023-09-23 11:21:17 +02:00
Irmen de Jong
229c1114dd
vm: fixed array initialization values with address-ofs
2023-09-19 23:54:18 +02:00
Irmen de Jong
c319233ddc
ir: added preparecall 'meta' instruction for functioncalls
2023-09-18 23:22:03 +02:00
Irmen de Jong
880c0a5da8
allow taking address of array element
2023-09-18 04:37:41 +02:00
Irmen de Jong
ccf6e32bf9
adding setlsb() and setmsb() builtin functions to 6502 codegen
2023-09-17 15:16:47 +02:00
Irmen de Jong
a1874f6f00
adding setlsb() and setmsb() builtin functions to 6502 codegen
2023-09-17 01:48:29 +02:00
Irmen de Jong
95e4490a8a
adding setlsb() and setmsb() builtin functions
2023-09-15 02:39:16 +02:00
Irmen de Jong
6afdd4e6fd
preparing next version
2023-09-12 21:53:49 +02:00
Irmen de Jong
bde4be8231
fix VM indexed instructions to only use lsb part of the index
2023-09-06 02:44:04 +02:00
Irmen de Jong
2c9e50873c
use math.square for optimized X*X calculation (words only).
...
Added IR SQUARE instruction.
2023-08-14 01:05:17 +02:00
Irmen de Jong
5fffd35ec1
IR: fix augmented assignment operators
2023-08-11 18:24:37 +02:00
Irmen de Jong
b92e22e4a6
IR: fix for loop over range with step
2023-08-11 03:05:47 +02:00
Irmen de Jong
3e6d16a7a8
add error message for invalid step size in range expression
2023-08-11 02:35:52 +02:00
Irmen de Jong
a4d093afa1
added -sourcelines cli option to include src lines in generated assembly (which is now off by default)
2023-08-02 23:05:24 +02:00
Irmen de Jong
1ae950a638
Merge branch 'remove_evalstack'
...
# Conflicts:
# codeGenCpu6502/src/prog8/codegen/cpu6502/assignment/AssignmentAsmGen.kt
2023-07-31 21:57:43 +02:00
Irmen de Jong
9bb16e293c
vm: fix postincr/decr on indexed pointervariables
2023-07-31 19:37:30 +02:00
Irmen de Jong
c223702ea0
code cleanups
2023-07-30 18:42:45 +02:00
Irmen de Jong
a0ab0bd3e2
Merge branch 'master' into remove_evalstack
...
# Conflicts:
# examples/test.p8
2023-07-29 18:57:06 +02:00
Irmen de Jong
b89ad4b328
don't optimize empty where choice away! It would call the else clause incorrectly.
2023-07-29 18:25:52 +02:00
Irmen de Jong
7cf6aba625
Merge branch 'master' into remove_evalstack
...
# Conflicts:
# examples/test.p8
2023-07-22 23:37:20 +02:00
Irmen de Jong
c7d54570cc
IR: sXX, CONCAT instructions now use 3 register format
2023-07-21 00:07:56 +02:00
Irmen de Jong
9f247901d4
Merge branch 'master' into remove_evalstack
...
# Conflicts:
# codeGenCpu6502/src/prog8/codegen/cpu6502/BuiltinFunctionsAsmGen.kt
# codeGenCpu6502/src/prog8/codegen/cpu6502/assignment/AssignmentAsmGen.kt
# compiler/src/prog8/buildversion/BuildVersion.kt
# examples/test.p8
2023-07-16 23:45:04 +02:00
Irmen de Jong
c1aa5d4e47
IR: optimized when statement translation
2023-07-16 12:10:46 +02:00
Irmen de Jong
e2bb0de24d
clean up X register save/store in compiler code, remove temp vars for register saving
2023-07-15 22:25:58 +02:00
Irmen de Jong
84925ab69c
remove eval stack options
2023-07-15 22:24:19 +02:00
Irmen de Jong
6938c79f88
IR: added CMPI instruction
2023-07-14 23:17:29 +02:00
Irmen de Jong
795f80b4ec
fix forloop 6502 codegen in case of descending word values
2023-07-11 00:33:12 +02:00
Irmen de Jong
6055b8c3dc
IR: fix forloop codegen for steps != 1
2023-07-10 21:36:44 +02:00
Irmen de Jong
5037033fcf
ir: EXT and EXTS opcodes now have 2 registers to avoid type clash
2023-07-08 22:42:11 +02:00
Irmen de Jong
071a80360f
ir: fix some problem with comparison against zero
2023-07-07 21:17:28 +02:00
Irmen de Jong
d2154f5f2e
remove empty when choices, fixes ir compilation error on those
2023-07-07 20:34:24 +02:00
Irmen de Jong
334d382bfa
ir: JUMPI instruction added to support indirect jumps
2023-07-07 19:10:39 +02:00
Irmen de Jong
90c4b00f74
ir: fix any() all() reverse() sort() on memory mapped arrays and on byte arrays
2023-07-07 17:25:32 +02:00
Irmen de Jong
71261525e8
fix containment check on memory mapped arrays
2023-07-07 17:07:34 +02:00
Irmen de Jong
3126959576
ir: several fixes
2023-07-07 16:53:32 +02:00
Irmen de Jong
02e51d8282
ir: fix initial chunk linking
2023-07-07 00:30:56 +02:00
Irmen de Jong
70c9ab9074
upgrade libraries
2023-07-06 23:33:58 +02:00
Irmen de Jong
204f5591a9
todos
2023-07-03 21:57:32 +02:00
Irmen de Jong
bdf8aa9168
get rid of newexpr compiler option
2023-07-02 15:26:04 +02:00
Irmen de Jong
bb95484c8a
uniform symbol prefixing with p8_
2023-07-02 06:15:09 +02:00
Irmen de Jong
cad18b8a3a
uniform symbol prefixing with p8_
2023-07-02 06:15:02 +02:00
Irmen de Jong
d3f6415387
vm: fix repeat 256
2023-07-02 02:38:35 +02:00
Irmen de Jong
eae41de27d
improve errors generated for undefined symbols
2023-06-25 15:19:51 +02:00
Irmen de Jong
04e4e71f2e
uword == str is now possible (sugar for string.compare)
2023-06-22 00:20:30 +02:00
Irmen de Jong
2a96f93919
vm: fix compiler error when dealing with label
2023-06-14 22:14:47 +02:00
Irmen de Jong
a521982576
fix subroutine inline problem with strings
2023-06-09 21:45:05 +02:00
Irmen de Jong
380f557c45
vm: implement split incr/decr
2023-06-03 22:22:13 +02:00
Irmen de Jong
bfaad1388c
IR: handle split arrays without new custom opcodes
2023-06-03 01:51:02 +02:00
Irmen de Jong
b9d8ec1463
add -splitarrays command line option
2023-05-30 19:08:34 +02:00
Irmen de Jong
3ac9036c79
more split array stuff for 6502
2023-05-27 22:44:45 +02:00
Irmen de Jong
c94e292176
more split array stuff
2023-05-27 12:47:11 +02:00
Irmen de Jong
300e2fe9f8
IR: wrong attempt at optimizing register usage by reusing registers inside different code chunks
2023-05-18 21:57:21 +02:00
Irmen de Jong
91e1643627
update 3rd party libraries
2023-05-18 11:47:30 +02:00
Irmen de Jong
91421b0c62
IR handy sequence shortcut functions
2023-05-18 11:32:20 +02:00
Irmen de Jong
b43223cb7a
added clamp() builtin function and floats.clampf()
2023-05-17 23:12:58 +02:00
Irmen de Jong
85cf0e311c
Merge branch 'master' into version_9
...
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/ExpressionGen.kt
# docs/source/todo.rst
# intermediate/src/prog8/intermediate/IRInstructions.kt
2023-05-14 20:47:09 +02:00
Irmen de Jong
0e3d75cfeb
move irType() to intermediate module
2023-05-14 20:44:32 +02:00
Irmen de Jong
630c8a5faa
IR: fix romsub encoding
2023-05-14 18:08:06 +02:00
Irmen de Jong
905921a684
IR: new (sys)call instructions that encapsulate the full subroutine call
...
to fix the bugs resulting from nesting subroutine calls (as param to another call etc)
2023-05-14 15:20:25 +02:00
Irmen de Jong
1e469b3b0f
Merge branch 'master' into version_9
...
# Conflicts:
# docs/source/todo.rst
# examples/test.p8
2023-05-09 22:45:21 +02:00
Irmen de Jong
bff3c4f95c
IR now converts IRInlineAsmChunk (of type IR) into regular code chunks directly.
...
.p8ir files usually won't contain <INLINEASM> nodes any longer
2023-05-09 21:04:31 +02:00
Irmen de Jong
bd2bcb6994
Merge branch 'master' into version_9
...
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/AssignmentGen.kt
# compiler/res/prog8lib/c128/syslib.p8
# compiler/res/prog8lib/c64/syslib.p8
# compiler/res/prog8lib/cx16/syslib.p8
# docs/source/todo.rst
# examples/test.p8
# intermediate/src/prog8/intermediate/IRInstructions.kt
2023-05-08 23:17:52 +02:00
Irmen de Jong
97df33ab1a
IR: fix byte to word assignment not doing value extension
2023-05-08 22:47:00 +02:00
Irmen de Jong
add8a777d8
IR: binarydata fixes
2023-05-03 22:31:04 +02:00
Irmen de Jong
3fc49c001e
IR: fix for-loop codegen when step<0
2023-05-02 23:12:11 +02:00