Irmen de Jong
cecf49b8e3
IR: attempt to optimize negative comparisons by using direct status flag branches instead
2026-03-29 01:23:24 +01:00
Irmen de Jong
7666b72fea
implement missing codegen for returning multivalue result of a subroutine call
2026-03-28 23:38:52 +01:00
Irmen de Jong
400149d5a3
standardize gradle project configurations across submodules
2026-03-28 10:08:47 +01:00
Irmen de Jong
d6ed40af36
SymbolTable improvements
2026-03-28 04:14:26 +01:00
Irmen de Jong
04b9f8e749
cleanups
2026-03-28 00:48:29 +01:00
Irmen de Jong
68226a8fcd
Update Kotlin and dependencies to latest versions
...
- Bump Kotlin to 2.3.20 across all configurations.
- Upgrade `kotlin-result-jvm` to 2.3.1 in all modules.
- Update Gradle wrapper to 9.4.0.
- Add `poweroff_system()` function in virtual target symboldump
2026-03-25 17:51:01 +01:00
Irmen de Jong
4294658d71
fix IR symbol lookup for deeply scoped variables
2026-03-18 23:31:39 +01:00
Irmen de Jong
0a7352de99
add disableCache option to SymbolTable to assist debugging and optimize behavior when -noopt is used
2026-03-18 23:12:48 +01:00
Irmen de Jong
d2633187a6
more work on making memory() const (6502)
2026-03-18 02:57:59 +01:00
Irmen de Jong
ca56cf26c5
more work on making memory() const (virtual target only for now)
2026-03-18 02:20:50 +01:00
Irmen de Jong
f72bec3c4a
working on making memory() accepted as constant initializer value
2026-03-17 23:14:03 +01:00
Irmen de Jong
11f187bda8
implement signed % remainder operator for virtual target
2026-03-17 03:36:38 +01:00
Irmen de Jong
e56ccdbc3a
add signed divmod() support for virtual target
2026-03-16 01:19:02 +01:00
Irmen de Jong
652da4c692
fix some (not all) problems with directly returning multivalue returncalls
2026-03-15 22:33:17 +01:00
Irmen de Jong
e61328b6d6
update Java dependency to 17, update results library version
2026-03-14 00:04:11 +01:00
Irmen de Jong
c20e5b788b
implement missing square_long routine
...
improve agents system prompt file
2026-03-13 18:21:47 +01:00
Irmen de Jong
caa991e478
IR: remove redundant add when pointer dereferencing
2026-03-08 21:31:31 +01:00
Irmen de Jong
998d1ad446
IR: storezi now also takes an immediate offset argument, optimized some code gen to utilize that offset better insteads of doing separate ADDs
2026-03-04 01:12:01 +01:00
Irmen de Jong
89e38c6d42
IR: loadfield/storefield are now just loadi/storei
2026-03-03 21:17:27 +01:00
Irmen de Jong
8911f58bd2
fix IR long comparisons (used in for loops for instance)
2026-03-01 01:45:07 +01:00
Irmen de Jong
da6e47d422
fix IR long comparisons (used in for loops for instance)
2026-03-01 01:17:22 +01:00
Irmen de Jong
bdbdf6e5cd
add lmh(longvalue) builtin function that returns the low, mid, hi (=bank) bytes of a long
...
symboldumps now also contain the builtin functions
2026-02-23 21:30:39 +01:00
Irmen de Jong
9736ac19d1
implementing multiple return values for builtin functions
2026-02-22 19:54:21 +01:00
Irmen de Jong
093be9f2dd
sys.push(), sys.pop() etc etc are now builtin functions again push() pop() to avoid storing value in temporary variables
...
this means that all of the syslib.p8 library files no longer contain all those stack related asmsubs
2026-02-21 02:11:34 +01:00
Irmen de Jong
2613d45cd5
swap() is now a statement instead of a builtin function call
2026-02-17 20:56:21 +01:00
Irmen de Jong
07be7f0154
fix long argument @R0R1 register usage in regular subroutines
2026-02-15 14:54:47 +01:00
Irmen de Jong
b2983e912d
swap longs now uses R14+R15 as temporary storage instead of R0+R1
2026-01-25 17:02:47 +01:00
Irmen de Jong
10ae42ed59
suggest import for undefined block symbols, update github links
2026-01-25 05:45:33 +01:00
Irmen de Jong
5d5ad8a70e
fix void/nonvoid assign target issue
2026-01-24 01:11:30 +01:00
Irmen de Jong
2e0db6f211
add swap() builtin for optimized value swaps without the need for a temporary variable
2026-01-23 23:17:10 +01:00
Irmen de Jong
8c4944d703
optimized long and float copying through pointers
2026-01-12 00:19:21 +01:00
Irmen de Jong
5cd175d54f
optimize successive additions/subtractions and multiplications (with const) into just a single add/sub, mul
...
optimize var = simpleexpression | var += expression --> var = simpleexpression + expression (for any augmented operator)
2026-01-11 01:30:04 +01:00
Irmen de Jong
5c7ac0efb7
IR: remove broken loadi/storei optimization
2026-01-10 22:23:01 +01:00
Irmen de Jong
34b228cfca
fix peek/poke error with const offset
2026-01-10 20:58:16 +01:00
Irmen de Jong
2b26952044
better error
2026-01-10 19:06:59 +01:00
Irmen de Jong
13cd68ba96
IR: fix LOADI.f peephole optimization
2026-01-09 03:49:55 +01:00
Irmen de Jong
f69b293b7f
optimized some more cases of poke and peek
2026-01-09 02:57:12 +01:00
Irmen de Jong
bbfb2eb367
optimized longvar = lptr^^
2026-01-07 23:30:35 +01:00
Irmen de Jong
652b585ea4
code style
2026-01-07 00:48:45 +01:00
Irmen de Jong
bc4470aeda
remove bsb() again - too confusing?
2026-01-06 22:39:04 +01:00
Irmen de Jong
97dade3655
fix setmsb() on long types
2026-01-06 22:11:58 +01:00
Irmen de Jong
54f23387d0
added bsb(long) builtin function that returns the bank byte of the long value (bits 16-23)
2026-01-06 20:56:03 +01:00
Irmen de Jong
51503e054a
IR: improve use of loadfield for msb/lsb of struct fields
2026-01-02 22:10:10 +01:00
Irmen de Jong
18ba25d6a4
IR: optimize double ADD/SUB
2026-01-02 20:24:35 +01:00
Irmen de Jong
2c2de8bfb3
fix IR peephole optimizer index off by 1 error and make SSA blocks configurable (still defaults to yes in this version)
2025-12-30 18:58:42 +01:00
Irmen de Jong
cc0425a2c4
detect circular aliases, also fix error message for aliased function call with wrong number of args
2025-12-26 15:04:55 +01:00
Irmen de Jong
1e3ae2cb1d
IR: just use loadhay to get the result from CALLI
2025-12-23 19:07:51 +01:00
Irmen de Jong
946def4613
IR: fix call() / CALLI return value handling
2025-12-23 00:39:14 +01:00
Irmen de Jong
0217d05c68
IR: loadfield/storefield now accept offsets up to 65535
2025-12-16 14:56:11 +01:00
Irmen de Jong
8553f3c9f1
IR: loadfield is a better name
2025-12-16 12:57:45 +01:00