Irmen de Jong
272a1001a8
fix bad optimization of floats.pop/push call
2024-10-18 21:04:18 +02:00
Irmen de Jong
ce7d094adb
Zig-like "defer" to clean up stuff when leaving the scope of the current routine.
2024-10-18 01:30:20 +02:00
Irmen de Jong
38ef394e15
IR codegen: global vars with numeric initialization value are now also put into the VARIABLESWITHINIT section rather than requiring explicit code instructions to initialize them in INITGLOBALS.
...
Note that something similar, such as putting those variables inline in the program initialized with their value and all, cannot be done for the 6502 codegen: the program needs a mechanism to reset ALL variables when it runs a second time.
2024-10-16 22:15:51 +02:00
Irmen de Jong
e9edffa9f0
remove support for array-to-array assignments (other than initialization of variable declaration)
...
Just use an explicit sys.memcopy(src, dest, sizeof(dest)) or assign array members individually.
2024-10-13 20:02:43 +02:00
Irmen de Jong
aef211e5f3
stricter array literal element type handling (number,bool,address-of).
...
More consistent implicit address-of handling if array literals contain by-ref identifiers (such as subroutine names)
2024-10-13 17:46:41 +02:00
Irmen de Jong
8d9bc2f5ff
fixing all sorts of things about assigning arrays to arrays
2024-10-12 12:33:46 +02:00
Irmen de Jong
eaa22a9d13
added callfar2() builtin function that allows to set A,X,Y and Carry arguments.
2024-10-08 21:36:04 +02:00
Irmen de Jong
e83d0ee820
fix crash in msb() when assigning to word again. Fix wrong register in lsb() and msb() in certain situations.
2024-10-02 02:40:16 +02:00
Irmen de Jong
3cf39e072e
fix C64 floating point sign issue
2024-09-30 21:56:34 +02:00
Irmen de Jong
a064ade1e0
better codegen for call() function
2024-09-29 23:18:51 +02:00
Irmen de Jong
df35aa7942
added (experimental) compression library
2024-09-29 18:59:53 +02:00
Irmen de Jong
cd49c5f88d
cx16: set rom bank to 0 at startup (for faster kernal API calls)
...
cx16: callfar() with constant address generates shorter asm
2024-09-28 20:58:29 +02:00
Irmen de Jong
1541ad2160
fix variable init order mistake in program startup
...
reset multiply bit at end of verafx.muls
2024-09-28 19:17:45 +02:00
Irmen de Jong
3f630ab1b0
RAW output now also properly initializes variables
2024-09-27 18:46:03 +02:00
Irmen de Jong
04cb684fd4
tweak program start initialization and fix cleanup at exit for atari and pet compiler targets
2024-09-27 02:14:54 +02:00
Irmen de Jong
d3e4481112
fix asm optimizer bug where it erroneously discarded rts
with a label
2024-09-22 21:41:41 +02:00
Irmen de Jong
2954f5f04d
Add clear_screen and set_screen_mode to gfx_lores. Fix boolean draw vs color param in some monogfx routines. Elaborate some docs.
2024-09-17 22:19:47 +02:00
Irmen de Jong
c7b1e8d772
fixed a variable scopedname issue where it took the fully scoped name instead of just the local name
...
this made 64tass not strip out that code if it was unused
2024-09-14 23:17:26 +02:00
Irmen de Jong
5986dcdd2f
add new containment check codegen for IR
2024-09-12 22:04:20 +02:00
Irmen de Jong
255c5bfaca
improve containment check for few values
2024-09-11 03:24:30 +02:00
Irmen de Jong
8eaf884f69
improve codegen for for loops downto 0,1 when start value is not const
2024-09-10 23:54:44 +02:00
Irmen de Jong
699a2bb7ab
improved codegen for for loops downto 0
2024-09-10 21:33:57 +02:00
Irmen de Jong
4e98fb75d6
support assigning multiple return flags from asmsub in 6502 codegen
2024-09-09 22:56:40 +02:00
Irmen de Jong
edc5a5a94f
improve data driven unit tests to use kotest withData()
2024-09-08 16:55:08 +02:00
Irmen de Jong
2396f707c6
fix bug in codegen for certain array lookups using word typed index value (i.e. via a pointer variable)
2024-09-06 18:11:41 +02:00
Irmen de Jong
29dd758302
Fix compiler crash in for loops with just 1 iteration
2024-09-05 21:26:46 +02:00
Irmen de Jong
2c2ae64194
replace java Stack by kotlin ArrayDeque
2024-09-02 00:15:28 +02:00
Irmen de Jong
bdeac74cfc
removed the -nostrictbool compiler option
...
boolean types and bytes are no longer implicitly interchangeable using this option
2024-09-01 20:53:39 +02:00
Irmen de Jong
b70ce0015c
fix missing opportunities to use TSB instruction
2024-07-24 22:51:49 +02:00
Irmen de Jong
c67f877857
Codegen: use BIT instruction for memory location bit 7 and 6 tests (use N and V flags)
2024-07-24 19:26:54 +02:00
Irmen de Jong
4c98070b3c
optimize shifts by 1 by inlining it better
2024-07-21 22:08:41 +02:00
Irmen de Jong
3681d6ee1c
optimize division by powers of 2 better (into bit shifts)
2024-07-21 21:34:38 +02:00
Irmen de Jong
0af17cdc33
todo's for division optimizations
2024-07-21 20:32:03 +02:00
Irmen de Jong
d18f2a7bfd
improved codegen for some pointer+index expressions
2024-07-18 23:41:34 +02:00
Irmen de Jong
9046fe8d3a
ringbuffer and pointer optimization todo
2024-07-16 22:59:31 +02:00
Irmen de Jong
78c7ee247a
generate 65c02 TSB/TRB instructions in certain cases
2024-07-16 00:36:00 +02:00
Irmen de Jong
484677b4b1
Get rid of any() and all() builtin functions.
...
Replaced by regular subroutines in the anyall module.
2024-07-06 18:49:03 +02:00
Irmen de Jong
25f25a8767
Get rid of sort() and reverse() builtin functions.
...
Sort() had too many gotchas and reverse() is kinda redundant you can loop in decreasing order through an array too.
2024-07-06 17:07:58 +02:00
Irmen de Jong
43c55b58d2
fix register overwriting for certain subroutine call parameter combinations. Fixes #136
2024-07-02 23:26:34 +02:00
Irmen de Jong
ead8aa7800
asm optimization: bxx+jmp -> opposite bxx
2024-06-29 17:22:57 +02:00
Irmen de Jong
7a9dd1ac9b
optimize trivial 65c02 stack instructions
2024-06-29 15:42:40 +02:00
Irmen de Jong
1c97c22eff
optimize simple word and byte addition/subtraction better
2024-06-29 14:33:42 +02:00
Irmen de Jong
4f8aaf9244
some tweaks and todos
2024-06-26 21:22:40 +02:00
Irmen de Jong
034f27a8dd
added queens example, update kotest lib
2024-06-19 23:57:43 +02:00
Irmen de Jong
c9a4235669
update to kotlin 2.0, fix several code style issues
2024-06-04 01:00:46 +02:00
Irmen de Jong
d3dcd24b4d
add profiler script
2024-05-29 00:56:31 +02:00
Irmen de Jong
fd1e6796ef
correct branch instruction, fixes #137
2024-05-24 20:54:40 +02:00
Irmen de Jong
0dc50a93a4
added @nozp variable flag
2024-05-21 21:53:58 +02:00
Irmen de Jong
c719e274d5
java version tweaks
2024-05-18 20:25:44 +02:00
Irmen de Jong
6e8a89e6f1
optimize const word repeat setup
2024-05-18 16:30:27 +02:00
Irmen de Jong
aa2437cfb8
fix invalid repeat loop when iterations is already in register Y
2024-05-18 15:09:56 +02:00
Irmen de Jong
4a710ecdfc
cleanups
2024-05-17 18:48:04 +02:00
Irmen de Jong
7915dda35f
update libraries
2024-05-12 03:02:54 +02:00
Irmen de Jong
a7247f5b8b
fix boolean expression optimization bug
2024-04-12 21:56:25 +02:00
Irmen de Jong
5d7ddebcad
fix bool to uword cast in 6502 codegen
2024-04-11 00:34:53 +02:00
Irmen de Jong
53df0eb707
cleanups
2024-04-10 22:04:03 +02:00
Irmen de Jong
66a6659a6e
cbm.STOP2() and cbm.GETIN2() convenience routines
2024-04-06 02:16:21 +02:00
Irmen de Jong
88ae3daa42
Merge branch 'refs/heads/master' into multi-assign
...
# Conflicts:
# examples/test.p8
2024-04-06 00:14:41 +02:00
Irmen de Jong
08b8fe01ab
added missing cmp #0 after func()==0
...
cx16: diskio.fastmode() now returns success boolean
2024-04-06 00:04:54 +02:00
Irmen de Jong
98acff802f
better checking for number of return values
...
assignment optimization if return register already is the same as the assignment target
2024-04-04 23:47:33 +02:00
Irmen de Jong
34f3169dda
tweak library routines for multiple return values.
...
cbm:
MEMTOP changed (now also returns nr of banks in A)
STOP2 removed (just use STOP)
RDTIM_safe() added TEST IRQ ENABLE
RDTIM16 changed (internally) TEST IRQ ENABLE
cx16:
screen_mode changed (now also returns width and height in X,Y)
kbdbuf_peek2 removed (just use kbdbuf_peek)
joystick_get changed (presence now returned as bool in Y)
joystick_get2 removed (just use joystick_get)
mouse_pos changed (now properly returns x and y position in R0 and R1)
set_led_brightness changed into set_led_state, with only a boolean on/off argument. There is no variable brightness.
sys.set_leds_brightness() removed. Use cx16.set_led_brightness().
2024-04-04 01:39:19 +02:00
Irmen de Jong
641f6c05d8
allow 'void' as dummy assign target in multi-assignment statements
2024-03-31 23:43:26 +02:00
Irmen de Jong
3e34a3ef72
allow multi-assign to skip any status register result
2024-03-29 23:10:08 +01:00
Irmen de Jong
9a27505315
6502 codegen for multi-assigns
2024-03-25 22:17:31 +01:00
Irmen de Jong
66e7c51064
IR: fix some things related to asmsubs
2024-03-22 21:49:01 +01:00
Irmen de Jong
1fc79ff6dd
implement the missing in-place array operators for split word arrays and numeric operand
2024-03-13 21:16:49 +01:00
Irmen de Jong
820541e427
fixed and optimized pointervar indexed in-place operations
2024-03-11 23:27:48 +01:00
Irmen de Jong
80f39e8097
Merge branch 'booleans'
...
# Conflicts:
# compiler/res/prog8lib/cx16/monogfx.p8
# compiler/res/prog8lib/virtual/monogfx.p8
# compiler/src/prog8/compiler/astprocessing/BoolRemover.kt
# compiler/test/TestTypecasts.kt
# docs/source/todo.rst
# examples/cx16/highresbitmap.p8
# examples/test.p8
# httpCompilerService/src/prog8/http/TestHttp.kt
2024-03-11 01:00:48 +01:00
Irmen de Jong
fc0fae8caf
tweak the redundant beq asm optimizer a bit more
2024-03-09 00:05:06 +01:00
Irmen de Jong
04f7b772a3
lib updates, removed unused and obsolete http and dbus modules
2024-03-05 23:42:35 +01:00
Irmen de Jong
9f1bd2d7d6
asmoptimizer that removes redundant branches on boolean in A
2024-03-05 20:37:15 +01:00
Irmen de Jong
9826d7c494
optimize certain boolean comparisons more
2024-03-05 03:09:53 +01:00
Irmen de Jong
e55cde2a81
more nonstrictbool conversions
2024-03-03 19:43:48 +01:00
Irmen de Jong
da1620807f
fixed all todos in ifelse gen
2024-03-03 12:10:42 +01:00
Irmen de Jong
f39ef8f565
optimize byte comparison assignment to use rol trick instead of branching
2024-03-03 00:01:14 +01:00
Irmen de Jong
fe8b6e820c
getting rid of problematic fallback (infinite recursion)
2024-03-02 23:19:55 +01:00
Irmen de Jong
f29d24e96a
fixup split words array comparisons
2024-03-02 23:19:55 +01:00
Irmen de Jong
620ffe54ec
asm optimizer: don't remove labels. remove redundant cmp/cpx/cpy instructions.
2024-03-02 23:19:53 +01:00
Irmen de Jong
ceaa4cd07d
array issue
2024-03-02 23:19:39 +01:00
Irmen de Jong
af17f903ee
fix that if not fcall() wasn't transformed to a conditional branch instruction
2024-03-02 23:19:39 +01:00
Irmen de Jong
dba0846866
optimize word >, word <=
2024-03-02 23:19:39 +01:00
Irmen de Jong
bed629998a
fix large code for some compares
2024-03-02 23:19:39 +01:00
Irmen de Jong
bc2ede76bf
tweak to byte compares
2024-03-02 23:19:39 +01:00
Irmen de Jong
2a1fec2ed2
fix codegen error for comparisons
2024-03-02 23:19:39 +01:00
Irmen de Jong
b941d6f1e4
new comparison tests
2024-03-02 23:19:39 +01:00
Irmen de Jong
37b346740b
fix 6502 casting uword and float to bool
2024-03-02 23:19:39 +01:00
Irmen de Jong
f5e332daf7
remove redundant IR instructions like SNZ
2024-03-02 23:19:39 +01:00
Irmen de Jong
fe9a9fc5cb
new if tests
2024-03-02 23:19:39 +01:00
Irmen de Jong
a1574a7187
added txt.print_bool, several fixes
2024-03-02 23:19:39 +01:00
Irmen de Jong
006713fe13
optimize boolean to ubyte assignment (skip type cast)
2024-03-02 23:19:39 +01:00
Irmen de Jong
7868e672e0
ifelse more
2024-03-02 23:19:39 +01:00
Irmen de Jong
e1a133c2c0
ifelse more
2024-03-02 23:19:39 +01:00
Irmen de Jong
c77cd0da39
ifelse more
2024-03-02 23:19:39 +01:00
Irmen de Jong
577333f2c4
new ifelse codegen
2024-03-02 23:19:39 +01:00
Irmen de Jong
7d8cdcbfea
more bool fixes and optimizations in codegen
2024-03-02 23:19:39 +01:00
Irmen de Jong
c5c4c6f111
start of new ifelse
2024-03-02 23:19:39 +01:00
Irmen de Jong
acd841dbb6
bool changes in 6502 assignment codegen
2024-03-02 23:19:37 +01:00
Irmen de Jong
6b52ba9397
6502 asmgen
2024-03-02 23:19:20 +01:00
Irmen de Jong
41afeccd51
compiler stuff
2024-03-02 23:19:20 +01:00
Irmen de Jong
bc2b38daf4
added PtBool and other changes to intermediate Ast
2024-03-02 23:19:20 +01:00