Irmen de Jong
eda21a6ebf
Fix in operator on arrays larger than 255 elements
2026-10-11 02:05:21 +02:00
Irmen de Jong
c0267e37b0
added amiga_gfx module and amiga/gfxdemo example
2026-10-11 01:03:59 +02:00
Irmen de Jong
e7dfe79919
m68k: add log2, diff, lerp, interpolate, gcd and crc16/32; fix qemu68k word shifts and const-eval of log2/atan2
2026-10-10 17:49:29 +02:00
Irmen de Jong
d32b70bb75
m68k: tear down frames on external conditional branches
2026-10-08 20:50:39 +02:00
Irmen de Jong
73241b0261
m68k: tear down frames before absolute jumps
2026-10-08 20:41:35 +02:00
Irmen de Jong
70bb199e12
m68k: pop frame on jumps leaving subroutine; reject dispatch to subs with parameters
2026-10-07 23:46:48 +02:00
Irmen de Jong
b739d7b663
m68k: print call arg names in asm comments
2026-10-07 19:06:16 +02:00
Irmen de Jong
5e709fca7e
m68k: stack-frame zero-clear coalescing
2026-10-07 19:06:16 +02:00
Irmen de Jong
125af552ff
amiga: added recursive fractal-tree example
2026-10-07 19:06:16 +02:00
Irmen de Jong
29254e892b
m68k: no longer print recursion warnings
2026-10-07 19:06:16 +02:00
Irmen de Jong
bbff472457
doc cleanup
2026-10-07 19:06:16 +02:00
Irmen de Jong
353b0c84b7
slice 5 for m68k stack memory model
...
(slice 4 was skipped)
2026-10-07 19:06:16 +02:00
Irmen de Jong
329b3df4a3
slice 3 for m68k stack memory model
2026-10-07 19:06:16 +02:00
Irmen de Jong
fe90ca572d
slice 2 for m68k stack mememory model
2026-10-07 19:06:16 +02:00
Irmen de Jong
26bbd6c1fe
vertical slice prototype for m68k stack mememory model
2026-10-07 19:06:16 +02:00
Irmen de Jong
1f8b42fae5
make user docs and some code comments less convoluted
2026-10-05 20:00:32 +02:00
Irmen de Jong
38db571f20
implemented -o / --output to specify specific output file
2026-10-02 22:33:43 +02:00
Irmen de Jong
bdee93dc8f
eliminate redundant lea for repeated indexed array access
2026-09-28 21:51:03 +02:00
Irmen de Jong
ec4b47ac0d
support custom m68k targets: select the codegen by CpuType and allow a per-target link.ld
2026-09-27 11:50:33 +02:00
Irmen de Jong
4cbf93da85
fix Status flag extraction clobbers a register return value
2026-09-24 01:00:49 +02:00
Irmen de Jong
2050fcb4ee
m68k: emit struct field definitions in the asm
2026-09-23 23:55:57 +02:00
Irmen de Jong
bf696bcf5e
fix multiple status flag returns in new codegens
2026-09-23 03:10:59 +02:00
Irmen de Jong
f086918e6f
add union types: structs where every field is at offset 0, thus saving memory
2026-09-23 00:07:44 +02:00
Irmen de Jong
468850bc47
structured IR
2026-09-11 20:20:40 +02:00
Irmen de Jong
ce2b298d6f
code cleanups
2026-09-08 22:36:54 +02:00
Irmen de Jong
cf7afaf77a
update libraries, update to kotlin 2.4.20
2026-09-08 21:41:53 +02:00
Irmen de Jong
db32b81d7a
m68k: d0 caching
2026-09-06 20:32:16 +02:00
Irmen de Jong
687d86d36e
added amiga1200 target (68020 + FPU)
2026-09-06 18:25:15 +02:00
Irmen de Jong
e074fe614f
avoid extremely long array data source lines, and redundant label comments
2026-09-06 16:18:31 +02:00
Irmen de Jong
58f544fe14
Implement counted-loop IR (IRLoopChunk)
...
Replace the early lowering of constant repeat/for loops into p8_regfile
counter sequences with a first-class IRLoopChunk that carries the trip
count and body. This removes the fragile REGFILE-DEPENDENT m68k dbra
peephole and gives each backend explicit control.
2026-09-04 00:01:00 +02:00
Irmen de Jong
59c41ad129
ir: add scaled indexing (S=) to LOADX/STOREX/STOREZX
...
Remove byte-offset pre-scaling from IR generation and encode
element index + explicit scale in the IR. Effective address is
base + index*scale + disp (disp = symbolOffset).
2026-09-02 00:34:23 +02:00
Irmen de Jong
1ba08ec6ec
make -dumpvars work on all compilation targets
2026-09-01 03:51:13 +02:00
Irmen de Jong
9c53791ef4
m68k: optimize small memcopies to inline copy
2026-08-30 21:35:48 +02:00
Irmen de Jong
420a9b7249
m68k: optimize load of constant args into CPU registers for subroutine call
2026-08-30 19:20:12 +02:00
Irmen de Jong
9bf8318b1c
Support arrays of struct instances
...
- Parser: parse `StructType[N] var` via elementToArray() for
STRUCT_INSTANCE (Prog8ANTLR.g4, Antlr2KotlinVisitor)
- Desugar: struct-instance bases via addressOfStructInstance(),
whole-struct `a[i]=a[j]` -> sys.memcopy, inferred `[[...]]`
and explicit `Struct : [...]` (without ^^) for value arrays;
reject `^^Struct : [...]` in instance arrays
- 6502: computeStructArrayElementAddress() with 16-bit
index*structSize scaling (AssignmentAsmGen, AsmGen)
- IR/VM/m68k/new6502: STRUCTDEFS round-trip, loaders, gens
- AstChecker/IdentifiersChecker: reject struct fields that are
arrays of structs; fix isArray guards
- Docs: structpointers.rst/variables.rst, todo.rst, examples/test.p8
- Tests: TestArraysOfStructs (pointer vs value init, IR round-trip,
16-bit strides)
2026-08-30 18:24:14 +02:00
Irmen de Jong
94822b8662
Add arrays of struct instances (StructType[N] vars)
...
Parser: accept `Type[N] name` between type and identifier
(Prog8ANTLR.g4, Antlr2KotlinVisitor) via elementToArray()
for STRUCT_INSTANCE; CodeDesugarer: handle struct-instance
bases, addressOfStructInstance(), whole-struct memcopy
(points[a]=points[b]), and fix variable-index 16-bit scaling
in 6502 AssignmentAsmGen.computeStructArrayElementAddress();
IR: preserve STRUCTDEFS round-trip, VM loader support;
m68k/new6502/intermediate backends; docs + todo updated.
Limitations: not as struct fields (AstChecker/
AstIdentifiersChecker error) nor as sub params.
2026-08-30 14:14:49 +02:00
Irmen de Jong
93b5faa038
m68k: revert LSIGB/LSIGW direct p8_regfile loads - caused code growth
2026-08-27 19:49:21 +02:00
Irmen de Jong
f33814a594
m68k: fuse LOADX+JUMPI/CALLI in asm peephole and document %jmptable as 6502-only
2026-08-27 04:50:07 +02:00
Irmen de Jong
986ae35821
m68k: optimize LSIGB/LSIGW to direct p8_regfile byte loads
2026-08-27 03:29:56 +02:00
Irmen de Jong
250ddda11b
ir,m68k: add LOADP_INC/STOREP_INC for pointer post-inc (a0)+
2026-08-27 02:57:54 +02:00
Irmen de Jong
c657935f10
m68k: fix passing 0 in m68k address register codegen
2026-08-23 22:30:50 +02:00
Irmen de Jong
fe6850816c
m68k: restore zero-extension for ADDR/SUBR widening and byte array indices
...
this broke in d978be2f9d
2026-08-23 15:34:17 +02:00
Irmen de Jong
eff1a9fc53
m68k: loop dbra optimization
2026-08-23 14:58:44 +02:00
Irmen de Jong
1029929111
6502 optimizations
2026-08-23 04:15:47 +02:00
Irmen de Jong
ae55109a18
m68k: peepholes
2026-08-23 03:24:20 +02:00
Irmen de Jong
2ce7a63c1e
IR: resolve loadx index-width type conflicts in usedRegisters; add conversion-collapse peephole
2026-08-23 02:41:12 +02:00
Irmen de Jong
da6934ea33
m68k: prefer BSR/BRA over JSR/JMP
2026-08-23 01:09:15 +02:00
Irmen de Jong
79dd8d6b92
vm: rnd() is now identical to the xorshift algorithm of the other compilation targets
...
m68k: implemented clamp IR syscalls
new6502: implement EXTL
2026-08-22 22:29:41 +02:00
Irmen de Jong
f750caa833
68k: fix vasm parse issue with .b, .l etc symbols -> now name-mangled
2026-08-22 21:46:16 +02:00
Irmen de Jong
df659d285b
optimize imports
2026-08-18 01:28:35 +02:00