From c8a2d035503c66d56a0614c8a99a90563b3d2947 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Tue, 13 Feb 2018 04:23:44 +0100 Subject: [PATCH] Fixed register coalesce issues (Double.MIN_VALUE is unexpectedly positive). --- .../kickc/passes/Pass4ZeroPageCoalesce.java | 8 +- .../kickc/test/ref/bitmap-bresenham.asm | 46 ++- .../kickc/test/ref/bitmap-bresenham.log | 286 +++++++------- .../kickc/test/ref/bitmap-bresenham.sym | 128 +++---- .../kickc/test/ref/bitmap-plotter.asm | 16 +- .../kickc/test/ref/bitmap-plotter.log | 84 ++-- .../kickc/test/ref/bitmap-plotter.sym | 36 +- .../dk/camelot64/kickc/test/ref/constants.asm | 4 +- .../dk/camelot64/kickc/test/ref/constants.log | 26 +- .../dk/camelot64/kickc/test/ref/constants.sym | 12 +- .../camelot64/kickc/test/ref/flipper-rex2.asm | 4 +- .../camelot64/kickc/test/ref/flipper-rex2.log | 27 +- .../camelot64/kickc/test/ref/flipper-rex2.sym | 13 +- .../dk/camelot64/kickc/test/ref/halfscii.asm | 6 +- .../dk/camelot64/kickc/test/ref/halfscii.log | 31 +- .../dk/camelot64/kickc/test/ref/halfscii.sym | 11 +- .../kickc/test/ref/incrementinarray.asm | 2 +- .../kickc/test/ref/incrementinarray.log | 15 +- .../kickc/test/ref/incrementinarray.sym | 7 +- .../camelot64/kickc/test/ref/ptr-complex.asm | 4 +- .../camelot64/kickc/test/ref/ptr-complex.log | 23 +- .../camelot64/kickc/test/ref/ptr-complex.sym | 9 +- .../dk/camelot64/kickc/test/ref/ptrtest.asm | 2 +- .../dk/camelot64/kickc/test/ref/ptrtest.log | 15 +- .../dk/camelot64/kickc/test/ref/ptrtest.sym | 7 +- .../dk/camelot64/kickc/test/ref/scroll.asm | 2 +- .../dk/camelot64/kickc/test/ref/scroll.log | 15 +- .../dk/camelot64/kickc/test/ref/scroll.sym | 7 +- .../dk/camelot64/kickc/test/ref/scrollbig.asm | 2 +- .../dk/camelot64/kickc/test/ref/scrollbig.log | 15 +- .../dk/camelot64/kickc/test/ref/scrollbig.sym | 7 +- .../camelot64/kickc/test/ref/signed-words.asm | 10 +- .../camelot64/kickc/test/ref/signed-words.log | 44 +-- .../camelot64/kickc/test/ref/signed-words.sym | 19 +- .../camelot64/kickc/test/ref/sinus-basic.asm | 4 +- .../camelot64/kickc/test/ref/sinus-basic.log | 29 +- .../camelot64/kickc/test/ref/sinus-basic.sym | 9 +- .../kickc/test/ref/sinus-sprites.asm | 60 +-- .../kickc/test/ref/sinus-sprites.log | 359 +++++++++--------- .../kickc/test/ref/sinus-sprites.sym | 163 ++++---- .../kickc/test/ref/test-comparisons.asm | 4 +- .../kickc/test/ref/test-comparisons.log | 25 +- .../kickc/test/ref/test-comparisons.sym | 11 +- .../kickc/test/ref/test-division.asm | 38 +- .../kickc/test/ref/test-division.log | 223 ++++++----- .../kickc/test/ref/test-division.sym | 103 +++-- .../kickc/test/ref/test-multiply.asm | 26 +- .../kickc/test/ref/test-multiply.log | 157 ++++---- .../kickc/test/ref/test-multiply.sym | 75 ++-- .../dk/camelot64/kickc/test/ref/voronoi.asm | 4 +- .../dk/camelot64/kickc/test/ref/voronoi.log | 23 +- .../dk/camelot64/kickc/test/ref/voronoi.sym | 11 +- 52 files changed, 1067 insertions(+), 1200 deletions(-) diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4ZeroPageCoalesce.java b/src/main/java/dk/camelot64/kickc/passes/Pass4ZeroPageCoalesce.java index b3d91683c..2e6853cad 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4ZeroPageCoalesce.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4ZeroPageCoalesce.java @@ -26,13 +26,14 @@ public class Pass4ZeroPageCoalesce extends Pass2Base { } /** - * Find the best two equivalence classes that can be coalesced into one - and perform the coalescence. + * Find two equivalence classes that can be coalesced into one - and perform the coalescence. * * @param liveRangeEquivalenceClassSet The set of live range equivalence classes * @return true if any classes were coalesced. False otherwise. */ private boolean coalesce(LiveRangeEquivalenceClassSet liveRangeEquivalenceClassSet) { - double maxScore = Double.MIN_VALUE; + + double maxScore = -1.0; LiveRangeEquivalenceClass maxThis = null; LiveRangeEquivalenceClass maxOther = null; @@ -42,6 +43,9 @@ public class Pass4ZeroPageCoalesce extends Pass2Base { if(canCoalesce(thisEquivalenceClass, otherEquivalenceClass)) { double coalesceScore = getCoalesceScore(thisEquivalenceClass, otherEquivalenceClass); if(coalesceScore>maxScore) { + if(otherEquivalenceClass==null) { + throw new RuntimeException("EQC is null!"+otherEquivalenceClass); + } maxScore = coalesceScore; maxThis = thisEquivalenceClass; maxOther = otherEquivalenceClass; diff --git a/src/test/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.asm b/src/test/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.asm index 4e1ba1b58..4c06208ea 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.asm @@ -48,13 +48,11 @@ lines: { rts } line: { - .label x0 = 8 - .label x1 = $14 + .label x0 = 7 + .label x1 = $a .label y0 = 5 .label xd = 3 - .label yd = $a - .label yd_1 = 4 - .label yd_10 = 4 + .label yd = 4 lda x0 cmp x1 bcs b1 @@ -69,7 +67,7 @@ line: { tya sec sbc y0 - sta yd_1 + sta yd cmp xd bcs b3 ldx x0 @@ -134,7 +132,7 @@ line: { eor #$ff sec adc y0 - sta yd_10 + sta yd cmp xd bcs b13 ldx x1 @@ -180,9 +178,9 @@ line_ydxi: { rts } plot: { - .label _0 = $15 - .label plotter_x = $15 - .label plotter_y = $17 + .label _0 = 8 + .label plotter_x = 8 + .label plotter_y = $b lda plot_xhi,x sta plotter_x+1 lda plot_xlo,x @@ -205,12 +203,12 @@ plot: { rts } line_xdyi: { - .label _6 = $19 + .label _6 = $a .label y = 5 - .label x1 = 8 + .label x1 = 7 .label xd = 3 .label yd = 4 - .label e = 9 + .label e = 6 lda yd lsr sta e @@ -239,11 +237,11 @@ line_xdyi: { rts } line_ydxd: { - .label y = $b + .label y = 6 .label y1 = 5 - .label yd = $a + .label yd = 4 .label xd = 3 - .label e = $c + .label e = 7 lda xd lsr sta e @@ -271,12 +269,12 @@ line_ydxd: { rts } line_xdyd: { - .label _6 = $1a + .label _6 = $a .label y = 5 - .label x1 = 8 + .label x1 = 7 .label xd = 3 - .label yd = $a - .label e = $d + .label yd = 4 + .label e = 6 lda yd lsr sta e @@ -305,8 +303,8 @@ line_xdyd: { rts } init_plot_tables: { - .label _6 = $1b - .label yoffs = $e + .label _6 = 2 + .label yoffs = 8 ldy #$80 ldx #0 b1: @@ -358,8 +356,8 @@ init_plot_tables: { rts } init_screen: { - .label b = $10 - .label c = $12 + .label b = 8 + .label c = 8 lda #BITMAP diff --git a/src/test/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.log b/src/test/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.log index bd5f0bdb0..54bb3cb21 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.log @@ -5579,23 +5579,23 @@ Coalescing zero page register [ zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 Coalescing zero page register [ zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 line::yd#0 ] ] with [ zp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ] ] Coalescing zero page register [ zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 line::yd#0 line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ] ] with [ zp ZP_BYTE:46 [ line::yd#3 ] ] Coalescing zero page register [ zp ZP_WORD:49 [ plot::plotter_x#0 ] ] with [ zp ZP_WORD:53 [ plot::$0 ] ] -Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:6 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] -Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:7 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] -Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:8 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 line::x0#0 line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] -Allocated (was zp ZP_BYTE:16) zp ZP_BYTE:9 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] -Allocated (was zp ZP_BYTE:18) zp ZP_BYTE:10 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 line::yd#0 line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 line::yd#3 ] -Allocated (was zp ZP_BYTE:21) zp ZP_BYTE:11 [ line_ydxd::y#2 line_ydxd::y#7 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#3 ] -Allocated (was zp ZP_BYTE:22) zp ZP_BYTE:12 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] -Allocated (was zp ZP_BYTE:28) zp ZP_BYTE:13 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] -Allocated (was zp ZP_WORD:32) zp ZP_WORD:14 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] -Allocated (was zp ZP_WORD:34) zp ZP_WORD:16 [ init_screen::b#2 init_screen::b#1 ] -Allocated (was zp ZP_WORD:36) zp ZP_WORD:18 [ init_screen::c#2 init_screen::c#1 ] -Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:20 [ line::x1#0 ] -Allocated (was zp ZP_WORD:49) zp ZP_WORD:21 [ plot::plotter_x#0 plot::$0 ] -Allocated (was zp ZP_WORD:51) zp ZP_WORD:23 [ plot::plotter_y#0 ] -Allocated (was zp ZP_BYTE:56) zp ZP_BYTE:25 [ line_xdyi::$6 ] -Allocated (was zp ZP_BYTE:58) zp ZP_BYTE:26 [ line_xdyd::$6 ] -Allocated (was zp ZP_BYTE:60) zp ZP_BYTE:27 [ init_plot_tables::$6 ] +Coalescing zero page register [ zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] ] with [ zp ZP_BYTE:60 [ init_plot_tables::$6 ] ] +Coalescing zero page register [ zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 line::yd#1 line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 line::yd#10 ] ] with [ zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 line::yd#0 line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 line::yd#3 ] ] +Coalescing zero page register [ zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] ] with [ zp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] ] with [ zp ZP_BYTE:21 [ line_ydxd::y#2 line_ydxd::y#7 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#3 ] ] +Coalescing zero page register [ zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 line_ydxd::y#2 line_ydxd::y#7 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#3 ] ] with [ zp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] ] with [ zp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 line::x0#0 line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 line::x0#0 line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] ] with [ zp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] ] +Coalescing zero page register [ zp ZP_WORD:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] ] with [ zp ZP_WORD:34 [ init_screen::b#2 init_screen::b#1 ] ] +Coalescing zero page register [ zp ZP_WORD:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 ] ] with [ zp ZP_WORD:36 [ init_screen::c#2 init_screen::c#1 ] ] +Coalescing zero page register [ zp ZP_WORD:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 ] ] with [ zp ZP_WORD:49 [ plot::plotter_x#0 plot::$0 ] ] +Coalescing zero page register [ zp ZP_BYTE:39 [ line::x1#0 ] ] with [ zp ZP_BYTE:56 [ line_xdyi::$6 ] ] +Coalescing zero page register [ zp ZP_BYTE:39 [ line::x1#0 line_xdyi::$6 ] ] with [ zp ZP_BYTE:58 [ line_xdyd::$6 ] ] +Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:6 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 line_ydxd::y#2 line_ydxd::y#7 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#3 line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] +Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:7 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 line::x0#0 line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] +Allocated (was zp ZP_WORD:32) zp ZP_WORD:8 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#0 plot::$0 ] +Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:10 [ line::x1#0 line_xdyi::$6 line_xdyd::$6 ] +Allocated (was zp ZP_WORD:51) zp ZP_WORD:11 [ plot::plotter_y#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -5724,13 +5724,11 @@ lines: { } //SEG43 line line: { - .label x0 = 8 - .label x1 = $14 + .label x0 = 7 + .label x1 = $a .label y0 = 5 .label xd = 3 - .label yd = $a - .label yd_1 = 4 - .label yd_10 = 4 + .label yd = 4 //SEG44 [25] if((byte) line::x0#0>=(byte) line::x1#0) goto line::@1 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) -- vbuz1_ge_vbuz2_then_la1 lda x0 cmp x1 @@ -5755,9 +5753,9 @@ line: { tya sec sbc y0 - sta yd_1 + sta yd //SEG50 [29] if((byte) line::yd#1>=(byte) line::xd#1) goto line::@3 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ) -- vbuz1_ge_vbuz2_then_la1 - lda yd_1 + lda yd cmp xd bcs b3 jmp b17 @@ -5836,7 +5834,7 @@ line: { //SEG86 [48] (byte) line_xdyd::xd#0 ← (byte) line::xd#1 [ line::yd#0 line_xdyd::x#0 line_xdyd::y#0 line_xdyd::x1#0 line_xdyd::xd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::yd#0 line_xdyd::x#0 line_xdyd::y#0 line_xdyd::x1#0 line_xdyd::xd#0 ] ) // (byte) line_xdyd::xd#0 = (byte) line::xd#1 // register copy zp ZP_BYTE:3 //SEG87 [49] (byte) line_xdyd::yd#0 ← (byte) line::yd#0 [ line_xdyd::x#0 line_xdyd::y#0 line_xdyd::x1#0 line_xdyd::xd#0 line_xdyd::yd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line_xdyd::x#0 line_xdyd::y#0 line_xdyd::x1#0 line_xdyd::xd#0 line_xdyd::yd#0 ] ) - // (byte) line_xdyd::yd#0 = (byte) line::yd#0 // register copy zp ZP_BYTE:10 + // (byte) line_xdyd::yd#0 = (byte) line::yd#0 // register copy zp ZP_BYTE:4 //SEG88 [50] call line_xdyd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) //SEG89 [139] phi from line::@20 to line_xdyd [phi:line::@20->line_xdyd] line_xdyd_from_b20: @@ -5856,7 +5854,7 @@ line: { //SEG98 [53] (byte) line_ydxd::y1#0 ← (byte) line::y0#0 [ line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 ] ) // (byte) line_ydxd::y1#0 = (byte) line::y0#0 // register copy zp ZP_BYTE:5 //SEG99 [54] (byte) line_ydxd::yd#0 ← (byte) line::yd#0 [ line::xd#1 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 line_ydxd::yd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 line_ydxd::yd#0 ] ) - // (byte) line_ydxd::yd#0 = (byte) line::yd#0 // register copy zp ZP_BYTE:10 + // (byte) line_ydxd::yd#0 = (byte) line::yd#0 // register copy zp ZP_BYTE:4 //SEG100 [55] (byte) line_ydxd::xd#0 ← (byte) line::xd#1 [ line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 line_ydxd::yd#0 line_ydxd::xd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 line_ydxd::yd#0 line_ydxd::xd#0 ] ) // (byte) line_ydxd::xd#0 = (byte) line::xd#1 // register copy zp ZP_BYTE:3 //SEG101 [56] call line_ydxd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) @@ -5901,11 +5899,11 @@ line: { //SEG116 [62] (byte) line_xdyd::y#1 ← (byte) line::y1#0 [ line::x0#0 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 ] ) -- vbuz1=vbuyy sty line_xdyd.y //SEG117 [63] (byte) line_xdyd::x1#1 ← (byte) line::x0#0 [ line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 ] ) - // (byte) line_xdyd::x1#1 = (byte) line::x0#0 // register copy zp ZP_BYTE:8 + // (byte) line_xdyd::x1#1 = (byte) line::x0#0 // register copy zp ZP_BYTE:7 //SEG118 [64] (byte) line_xdyd::xd#1 ← (byte) line::xd#0 [ line::yd#3 line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 line_xdyd::xd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 line_xdyd::xd#1 ] ) // (byte) line_xdyd::xd#1 = (byte) line::xd#0 // register copy zp ZP_BYTE:3 //SEG119 [65] (byte) line_xdyd::yd#1 ← (byte) line::yd#3 [ line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 line_xdyd::xd#1 line_xdyd::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 line_xdyd::xd#1 line_xdyd::yd#1 ] ) - // (byte) line_xdyd::yd#1 = (byte) line::yd#3 // register copy zp ZP_BYTE:10 + // (byte) line_xdyd::yd#1 = (byte) line::yd#3 // register copy zp ZP_BYTE:4 //SEG120 [66] call line_xdyd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) //SEG121 [139] phi from line::@24 to line_xdyd [phi:line::@24->line_xdyd] line_xdyd_from_b24: @@ -5926,7 +5924,7 @@ line: { //SEG130 [69] (byte) line_ydxd::y1#1 ← (byte) line::y1#0 [ line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 ] ) -- vbuz1=vbuyy sty line_ydxd.y1 //SEG131 [70] (byte) line_ydxd::yd#1 ← (byte) line::yd#3 [ line::xd#0 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 line_ydxd::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 line_ydxd::yd#1 ] ) - // (byte) line_ydxd::yd#1 = (byte) line::yd#3 // register copy zp ZP_BYTE:10 + // (byte) line_ydxd::yd#1 = (byte) line::yd#3 // register copy zp ZP_BYTE:4 //SEG132 [71] (byte) line_ydxd::xd#1 ← (byte) line::xd#0 [ line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 line_ydxd::yd#1 line_ydxd::xd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 line_ydxd::yd#1 line_ydxd::xd#1 ] ) // (byte) line_ydxd::xd#1 = (byte) line::xd#0 // register copy zp ZP_BYTE:3 //SEG133 [72] call line_ydxd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) @@ -5946,9 +5944,9 @@ line: { eor #$ff sec adc y0 - sta yd_10 + sta yd //SEG142 [74] if((byte) line::yd#10>=(byte) line::xd#0) goto line::@13 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ) -- vbuz1_ge_vbuz2_then_la1 - lda yd_10 + lda yd cmp xd bcs b13 jmp b27 @@ -5959,7 +5957,7 @@ line: { //SEG145 [76] (byte) line_xdyi::y#1 ← (byte) line::y1#0 [ line::x0#0 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 ] ) -- vbuz1=vbuyy sty line_xdyi.y //SEG146 [77] (byte) line_xdyi::x1#1 ← (byte) line::x0#0 [ line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 ] ) - // (byte) line_xdyi::x1#1 = (byte) line::x0#0 // register copy zp ZP_BYTE:8 + // (byte) line_xdyi::x1#1 = (byte) line::x0#0 // register copy zp ZP_BYTE:7 //SEG147 [78] (byte) line_xdyi::xd#1 ← (byte) line::xd#0 [ line::yd#10 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 line_xdyi::xd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 line_xdyi::xd#1 ] ) // (byte) line_xdyi::xd#1 = (byte) line::xd#0 // register copy zp ZP_BYTE:3 //SEG148 [79] (byte) line_xdyi::yd#1 ← (byte) line::yd#10 [ line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 line_xdyi::xd#1 line_xdyi::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 line_xdyi::xd#1 line_xdyi::yd#1 ] ) @@ -6073,9 +6071,9 @@ line_ydxi: { } //SEG197 plot plot: { - .label _0 = $15 - .label plotter_x = $15 - .label plotter_y = $17 + .label _0 = 8 + .label plotter_x = 8 + .label plotter_y = $b //SEG198 [103] (word) plot::plotter_x#0 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[256]) plot_xlo#0 + (byte) plot::x#4) [ plot::x#4 plot::y#4 plot::plotter_x#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:114 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:114 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:129 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:129 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:144 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:144 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] ) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda plot_xhi,x sta plotter_x+1 @@ -6109,12 +6107,12 @@ plot: { } //SEG205 line_xdyi line_xdyi: { - .label _6 = $19 + .label _6 = $a .label y = 5 - .label x1 = 8 + .label x1 = 7 .label xd = 3 .label yd = 4 - .label e = 9 + .label e = 6 //SEG206 [110] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ) -- vbuz1=vbuz2_ror_1 lda yd lsr @@ -6185,11 +6183,11 @@ line_xdyi: { } //SEG233 line_ydxd line_ydxd: { - .label y = $b + .label y = 6 .label y1 = 5 - .label yd = $a + .label yd = 4 .label xd = 3 - .label e = $c + .label e = 7 //SEG234 [125] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#7 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#7 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#7 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ) -- vbuz1=vbuz2_ror_1 lda xd lsr @@ -6259,12 +6257,12 @@ line_ydxd: { } //SEG261 line_xdyd line_xdyd: { - .label _6 = $1a + .label _6 = $a .label y = 5 - .label x1 = 8 + .label x1 = 7 .label xd = 3 - .label yd = $a - .label e = $d + .label yd = 4 + .label e = 6 //SEG262 [140] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ) -- vbuz1=vbuz2_ror_1 lda yd lsr @@ -6335,8 +6333,8 @@ line_xdyd: { } //SEG289 init_plot_tables init_plot_tables: { - .label _6 = $1b - .label yoffs = $e + .label _6 = 2 + .label yoffs = 8 //SEG290 [155] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: //SEG291 [155] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 @@ -6458,8 +6456,8 @@ init_plot_tables: { } //SEG336 init_screen init_screen: { - .label b = $10 - .label c = $12 + .label b = 8 + .label c = 8 //SEG337 [181] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: //SEG338 [181] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 @@ -6587,10 +6585,10 @@ Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #0 Removing instruction ldy l Removing instruction ldy l -Removing instruction lda yd_1 Removing instruction lda yd Removing instruction lda yd -Removing instruction lda yd_10 +Removing instruction lda yd +Removing instruction lda yd Removing instruction ldy #0 Removing instruction lda #>0 Replacing instruction ldx #0 with TAX @@ -6738,7 +6736,7 @@ FINAL SYMBOL TABLE (void()) init_plot_tables() (byte~) init_plot_tables::$0 reg byte a 22.0 (byte~) init_plot_tables::$10 reg byte a 22.0 -(byte~) init_plot_tables::$6 $6 zp ZP_BYTE:27 11.0 +(byte~) init_plot_tables::$6 $6 zp ZP_BYTE:2 11.0 (byte~) init_plot_tables::$7 reg byte a 22.0 (byte~) init_plot_tables::$8 reg byte a 22.0 (byte~) init_plot_tables::$9 reg byte a 22.0 @@ -6760,19 +6758,19 @@ FINAL SYMBOL TABLE (byte) init_plot_tables::y#1 reg byte x 16.5 (byte) init_plot_tables::y#2 reg byte x 6.0 (byte*) init_plot_tables::yoffs -(byte*) init_plot_tables::yoffs#1 yoffs zp ZP_WORD:14 22.0 -(byte*) init_plot_tables::yoffs#2 yoffs zp ZP_WORD:14 6.111111111111112 -(byte*) init_plot_tables::yoffs#4 yoffs zp ZP_WORD:14 11.0 +(byte*) init_plot_tables::yoffs#1 yoffs zp ZP_WORD:8 22.0 +(byte*) init_plot_tables::yoffs#2 yoffs zp ZP_WORD:8 6.111111111111112 +(byte*) init_plot_tables::yoffs#4 yoffs zp ZP_WORD:8 11.0 (void()) init_screen() (label) init_screen::@1 (label) init_screen::@2 (label) init_screen::@return (byte*) init_screen::b -(byte*) init_screen::b#1 b zp ZP_WORD:16 16.5 -(byte*) init_screen::b#2 b zp ZP_WORD:16 16.5 +(byte*) init_screen::b#1 b zp ZP_WORD:8 16.5 +(byte*) init_screen::b#2 b zp ZP_WORD:8 16.5 (byte*) init_screen::c -(byte*) init_screen::c#1 c zp ZP_WORD:18 16.5 -(byte*) init_screen::c#2 c zp ZP_WORD:18 16.5 +(byte*) init_screen::c#1 c zp ZP_WORD:8 16.5 +(byte*) init_screen::c#2 c zp ZP_WORD:8 16.5 (void()) line((byte) line::x0 , (byte) line::x1 , (byte) line::y0 , (byte) line::y1) (label) line::@1 (label) line::@10 @@ -6790,9 +6788,9 @@ FINAL SYMBOL TABLE (label) line::@9 (label) line::@return (byte) line::x0 -(byte) line::x0#0 x0 zp ZP_BYTE:8 5.173913043478264 +(byte) line::x0#0 x0 zp ZP_BYTE:7 5.173913043478264 (byte) line::x1 -(byte) line::x1#0 x1 zp ZP_BYTE:20 5.409090909090908 +(byte) line::x1#0 x1 zp ZP_BYTE:10 5.409090909090908 (byte) line::xd (byte) line::xd#0 xd zp ZP_BYTE:3 0.7 (byte) line::xd#1 xd zp ZP_BYTE:3 0.7 @@ -6801,23 +6799,23 @@ FINAL SYMBOL TABLE (byte) line::y1 (byte) line::y1#0 reg byte y 6.249999999999996 (byte) line::yd -(byte) line::yd#0 yd zp ZP_BYTE:10 0.8888888888888888 -(byte) line::yd#1 yd#1 zp ZP_BYTE:4 0.8888888888888888 -(byte) line::yd#10 yd#10 zp ZP_BYTE:4 0.8888888888888888 -(byte) line::yd#3 yd zp ZP_BYTE:10 0.8888888888888888 +(byte) line::yd#0 yd zp ZP_BYTE:4 0.8888888888888888 +(byte) line::yd#1 yd zp ZP_BYTE:4 0.8888888888888888 +(byte) line::yd#10 yd zp ZP_BYTE:4 0.8888888888888888 +(byte) line::yd#3 yd zp ZP_BYTE:4 0.8888888888888888 (void()) line_xdyd((byte) line_xdyd::x , (byte) line_xdyd::y , (byte) line_xdyd::x1 , (byte) line_xdyd::xd , (byte) line_xdyd::yd) -(byte/word~) line_xdyd::$6 $6 zp ZP_BYTE:26 2002.0 +(byte/word~) line_xdyd::$6 $6 zp ZP_BYTE:10 2002.0 (label) line_xdyd::@1 (label) line_xdyd::@2 (label) line_xdyd::@3 (label) line_xdyd::@5 (label) line_xdyd::@return (byte) line_xdyd::e -(byte) line_xdyd::e#0 e zp ZP_BYTE:13 4.0 -(byte) line_xdyd::e#1 e zp ZP_BYTE:13 1334.6666666666667 -(byte) line_xdyd::e#2 e zp ZP_BYTE:13 2002.0 -(byte) line_xdyd::e#3 e zp ZP_BYTE:13 400.79999999999995 -(byte) line_xdyd::e#6 e zp ZP_BYTE:13 1001.0 +(byte) line_xdyd::e#0 e zp ZP_BYTE:6 4.0 +(byte) line_xdyd::e#1 e zp ZP_BYTE:6 1334.6666666666667 +(byte) line_xdyd::e#2 e zp ZP_BYTE:6 2002.0 +(byte) line_xdyd::e#3 e zp ZP_BYTE:6 400.79999999999995 +(byte) line_xdyd::e#6 e zp ZP_BYTE:6 1001.0 (byte) line_xdyd::x (byte) line_xdyd::x#0 reg byte x 0.8 (byte) line_xdyd::x#1 reg byte x 0.8 @@ -6825,9 +6823,9 @@ FINAL SYMBOL TABLE (byte) line_xdyd::x#3 reg byte x 751.25 (byte) line_xdyd::x#6 reg byte x 3.0 (byte) line_xdyd::x1 -(byte) line_xdyd::x1#0 x1 zp ZP_BYTE:8 1.3333333333333333 -(byte) line_xdyd::x1#1 x1 zp ZP_BYTE:8 1.3333333333333333 -(byte) line_xdyd::x1#6 x1 zp ZP_BYTE:8 71.78571428571429 +(byte) line_xdyd::x1#0 x1 zp ZP_BYTE:7 1.3333333333333333 +(byte) line_xdyd::x1#1 x1 zp ZP_BYTE:7 1.3333333333333333 +(byte) line_xdyd::x1#6 x1 zp ZP_BYTE:7 71.78571428571429 (byte) line_xdyd::xd (byte) line_xdyd::xd#0 xd zp ZP_BYTE:3 2.0 (byte) line_xdyd::xd#1 xd zp ZP_BYTE:3 2.0 @@ -6840,22 +6838,22 @@ FINAL SYMBOL TABLE (byte) line_xdyd::y#5 y zp ZP_BYTE:5 3.0 (byte) line_xdyd::y#6 y zp ZP_BYTE:5 1001.0 (byte) line_xdyd::yd -(byte) line_xdyd::yd#0 yd zp ZP_BYTE:10 4.0 -(byte) line_xdyd::yd#1 yd zp ZP_BYTE:10 4.0 -(byte) line_xdyd::yd#2 yd zp ZP_BYTE:10 71.92857142857143 +(byte) line_xdyd::yd#0 yd zp ZP_BYTE:4 4.0 +(byte) line_xdyd::yd#1 yd zp ZP_BYTE:4 4.0 +(byte) line_xdyd::yd#2 yd zp ZP_BYTE:4 71.92857142857143 (void()) line_xdyi((byte) line_xdyi::x , (byte) line_xdyi::y , (byte) line_xdyi::x1 , (byte) line_xdyi::xd , (byte) line_xdyi::yd) -(byte/word~) line_xdyi::$6 $6 zp ZP_BYTE:25 2002.0 +(byte/word~) line_xdyi::$6 $6 zp ZP_BYTE:10 2002.0 (label) line_xdyi::@1 (label) line_xdyi::@2 (label) line_xdyi::@3 (label) line_xdyi::@5 (label) line_xdyi::@return (byte) line_xdyi::e -(byte) line_xdyi::e#0 e zp ZP_BYTE:9 4.0 -(byte) line_xdyi::e#1 e zp ZP_BYTE:9 1334.6666666666667 -(byte) line_xdyi::e#2 e zp ZP_BYTE:9 2002.0 -(byte) line_xdyi::e#3 e zp ZP_BYTE:9 400.79999999999995 -(byte) line_xdyi::e#6 e zp ZP_BYTE:9 1001.0 +(byte) line_xdyi::e#0 e zp ZP_BYTE:6 4.0 +(byte) line_xdyi::e#1 e zp ZP_BYTE:6 1334.6666666666667 +(byte) line_xdyi::e#2 e zp ZP_BYTE:6 2002.0 +(byte) line_xdyi::e#3 e zp ZP_BYTE:6 400.79999999999995 +(byte) line_xdyi::e#6 e zp ZP_BYTE:6 1001.0 (byte) line_xdyi::x (byte) line_xdyi::x#0 reg byte x 0.8 (byte) line_xdyi::x#1 reg byte x 0.8 @@ -6863,9 +6861,9 @@ FINAL SYMBOL TABLE (byte) line_xdyi::x#3 reg byte x 751.25 (byte) line_xdyi::x#6 reg byte x 3.0 (byte) line_xdyi::x1 -(byte) line_xdyi::x1#0 x1 zp ZP_BYTE:8 1.3333333333333333 -(byte) line_xdyi::x1#1 x1 zp ZP_BYTE:8 1.3333333333333333 -(byte) line_xdyi::x1#6 x1 zp ZP_BYTE:8 71.78571428571429 +(byte) line_xdyi::x1#0 x1 zp ZP_BYTE:7 1.3333333333333333 +(byte) line_xdyi::x1#1 x1 zp ZP_BYTE:7 1.3333333333333333 +(byte) line_xdyi::x1#6 x1 zp ZP_BYTE:7 71.78571428571429 (byte) line_xdyi::xd (byte) line_xdyi::xd#0 xd zp ZP_BYTE:3 2.0 (byte) line_xdyi::xd#1 xd zp ZP_BYTE:3 2.0 @@ -6889,11 +6887,11 @@ FINAL SYMBOL TABLE (label) line_ydxd::@5 (label) line_ydxd::@return (byte) line_ydxd::e -(byte) line_ydxd::e#0 e zp ZP_BYTE:12 4.0 -(byte) line_ydxd::e#1 e zp ZP_BYTE:12 1334.6666666666667 -(byte) line_ydxd::e#2 e zp ZP_BYTE:12 2002.0 -(byte) line_ydxd::e#3 e zp ZP_BYTE:12 400.79999999999995 -(byte) line_ydxd::e#6 e zp ZP_BYTE:12 1001.0 +(byte) line_ydxd::e#0 e zp ZP_BYTE:7 4.0 +(byte) line_ydxd::e#1 e zp ZP_BYTE:7 1334.6666666666667 +(byte) line_ydxd::e#2 e zp ZP_BYTE:7 2002.0 +(byte) line_ydxd::e#3 e zp ZP_BYTE:7 400.79999999999995 +(byte) line_ydxd::e#6 e zp ZP_BYTE:7 1001.0 (byte) line_ydxd::x (byte) line_ydxd::x#0 reg byte x 1.0 (byte) line_ydxd::x#1 reg byte x 1.0 @@ -6906,19 +6904,19 @@ FINAL SYMBOL TABLE (byte) line_ydxd::xd#1 xd zp ZP_BYTE:3 4.0 (byte) line_ydxd::xd#2 xd zp ZP_BYTE:3 71.92857142857143 (byte) line_ydxd::y -(byte) line_ydxd::y#0 y zp ZP_BYTE:11 0.8 -(byte) line_ydxd::y#1 y zp ZP_BYTE:11 0.8 -(byte) line_ydxd::y#2 y zp ZP_BYTE:11 751.25 -(byte) line_ydxd::y#3 y zp ZP_BYTE:11 375.375 -(byte) line_ydxd::y#7 y zp ZP_BYTE:11 3.0 +(byte) line_ydxd::y#0 y zp ZP_BYTE:6 0.8 +(byte) line_ydxd::y#1 y zp ZP_BYTE:6 0.8 +(byte) line_ydxd::y#2 y zp ZP_BYTE:6 751.25 +(byte) line_ydxd::y#3 y zp ZP_BYTE:6 375.375 +(byte) line_ydxd::y#7 y zp ZP_BYTE:6 3.0 (byte) line_ydxd::y1 (byte) line_ydxd::y1#0 y1 zp ZP_BYTE:5 1.3333333333333333 (byte) line_ydxd::y1#1 y1 zp ZP_BYTE:5 1.3333333333333333 (byte) line_ydxd::y1#6 y1 zp ZP_BYTE:5 71.78571428571429 (byte) line_ydxd::yd -(byte) line_ydxd::yd#0 yd zp ZP_BYTE:10 2.0 -(byte) line_ydxd::yd#1 yd zp ZP_BYTE:10 2.0 -(byte) line_ydxd::yd#5 yd zp ZP_BYTE:10 143.28571428571428 +(byte) line_ydxd::yd#0 yd zp ZP_BYTE:4 2.0 +(byte) line_ydxd::yd#1 yd zp ZP_BYTE:4 2.0 +(byte) line_ydxd::yd#5 yd zp ZP_BYTE:4 143.28571428571428 (void()) line_ydxi((byte) line_ydxi::y , (byte) line_ydxi::x , (byte) line_ydxi::y1 , (byte) line_ydxi::yd , (byte) line_ydxi::xd) (byte/word~) line_ydxi::$6 reg byte y 2002.0 (label) line_ydxi::@1 @@ -6976,14 +6974,14 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@return (void()) plot((byte) plot::x , (byte) plot::y) -(word~) plot::$0 $0 zp ZP_WORD:21 1.0 +(word~) plot::$0 $0 zp ZP_WORD:8 1.0 (byte~) plot::$1 reg byte a 4.0 (label) plot::@return (byte*) plot::plotter (word) plot::plotter_x -(word) plot::plotter_x#0 plotter_x zp ZP_WORD:21 2.0 +(word) plot::plotter_x#0 plotter_x zp ZP_WORD:8 2.0 (word) plot::plotter_y -(word) plot::plotter_y#0 plotter_y zp ZP_WORD:23 4.0 +(word) plot::plotter_y#0 plotter_y zp ZP_WORD:11 4.0 (byte) plot::x (byte) plot::x#0 reg byte x 1001.0 (byte) plot::x#1 reg byte x 1001.0 @@ -7007,41 +7005,29 @@ FINAL SYMBOL TABLE (byte[256]) plot_ylo (const byte[256]) plot_ylo#0 plot_ylo = { fill( 256, 0) } -zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] +zp ZP_BYTE:2 [ lines::l#2 lines::l#1 init_plot_tables::$6 ] zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 line::xd#1 line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 line::xd#0 line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ] -zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 line::yd#1 line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 line::yd#10 ] +zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 line::yd#1 line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 line::yd#10 line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 line::yd#0 line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 line::yd#3 ] zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 line::y0#0 line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ] reg byte x [ line_ydxi::x#3 line_ydxi::x#5 line_ydxi::x#1 line_ydxi::x#0 line_ydxi::x#6 line_ydxi::x#2 ] -zp ZP_BYTE:6 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] -zp ZP_BYTE:7 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] +zp ZP_BYTE:6 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 line_ydxd::y#2 line_ydxd::y#7 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#3 line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] +zp ZP_BYTE:7 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 line::x0#0 line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] reg byte x [ plot::x#4 plot::x#1 plot::x#0 plot::x#3 plot::x#2 ] reg byte y [ plot::y#4 plot::y#1 plot::y#0 plot::y#3 plot::y#2 ] -zp ZP_BYTE:8 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 line::x0#0 line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] reg byte x [ line_xdyi::x#3 line_xdyi::x#6 line_xdyi::x#0 line_xdyi::x#1 line_xdyi::x#2 ] -zp ZP_BYTE:9 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] -zp ZP_BYTE:10 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 line::yd#0 line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 line::yd#3 ] reg byte x [ line_ydxd::x#3 line_ydxd::x#5 line_ydxd::x#1 line_ydxd::x#0 line_ydxd::x#6 line_ydxd::x#2 ] -zp ZP_BYTE:11 [ line_ydxd::y#2 line_ydxd::y#7 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#3 ] -zp ZP_BYTE:12 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] reg byte x [ line_xdyd::x#3 line_xdyd::x#6 line_xdyd::x#0 line_xdyd::x#1 line_xdyd::x#2 ] -zp ZP_BYTE:13 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] -zp ZP_WORD:14 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] -zp ZP_WORD:16 [ init_screen::b#2 init_screen::b#1 ] -zp ZP_WORD:18 [ init_screen::c#2 init_screen::c#1 ] -zp ZP_BYTE:20 [ line::x1#0 ] +zp ZP_WORD:8 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#0 plot::$0 ] +zp ZP_BYTE:10 [ line::x1#0 line_xdyi::$6 line_xdyd::$6 ] reg byte y [ line::y1#0 ] reg byte y [ line_ydxi::$6 ] -zp ZP_WORD:21 [ plot::plotter_x#0 plot::$0 ] -zp ZP_WORD:23 [ plot::plotter_y#0 ] +zp ZP_WORD:11 [ plot::plotter_y#0 ] reg byte a [ plot::$1 ] -zp ZP_BYTE:25 [ line_xdyi::$6 ] reg byte y [ line_ydxd::$6 ] -zp ZP_BYTE:26 [ line_xdyd::$6 ] reg byte a [ init_plot_tables::$0 ] -zp ZP_BYTE:27 [ init_plot_tables::$6 ] reg byte a [ init_plot_tables::$7 ] reg byte a [ init_plot_tables::$8 ] reg byte a [ init_plot_tables::$9 ] @@ -7145,13 +7131,11 @@ lines: { } //SEG43 line line: { - .label x0 = 8 - .label x1 = $14 + .label x0 = 7 + .label x1 = $a .label y0 = 5 .label xd = 3 - .label yd = $a - .label yd_1 = 4 - .label yd_10 = 4 + .label yd = 4 //SEG44 [25] if((byte) line::x0#0>=(byte) line::x1#0) goto line::@1 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) -- vbuz1_ge_vbuz2_then_la1 lda x0 cmp x1 @@ -7172,7 +7156,7 @@ line: { tya sec sbc y0 - sta yd_1 + sta yd //SEG50 [29] if((byte) line::yd#1>=(byte) line::xd#1) goto line::@3 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ) -- vbuz1_ge_vbuz2_then_la1 cmp xd bcs b3 @@ -7244,7 +7228,7 @@ line: { //SEG86 [48] (byte) line_xdyd::xd#0 ← (byte) line::xd#1 [ line::yd#0 line_xdyd::x#0 line_xdyd::y#0 line_xdyd::x1#0 line_xdyd::xd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::yd#0 line_xdyd::x#0 line_xdyd::y#0 line_xdyd::x1#0 line_xdyd::xd#0 ] ) // (byte) line_xdyd::xd#0 = (byte) line::xd#1 // register copy zp ZP_BYTE:3 //SEG87 [49] (byte) line_xdyd::yd#0 ← (byte) line::yd#0 [ line_xdyd::x#0 line_xdyd::y#0 line_xdyd::x1#0 line_xdyd::xd#0 line_xdyd::yd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line_xdyd::x#0 line_xdyd::y#0 line_xdyd::x1#0 line_xdyd::xd#0 line_xdyd::yd#0 ] ) - // (byte) line_xdyd::yd#0 = (byte) line::yd#0 // register copy zp ZP_BYTE:10 + // (byte) line_xdyd::yd#0 = (byte) line::yd#0 // register copy zp ZP_BYTE:4 //SEG88 [50] call line_xdyd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) //SEG89 [139] phi from line::@20 to line_xdyd [phi:line::@20->line_xdyd] //SEG90 [139] phi (byte) line_xdyd::x1#6 = (byte) line_xdyd::x1#0 [phi:line::@20->line_xdyd#0] -- register_copy @@ -7263,7 +7247,7 @@ line: { //SEG98 [53] (byte) line_ydxd::y1#0 ← (byte) line::y0#0 [ line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line::yd#0 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 ] ) // (byte) line_ydxd::y1#0 = (byte) line::y0#0 // register copy zp ZP_BYTE:5 //SEG99 [54] (byte) line_ydxd::yd#0 ← (byte) line::yd#0 [ line::xd#1 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 line_ydxd::yd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#1 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 line_ydxd::yd#0 ] ) - // (byte) line_ydxd::yd#0 = (byte) line::yd#0 // register copy zp ZP_BYTE:10 + // (byte) line_ydxd::yd#0 = (byte) line::yd#0 // register copy zp ZP_BYTE:4 //SEG100 [55] (byte) line_ydxd::xd#0 ← (byte) line::xd#1 [ line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 line_ydxd::yd#0 line_ydxd::xd#0 ] ( main:2::lines:12::line:21 [ lines::l#2 line_ydxd::y#0 line_ydxd::x#0 line_ydxd::y1#0 line_ydxd::yd#0 line_ydxd::xd#0 ] ) // (byte) line_ydxd::xd#0 = (byte) line::xd#1 // register copy zp ZP_BYTE:3 //SEG101 [56] call line_ydxd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) @@ -7302,11 +7286,11 @@ line: { //SEG116 [62] (byte) line_xdyd::y#1 ← (byte) line::y1#0 [ line::x0#0 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 ] ) -- vbuz1=vbuyy sty line_xdyd.y //SEG117 [63] (byte) line_xdyd::x1#1 ← (byte) line::x0#0 [ line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 ] ) - // (byte) line_xdyd::x1#1 = (byte) line::x0#0 // register copy zp ZP_BYTE:8 + // (byte) line_xdyd::x1#1 = (byte) line::x0#0 // register copy zp ZP_BYTE:7 //SEG118 [64] (byte) line_xdyd::xd#1 ← (byte) line::xd#0 [ line::yd#3 line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 line_xdyd::xd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::yd#3 line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 line_xdyd::xd#1 ] ) // (byte) line_xdyd::xd#1 = (byte) line::xd#0 // register copy zp ZP_BYTE:3 //SEG119 [65] (byte) line_xdyd::yd#1 ← (byte) line::yd#3 [ line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 line_xdyd::xd#1 line_xdyd::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line_xdyd::x#1 line_xdyd::y#1 line_xdyd::x1#1 line_xdyd::xd#1 line_xdyd::yd#1 ] ) - // (byte) line_xdyd::yd#1 = (byte) line::yd#3 // register copy zp ZP_BYTE:10 + // (byte) line_xdyd::yd#1 = (byte) line::yd#3 // register copy zp ZP_BYTE:4 //SEG120 [66] call line_xdyd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) //SEG121 [139] phi from line::@24 to line_xdyd [phi:line::@24->line_xdyd] //SEG122 [139] phi (byte) line_xdyd::x1#6 = (byte) line_xdyd::x1#1 [phi:line::@24->line_xdyd#0] -- register_copy @@ -7326,7 +7310,7 @@ line: { //SEG130 [69] (byte) line_ydxd::y1#1 ← (byte) line::y1#0 [ line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#3 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 ] ) -- vbuz1=vbuyy sty line_ydxd.y1 //SEG131 [70] (byte) line_ydxd::yd#1 ← (byte) line::yd#3 [ line::xd#0 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 line_ydxd::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 line_ydxd::yd#1 ] ) - // (byte) line_ydxd::yd#1 = (byte) line::yd#3 // register copy zp ZP_BYTE:10 + // (byte) line_ydxd::yd#1 = (byte) line::yd#3 // register copy zp ZP_BYTE:4 //SEG132 [71] (byte) line_ydxd::xd#1 ← (byte) line::xd#0 [ line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 line_ydxd::yd#1 line_ydxd::xd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line_ydxd::y#1 line_ydxd::x#1 line_ydxd::y1#1 line_ydxd::yd#1 line_ydxd::xd#1 ] ) // (byte) line_ydxd::xd#1 = (byte) line::xd#0 // register copy zp ZP_BYTE:3 //SEG133 [72] call line_ydxd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) @@ -7345,7 +7329,7 @@ line: { eor #$ff sec adc y0 - sta yd_10 + sta yd //SEG142 [74] if((byte) line::yd#10>=(byte) line::xd#0) goto line::@13 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ) -- vbuz1_ge_vbuz2_then_la1 cmp xd bcs b13 @@ -7355,7 +7339,7 @@ line: { //SEG145 [76] (byte) line_xdyi::y#1 ← (byte) line::y1#0 [ line::x0#0 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::x0#0 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 ] ) -- vbuz1=vbuyy sty line_xdyi.y //SEG146 [77] (byte) line_xdyi::x1#1 ← (byte) line::x0#0 [ line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::xd#0 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 ] ) - // (byte) line_xdyi::x1#1 = (byte) line::x0#0 // register copy zp ZP_BYTE:8 + // (byte) line_xdyi::x1#1 = (byte) line::x0#0 // register copy zp ZP_BYTE:7 //SEG147 [78] (byte) line_xdyi::xd#1 ← (byte) line::xd#0 [ line::yd#10 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 line_xdyi::xd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line::yd#10 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 line_xdyi::xd#1 ] ) // (byte) line_xdyi::xd#1 = (byte) line::xd#0 // register copy zp ZP_BYTE:3 //SEG148 [79] (byte) line_xdyi::yd#1 ← (byte) line::yd#10 [ line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 line_xdyi::xd#1 line_xdyi::yd#1 ] ( main:2::lines:12::line:21 [ lines::l#2 line_xdyi::x#1 line_xdyi::y#1 line_xdyi::x1#1 line_xdyi::xd#1 line_xdyi::yd#1 ] ) @@ -7454,9 +7438,9 @@ line_ydxi: { } //SEG197 plot plot: { - .label _0 = $15 - .label plotter_x = $15 - .label plotter_y = $17 + .label _0 = 8 + .label plotter_x = 8 + .label plotter_y = $b //SEG198 [103] (word) plot::plotter_x#0 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[256]) plot_xlo#0 + (byte) plot::x#4) [ plot::x#4 plot::y#4 plot::plotter_x#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:114 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:114 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:129 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:129 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:144 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:144 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] ) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda plot_xhi,x sta plotter_x+1 @@ -7487,12 +7471,12 @@ plot: { } //SEG205 line_xdyi line_xdyi: { - .label _6 = $19 + .label _6 = $a .label y = 5 - .label x1 = 8 + .label x1 = 7 .label xd = 3 .label yd = 4 - .label e = 9 + .label e = 6 //SEG206 [110] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ) -- vbuz1=vbuz2_ror_1 lda yd lsr @@ -7550,11 +7534,11 @@ line_xdyi: { } //SEG233 line_ydxd line_ydxd: { - .label y = $b + .label y = 6 .label y1 = 5 - .label yd = $a + .label yd = 4 .label xd = 3 - .label e = $c + .label e = 7 //SEG234 [125] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#7 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#7 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#7 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ) -- vbuz1=vbuz2_ror_1 lda xd lsr @@ -7611,12 +7595,12 @@ line_ydxd: { } //SEG261 line_xdyd line_xdyd: { - .label _6 = $1a + .label _6 = $a .label y = 5 - .label x1 = 8 + .label x1 = 7 .label xd = 3 - .label yd = $a - .label e = $d + .label yd = 4 + .label e = 6 //SEG262 [140] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ) -- vbuz1=vbuz2_ror_1 lda yd lsr @@ -7674,8 +7658,8 @@ line_xdyd: { } //SEG289 init_plot_tables init_plot_tables: { - .label _6 = $1b - .label yoffs = $e + .label _6 = 2 + .label yoffs = 8 //SEG290 [155] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] //SEG291 [155] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 ldy #$80 @@ -7774,8 +7758,8 @@ init_plot_tables: { } //SEG336 init_screen init_screen: { - .label b = $10 - .label c = $12 + .label b = 8 + .label c = 8 //SEG337 [181] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] //SEG338 [181] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #BITMAP diff --git a/src/test/java/dk/camelot64/kickc/test/ref/bitmap-plotter.log b/src/test/java/dk/camelot64/kickc/test/ref/bitmap-plotter.log index 6316b4591..9b72e82ae 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/bitmap-plotter.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/bitmap-plotter.log @@ -2269,14 +2269,14 @@ Uplifting [plot] best 8251 combination zp ZP_BYTE:12 [ plot::x#0 ] Coalescing zero page register [ zp ZP_WORD:15 [ plot::plotter_x#1 ] ] with [ zp ZP_WORD:18 [ plot::plotter_x#2 ] ] Coalescing zero page register [ zp ZP_WORD:15 [ plot::plotter_x#1 plot::plotter_x#2 ] ] with [ zp ZP_WORD:26 [ plot::plotter#0 ] ] Coalescing zero page register [ zp ZP_WORD:21 [ plot::plotter_y#1 ] ] with [ zp ZP_WORD:24 [ plot::plotter_y#2 ] ] -Allocated (was zp ZP_WORD:6) zp ZP_WORD:2 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] -Allocated (was zp ZP_WORD:8) zp ZP_WORD:4 [ init_screen::b#2 init_screen::b#1 ] -Allocated (was zp ZP_WORD:10) zp ZP_WORD:6 [ init_screen::c#2 init_screen::c#1 ] -Allocated (was zp ZP_BYTE:12) zp ZP_BYTE:8 [ plot::x#0 ] -Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:9 [ plot::y#0 ] -Allocated (was zp ZP_WORD:15) zp ZP_WORD:10 [ plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ] -Allocated (was zp ZP_WORD:21) zp ZP_WORD:12 [ plot::plotter_y#1 plot::plotter_y#2 ] -Allocated (was zp ZP_BYTE:30) zp ZP_BYTE:14 [ init_plot_tables::$6 ] +Coalescing zero page register [ zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] ] with [ zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 ] ] with [ zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 ] ] with [ zp ZP_WORD:15 [ plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:12 [ plot::x#0 ] ] with [ zp ZP_BYTE:30 [ init_plot_tables::$6 ] ] +Allocated (was zp ZP_WORD:6) zp ZP_WORD:2 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ] +Allocated (was zp ZP_BYTE:12) zp ZP_BYTE:4 [ plot::x#0 init_plot_tables::$6 ] +Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:5 [ plot::y#0 ] +Allocated (was zp ZP_WORD:21) zp ZP_WORD:6 [ plot::plotter_y#1 plot::plotter_y#2 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -2402,11 +2402,11 @@ plots: { } //SEG44 plot plot: { - .label x = 8 - .label y = 9 - .label plotter_x = $a - .label plotter_y = $c - .label plotter = $a + .label x = 4 + .label y = 5 + .label plotter_x = 2 + .label plotter_y = 6 + .label plotter = 2 //SEG45 [25] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::$6 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::$6 ] ) -- vbuaa=pbuc1_derefidx_vbuz1 ldy x lda plot_xhi,y @@ -2455,7 +2455,7 @@ plot: { } //SEG58 init_plot_tables init_plot_tables: { - .label _6 = $e + .label _6 = 4 .label yoffs = 2 //SEG59 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: @@ -2578,8 +2578,8 @@ init_plot_tables: { } //SEG105 init_screen init_screen: { - .label b = 4 - .label c = 6 + .label b = 2 + .label c = 2 //SEG106 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: //SEG107 [64] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 @@ -2771,7 +2771,7 @@ FINAL SYMBOL TABLE (void()) init_plot_tables() (byte~) init_plot_tables::$0 reg byte a 22.0 (byte~) init_plot_tables::$10 reg byte a 22.0 -(byte~) init_plot_tables::$6 $6 zp ZP_BYTE:14 11.0 +(byte~) init_plot_tables::$6 $6 zp ZP_BYTE:4 11.0 (byte~) init_plot_tables::$7 reg byte a 22.0 (byte~) init_plot_tables::$8 reg byte a 22.0 (byte~) init_plot_tables::$9 reg byte a 22.0 @@ -2801,11 +2801,11 @@ FINAL SYMBOL TABLE (label) init_screen::@2 (label) init_screen::@return (byte*) init_screen::b -(byte*) init_screen::b#1 b zp ZP_WORD:4 16.5 -(byte*) init_screen::b#2 b zp ZP_WORD:4 16.5 +(byte*) init_screen::b#1 b zp ZP_WORD:2 16.5 +(byte*) init_screen::b#2 b zp ZP_WORD:2 16.5 (byte*) init_screen::c -(byte*) init_screen::c#1 c zp ZP_WORD:6 16.5 -(byte*) init_screen::c#2 c zp ZP_WORD:6 16.5 +(byte*) init_screen::c#1 c zp ZP_WORD:2 16.5 +(byte*) init_screen::c#2 c zp ZP_WORD:2 16.5 (void()) main() (label) main::@2 (label) main::@3 @@ -2820,17 +2820,17 @@ FINAL SYMBOL TABLE (byte~) plot::$9 reg byte a 4.0 (label) plot::@return (byte*) plot::plotter -(byte*) plot::plotter#0 plotter zp ZP_WORD:10 3.0 +(byte*) plot::plotter#0 plotter zp ZP_WORD:2 3.0 (byte*) plot::plotter_x -(byte*) plot::plotter_x#1 plotter_x zp ZP_WORD:10 2.0 -(byte*) plot::plotter_x#2 plotter_x zp ZP_WORD:10 0.8 +(byte*) plot::plotter_x#1 plotter_x zp ZP_WORD:2 2.0 +(byte*) plot::plotter_x#2 plotter_x zp ZP_WORD:2 0.8 (word) plot::plotter_y -(word) plot::plotter_y#1 plotter_y zp ZP_WORD:12 2.0 -(word) plot::plotter_y#2 plotter_y zp ZP_WORD:12 4.0 +(word) plot::plotter_y#1 plotter_y zp ZP_WORD:6 2.0 +(word) plot::plotter_y#2 plotter_y zp ZP_WORD:6 4.0 (byte) plot::x -(byte) plot::x#0 x zp ZP_BYTE:8 9.727272727272727 +(byte) plot::x#0 x zp ZP_BYTE:4 9.727272727272727 (byte) plot::y -(byte) plot::y#0 y zp ZP_BYTE:9 15.000000000000002 +(byte) plot::y#0 y zp ZP_BYTE:5 15.000000000000002 (byte[256]) plot_bit (const byte[256]) plot_bit#0 plot_bit = { fill( 256, 0) } (byte[256]) plot_xhi @@ -2859,20 +2859,16 @@ reg byte x [ plots::i#2 plots::i#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] -zp ZP_WORD:2 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] -zp ZP_WORD:4 [ init_screen::b#2 init_screen::b#1 ] -zp ZP_WORD:6 [ init_screen::c#2 init_screen::c#1 ] -zp ZP_BYTE:8 [ plot::x#0 ] -zp ZP_BYTE:9 [ plot::y#0 ] +zp ZP_WORD:2 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ] +zp ZP_BYTE:4 [ plot::x#0 init_plot_tables::$6 ] +zp ZP_BYTE:5 [ plot::y#0 ] reg byte a [ plot::$6 ] -zp ZP_WORD:10 [ plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ] reg byte a [ plot::$7 ] reg byte a [ plot::$8 ] -zp ZP_WORD:12 [ plot::plotter_y#1 plot::plotter_y#2 ] +zp ZP_WORD:6 [ plot::plotter_y#1 plot::plotter_y#2 ] reg byte a [ plot::$9 ] reg byte a [ plot::$5 ] reg byte a [ init_plot_tables::$0 ] -zp ZP_BYTE:14 [ init_plot_tables::$6 ] reg byte a [ init_plot_tables::$7 ] reg byte a [ init_plot_tables::$8 ] reg byte a [ init_plot_tables::$9 ] @@ -2975,11 +2971,11 @@ plots: { } //SEG44 plot plot: { - .label x = 8 - .label y = 9 - .label plotter_x = $a - .label plotter_y = $c - .label plotter = $a + .label x = 4 + .label y = 5 + .label plotter_x = 2 + .label plotter_y = 6 + .label plotter = 2 //SEG45 [25] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::$6 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::$6 ] ) -- vbuaa=pbuc1_derefidx_vbuz1 ldy x lda plot_xhi,y @@ -3024,7 +3020,7 @@ plot: { } //SEG58 init_plot_tables init_plot_tables: { - .label _6 = $e + .label _6 = 4 .label yoffs = 2 //SEG59 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] //SEG60 [38] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 @@ -3124,8 +3120,8 @@ init_plot_tables: { } //SEG105 init_screen init_screen: { - .label b = 4 - .label c = 6 + .label b = 2 + .label c = 2 //SEG106 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] //SEG107 [64] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #$400 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/constants.log b/src/test/java/dk/camelot64/kickc/test/ref/constants.log index b0fd9c6ac..c4e4df333 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/constants.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/constants.log @@ -2993,11 +2993,11 @@ Attempting to uplift remaining variables inzp ZP_BYTE:5 [ assert_sbyte::c#5 ] Uplifting [assert_sbyte] best 2175 combination zp ZP_BYTE:5 [ assert_sbyte::c#5 ] Coalescing zero page register [ zp ZP_WORD:2 [ assert_sbyte::msg#5 ] ] with [ zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] ] Coalescing zero page register [ zp ZP_WORD:2 [ assert_sbyte::msg#5 print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] ] with [ zp ZP_WORD:12 [ assert_byte::msg#3 ] ] -Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ assert_sbyte::c#5 ] +Coalescing zero page register [ zp ZP_WORD:2 [ assert_sbyte::msg#5 print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 assert_byte::msg#3 ] ] with [ zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ assert_sbyte::c#5 ] ] with [ zp ZP_BYTE:15 [ assert_byte::c#3 ] ] +Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ assert_sbyte::c#5 assert_byte::c#3 ] Allocated (was zp ZP_WORD:6) zp ZP_WORD:5 [ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ] Allocated (was zp ZP_WORD:10) zp ZP_WORD:7 [ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ] -Allocated (was zp ZP_BYTE:15) zp ZP_BYTE:9 [ assert_byte::c#3 ] -Allocated (was zp ZP_WORD:16) zp ZP_WORD:10 [ print_cls::sc#2 print_cls::sc#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -3416,7 +3416,7 @@ test_bytes: { //SEG140 assert_byte assert_byte: { .label msg = 2 - .label c = 9 + .label c = 4 //SEG141 [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) // (byte*) print_str::str#1 = (byte*) assert_byte::msg#3 // register copy zp ZP_WORD:2 //SEG142 [57] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) @@ -3500,7 +3500,7 @@ assert_byte: { } //SEG173 print_cls print_cls: { - .label sc = $a + .label sc = 2 //SEG174 [69] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: //SEG175 [69] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 @@ -3675,7 +3675,7 @@ FINAL SYMBOL TABLE (byte) assert_byte::b (byte) assert_byte::b#3 reg byte x 0.4 (byte) assert_byte::c -(byte) assert_byte::c#3 c zp ZP_BYTE:9 0.4 +(byte) assert_byte::c#3 c zp ZP_BYTE:4 0.4 (byte*) assert_byte::msg (byte*) assert_byte::msg#3 msg zp ZP_WORD:2 2.0 (const string) assert_byte::str str = (string) " @" @@ -3718,8 +3718,8 @@ FINAL SYMBOL TABLE (label) print_cls::@1 (label) print_cls::@return (byte*) print_cls::sc -(byte*) print_cls::sc#1 sc zp ZP_WORD:10 16.5 -(byte*) print_cls::sc#2 sc zp ZP_WORD:10 16.5 +(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 +(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -3768,14 +3768,12 @@ FINAL SYMBOL TABLE (const string) test_sbytes::msg3 msg3 = (string) "-(0+2-4)=2@" (const string) test_sbytes::msg4 msg4 = (string) "-127-127=2@" -zp ZP_WORD:2 [ assert_sbyte::msg#5 print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 assert_byte::msg#3 ] +zp ZP_WORD:2 [ assert_sbyte::msg#5 print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 assert_byte::msg#3 print_cls::sc#2 print_cls::sc#1 ] reg byte x [ assert_sbyte::b#5 ] -zp ZP_BYTE:4 [ assert_sbyte::c#5 ] +zp ZP_BYTE:4 [ assert_sbyte::c#5 assert_byte::c#3 ] zp ZP_WORD:5 [ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ] zp ZP_WORD:7 [ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ] reg byte x [ assert_byte::b#3 ] -zp ZP_BYTE:9 [ assert_byte::c#3 ] -zp ZP_WORD:10 [ print_cls::sc#2 print_cls::sc#1 ] FINAL ASSEMBLER @@ -4121,7 +4119,7 @@ test_bytes: { //SEG140 assert_byte assert_byte: { .label msg = 2 - .label c = 9 + .label c = 4 //SEG141 [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) // (byte*) print_str::str#1 = (byte*) assert_byte::msg#3 // register copy zp ZP_WORD:2 //SEG142 [57] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) @@ -4186,7 +4184,7 @@ assert_byte: { } //SEG173 print_cls print_cls: { - .label sc = $a + .label sc = 2 //SEG174 [69] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] //SEG175 [69] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/constants.sym b/src/test/java/dk/camelot64/kickc/test/ref/constants.sym index 2d82f90f1..55ea7a898 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/constants.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/constants.sym @@ -17,7 +17,7 @@ (byte) assert_byte::b (byte) assert_byte::b#3 reg byte x 0.4 (byte) assert_byte::c -(byte) assert_byte::c#3 c zp ZP_BYTE:9 0.4 +(byte) assert_byte::c#3 c zp ZP_BYTE:4 0.4 (byte*) assert_byte::msg (byte*) assert_byte::msg#3 msg zp ZP_WORD:2 2.0 (const string) assert_byte::str str = (string) " @" @@ -60,8 +60,8 @@ (label) print_cls::@1 (label) print_cls::@return (byte*) print_cls::sc -(byte*) print_cls::sc#1 sc zp ZP_WORD:10 16.5 -(byte*) print_cls::sc#2 sc zp ZP_WORD:10 16.5 +(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 +(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -110,11 +110,9 @@ (const string) test_sbytes::msg3 msg3 = (string) "-(0+2-4)=2@" (const string) test_sbytes::msg4 msg4 = (string) "-127-127=2@" -zp ZP_WORD:2 [ assert_sbyte::msg#5 print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 assert_byte::msg#3 ] +zp ZP_WORD:2 [ assert_sbyte::msg#5 print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 assert_byte::msg#3 print_cls::sc#2 print_cls::sc#1 ] reg byte x [ assert_sbyte::b#5 ] -zp ZP_BYTE:4 [ assert_sbyte::c#5 ] +zp ZP_BYTE:4 [ assert_sbyte::c#5 assert_byte::c#3 ] zp ZP_WORD:5 [ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ] zp ZP_WORD:7 [ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ] reg byte x [ assert_byte::b#3 ] -zp ZP_BYTE:9 [ assert_byte::c#3 ] -zp ZP_WORD:10 [ print_cls::sc#2 print_cls::sc#1 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.asm b/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.asm index b3903697c..2056b7924 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.asm @@ -55,8 +55,8 @@ plot: { rts } flip: { - .label c = 6 - .label r = 5 + .label c = 5 + .label r = 4 lda #$10 sta r ldx #$f diff --git a/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.log b/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.log index 0875f9869..5b8c43e17 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.log @@ -1523,10 +1523,10 @@ Attempting to uplift remaining variables inzp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] Uplifting [plot] best 119922 combination zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] Uplifting [flip] best 119922 combination zp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] +Coalescing zero page register [ zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] ] with [ zp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] ] Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ plot::line#4 plot::line#1 ] -Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ plot::y#4 plot::y#1 ] -Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:5 [ flip::r#4 flip::r#1 ] -Allocated (was zp ZP_BYTE:11) zp ZP_BYTE:6 [ flip::c#2 flip::c#1 ] +Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ plot::y#4 plot::y#1 flip::r#4 flip::r#1 ] +Allocated (was zp ZP_BYTE:11) zp ZP_BYTE:5 [ flip::c#2 flip::c#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -1693,8 +1693,8 @@ plot: { } //SEG63 flip flip: { - .label c = 6 - .label r = 5 + .label c = 5 + .label r = 4 //SEG64 [29] phi from flip to flip::@1 [phi:flip->flip::@1] b1_from_flip: //SEG65 [29] phi (byte) flip::r#4 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:flip->flip::@1#0] -- vbuz1=vbuc1 @@ -1914,8 +1914,8 @@ FINAL SYMBOL TABLE (label) flip::@4 (label) flip::@return (byte) flip::c -(byte) flip::c#1 c zp ZP_BYTE:6 1501.5 -(byte) flip::c#2 c zp ZP_BYTE:6 500.5 +(byte) flip::c#1 c zp ZP_BYTE:5 1501.5 +(byte) flip::c#2 c zp ZP_BYTE:5 500.5 (byte) flip::dstIdx (byte) flip::dstIdx#1 reg byte x 701.0 (byte) flip::dstIdx#2 reg byte x 67.33333333333333 @@ -1925,8 +1925,8 @@ FINAL SYMBOL TABLE (byte) flip::i#1 reg byte x 151.5 (byte) flip::i#2 reg byte x 202.0 (byte) flip::r -(byte) flip::r#1 r zp ZP_BYTE:5 151.5 -(byte) flip::r#4 r zp ZP_BYTE:5 25.25 +(byte) flip::r#1 r zp ZP_BYTE:4 151.5 +(byte) flip::r#4 r zp ZP_BYTE:4 25.25 (byte) flip::srcIdx (byte) flip::srcIdx#1 reg byte y 300.42857142857144 (byte) flip::srcIdx#2 reg byte y 1552.0 @@ -1969,13 +1969,12 @@ FINAL SYMBOL TABLE reg byte x [ main::c#4 main::c#1 ] zp ZP_WORD:2 [ plot::line#4 plot::line#1 ] -zp ZP_BYTE:4 [ plot::y#4 plot::y#1 ] +zp ZP_BYTE:4 [ plot::y#4 plot::y#1 flip::r#4 flip::r#1 ] reg byte x [ plot::i#2 plot::i#3 plot::i#1 ] reg byte y [ plot::x#2 plot::x#1 ] -zp ZP_BYTE:5 [ flip::r#4 flip::r#1 ] reg byte y [ flip::srcIdx#2 flip::srcIdx#3 flip::srcIdx#1 ] reg byte x [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dstIdx#1 ] -zp ZP_BYTE:6 [ flip::c#2 flip::c#1 ] +zp ZP_BYTE:5 [ flip::c#2 flip::c#1 ] reg byte x [ flip::i#2 flip::i#1 ] reg byte x [ prepare::i#2 prepare::i#1 ] @@ -2104,8 +2103,8 @@ plot: { } //SEG63 flip flip: { - .label c = 6 - .label r = 5 + .label c = 5 + .label r = 4 //SEG64 [29] phi from flip to flip::@1 [phi:flip->flip::@1] //SEG65 [29] phi (byte) flip::r#4 = (byte/signed byte/word/signed word/dword/signed dword) 16 [phi:flip->flip::@1#0] -- vbuz1=vbuc1 lda #$10 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym b/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym index 7bc5bdec1..d0cc717dc 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym @@ -16,8 +16,8 @@ (label) flip::@4 (label) flip::@return (byte) flip::c -(byte) flip::c#1 c zp ZP_BYTE:6 1501.5 -(byte) flip::c#2 c zp ZP_BYTE:6 500.5 +(byte) flip::c#1 c zp ZP_BYTE:5 1501.5 +(byte) flip::c#2 c zp ZP_BYTE:5 500.5 (byte) flip::dstIdx (byte) flip::dstIdx#1 reg byte x 701.0 (byte) flip::dstIdx#2 reg byte x 67.33333333333333 @@ -27,8 +27,8 @@ (byte) flip::i#1 reg byte x 151.5 (byte) flip::i#2 reg byte x 202.0 (byte) flip::r -(byte) flip::r#1 r zp ZP_BYTE:5 151.5 -(byte) flip::r#4 r zp ZP_BYTE:5 25.25 +(byte) flip::r#1 r zp ZP_BYTE:4 151.5 +(byte) flip::r#4 r zp ZP_BYTE:4 25.25 (byte) flip::srcIdx (byte) flip::srcIdx#1 reg byte y 300.42857142857144 (byte) flip::srcIdx#2 reg byte y 1552.0 @@ -71,12 +71,11 @@ reg byte x [ main::c#4 main::c#1 ] zp ZP_WORD:2 [ plot::line#4 plot::line#1 ] -zp ZP_BYTE:4 [ plot::y#4 plot::y#1 ] +zp ZP_BYTE:4 [ plot::y#4 plot::y#1 flip::r#4 flip::r#1 ] reg byte x [ plot::i#2 plot::i#3 plot::i#1 ] reg byte y [ plot::x#2 plot::x#1 ] -zp ZP_BYTE:5 [ flip::r#4 flip::r#1 ] reg byte y [ flip::srcIdx#2 flip::srcIdx#3 flip::srcIdx#1 ] reg byte x [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dstIdx#1 ] -zp ZP_BYTE:6 [ flip::c#2 flip::c#1 ] +zp ZP_BYTE:5 [ flip::c#2 flip::c#1 ] reg byte x [ flip::i#2 flip::i#1 ] reg byte x [ prepare::i#2 prepare::i#1 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/halfscii.asm b/src/test/java/dk/camelot64/kickc/test/ref/halfscii.asm index 460555425..eb945103a 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/halfscii.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/halfscii.asm @@ -9,9 +9,9 @@ jsr main main: { .label _1 = 8 - .label _11 = 9 - .label _21 = $a - .label _30 = $b + .label _11 = 8 + .label _21 = 8 + .label _30 = 8 .label chargen1 = 6 .label charset4 = 4 .label chargen = 2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/halfscii.log b/src/test/java/dk/camelot64/kickc/test/ref/halfscii.log index 6b2767832..d6cfd1185 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/halfscii.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/halfscii.log @@ -1820,11 +1820,11 @@ Attempting to uplift remaining variables inzp ZP_BYTE:20 [ main::$11 ] Uplifting [main] best 3563 combination zp ZP_BYTE:20 [ main::$11 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ main::$21 ] Uplifting [main] best 3563 combination zp ZP_BYTE:27 [ main::$21 ] +Coalescing zero page register [ zp ZP_BYTE:13 [ main::$1 ] ] with [ zp ZP_BYTE:20 [ main::$11 ] ] +Coalescing zero page register [ zp ZP_BYTE:13 [ main::$1 main::$11 ] ] with [ zp ZP_BYTE:27 [ main::$21 ] ] +Coalescing zero page register [ zp ZP_BYTE:13 [ main::$1 main::$11 main::$21 ] ] with [ zp ZP_BYTE:33 [ main::$30 ] ] Allocated (was zp ZP_WORD:11) zp ZP_WORD:6 [ main::chargen1#0 ] -Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:8 [ main::$1 ] -Allocated (was zp ZP_BYTE:20) zp ZP_BYTE:9 [ main::$11 ] -Allocated (was zp ZP_BYTE:27) zp ZP_BYTE:10 [ main::$21 ] -Allocated (was zp ZP_BYTE:33) zp ZP_BYTE:11 [ main::$30 ] +Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:8 [ main::$1 main::$11 main::$21 main::$30 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -1854,9 +1854,9 @@ bend: //SEG8 main main: { .label _1 = 8 - .label _11 = 9 - .label _21 = $a - .label _30 = $b + .label _11 = 8 + .label _21 = 8 + .label _30 = 8 .label chargen1 = 6 .label charset4 = 4 .label chargen = 2 @@ -2194,20 +2194,20 @@ FINAL SYMBOL TABLE (const byte[]) bits_count#0 bits_count = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4 } (void()) main() (byte~) main::$1 $1 zp ZP_BYTE:8 7.333333333333333 -(byte~) main::$11 $11 zp ZP_BYTE:9 7.333333333333333 +(byte~) main::$11 $11 zp ZP_BYTE:8 7.333333333333333 (byte~) main::$12 reg byte a 22.0 (byte~) main::$13 reg byte a 22.0 (byte~) main::$14 reg byte a 22.0 (byte~) main::$15 reg byte a 22.0 (byte~) main::$2 reg byte a 22.0 (byte~) main::$20 reg byte a 22.0 -(byte~) main::$21 $21 zp ZP_BYTE:10 7.333333333333333 +(byte~) main::$21 $21 zp ZP_BYTE:8 7.333333333333333 (byte~) main::$22 reg byte a 22.0 (byte~) main::$23 reg byte a 22.0 (byte~) main::$24 reg byte a 22.0 (byte~) main::$29 reg byte a 22.0 (byte~) main::$3 reg byte a 22.0 -(byte~) main::$30 $30 zp ZP_BYTE:11 11.0 +(byte~) main::$30 $30 zp ZP_BYTE:8 11.0 (byte~) main::$31 reg byte a 22.0 (byte~) main::$32 reg byte a 22.0 (byte~) main::$4 reg byte a 22.0 @@ -2263,27 +2263,24 @@ reg byte x [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] reg byte x [ main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ] reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:6 [ main::chargen1#0 ] -zp ZP_BYTE:8 [ main::$1 ] +zp ZP_BYTE:8 [ main::$1 main::$11 main::$21 main::$30 ] reg byte a [ main::$2 ] reg byte a [ main::$3 ] reg byte a [ main::$4 ] reg byte a [ main::$5 ] reg byte a [ main::$6 ] reg byte a [ main::bits#0 ] -zp ZP_BYTE:9 [ main::$11 ] reg byte a [ main::$12 ] reg byte a [ main::$13 ] reg byte a [ main::$14 ] reg byte a [ main::$15 ] reg byte a [ main::bits#1 ] reg byte a [ main::$20 ] -zp ZP_BYTE:10 [ main::$21 ] reg byte a [ main::$22 ] reg byte a [ main::$23 ] reg byte a [ main::$24 ] reg byte a [ main::bits#2 ] reg byte a [ main::$29 ] -zp ZP_BYTE:11 [ main::$30 ] reg byte a [ main::$31 ] reg byte a [ main::$32 ] reg byte a [ main::bits#3 ] @@ -2313,9 +2310,9 @@ Score: 3114 //SEG8 main main: { .label _1 = 8 - .label _11 = 9 - .label _21 = $a - .label _30 = $b + .label _11 = 8 + .label _21 = 8 + .label _30 = 8 .label chargen1 = 6 .label charset4 = 4 .label chargen = 2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/halfscii.sym b/src/test/java/dk/camelot64/kickc/test/ref/halfscii.sym index 5a4963453..501adbb3d 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/halfscii.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/halfscii.sym @@ -15,20 +15,20 @@ (const byte[]) bits_count#0 bits_count = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4 } (void()) main() (byte~) main::$1 $1 zp ZP_BYTE:8 7.333333333333333 -(byte~) main::$11 $11 zp ZP_BYTE:9 7.333333333333333 +(byte~) main::$11 $11 zp ZP_BYTE:8 7.333333333333333 (byte~) main::$12 reg byte a 22.0 (byte~) main::$13 reg byte a 22.0 (byte~) main::$14 reg byte a 22.0 (byte~) main::$15 reg byte a 22.0 (byte~) main::$2 reg byte a 22.0 (byte~) main::$20 reg byte a 22.0 -(byte~) main::$21 $21 zp ZP_BYTE:10 7.333333333333333 +(byte~) main::$21 $21 zp ZP_BYTE:8 7.333333333333333 (byte~) main::$22 reg byte a 22.0 (byte~) main::$23 reg byte a 22.0 (byte~) main::$24 reg byte a 22.0 (byte~) main::$29 reg byte a 22.0 (byte~) main::$3 reg byte a 22.0 -(byte~) main::$30 $30 zp ZP_BYTE:11 11.0 +(byte~) main::$30 $30 zp ZP_BYTE:8 11.0 (byte~) main::$31 reg byte a 22.0 (byte~) main::$32 reg byte a 22.0 (byte~) main::$4 reg byte a 22.0 @@ -84,27 +84,24 @@ reg byte x [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] reg byte x [ main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ] reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:6 [ main::chargen1#0 ] -zp ZP_BYTE:8 [ main::$1 ] +zp ZP_BYTE:8 [ main::$1 main::$11 main::$21 main::$30 ] reg byte a [ main::$2 ] reg byte a [ main::$3 ] reg byte a [ main::$4 ] reg byte a [ main::$5 ] reg byte a [ main::$6 ] reg byte a [ main::bits#0 ] -zp ZP_BYTE:9 [ main::$11 ] reg byte a [ main::$12 ] reg byte a [ main::$13 ] reg byte a [ main::$14 ] reg byte a [ main::$15 ] reg byte a [ main::bits#1 ] reg byte a [ main::$20 ] -zp ZP_BYTE:10 [ main::$21 ] reg byte a [ main::$22 ] reg byte a [ main::$23 ] reg byte a [ main::$24 ] reg byte a [ main::bits#2 ] reg byte a [ main::$29 ] -zp ZP_BYTE:11 [ main::$30 ] reg byte a [ main::$31 ] reg byte a [ main::$32 ] reg byte a [ main::bits#3 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.asm b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.asm index 157591ead..1fab21b3b 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.asm @@ -79,7 +79,7 @@ print_str: { jmp b1 } print_cls: { - .label sc = 8 + .label sc = 2 lda #<$400 sta sc lda #>$400 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.log b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.log index fb5f1fe35..376698190 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.log @@ -1237,10 +1237,10 @@ Uplifting [print_str] best 12807 combination zp ZP_WORD:5 [ print_str::str#2 pri Uplifting [print_cls] best 12807 combination zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] Uplifting [main] best 12717 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [print_ln] best 12717 combination -Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ line_cursor#6 line_cursor#13 line_cursor#1 ] +Coalescing zero page register [ zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ] ] with [ zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] ] +Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ line_cursor#6 line_cursor#13 line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] Allocated (was zp ZP_WORD:5) zp ZP_WORD:4 [ print_str::str#2 print_str::str#0 ] Allocated (was zp ZP_WORD:7) zp ZP_WORD:6 [ char_cursor#10 char_cursor#19 char_cursor#25 char_cursor#1 ] -Allocated (was zp ZP_WORD:9) zp ZP_WORD:8 [ print_cls::sc#2 print_cls::sc#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -1415,7 +1415,7 @@ print_str: { } //SEG58 print_cls print_cls: { - .label sc = 8 + .label sc = 2 //SEG59 [28] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: //SEG60 [28] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 @@ -1529,8 +1529,8 @@ FINAL SYMBOL TABLE (label) print_cls::@1 (label) print_cls::@return (byte*) print_cls::sc -(byte*) print_cls::sc#1 sc zp ZP_WORD:8 16.5 -(byte*) print_cls::sc#2 sc zp ZP_WORD:8 16.5 +(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 +(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -1545,10 +1545,9 @@ FINAL SYMBOL TABLE (const string) txt#0 txt = (string) "camelot@" reg byte x [ main::i#2 main::i#1 ] -zp ZP_WORD:2 [ line_cursor#6 line_cursor#13 line_cursor#1 ] +zp ZP_WORD:2 [ line_cursor#6 line_cursor#13 line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] zp ZP_WORD:4 [ print_str::str#2 print_str::str#0 ] zp ZP_WORD:6 [ char_cursor#10 char_cursor#19 char_cursor#25 char_cursor#1 ] -zp ZP_WORD:8 [ print_cls::sc#2 print_cls::sc#1 ] FINAL ASSEMBLER @@ -1694,7 +1693,7 @@ print_str: { } //SEG58 print_cls print_cls: { - .label sc = 8 + .label sc = 2 //SEG59 [28] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] //SEG60 [28] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.sym b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.sym index 5c69f2577..07a281fc5 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.sym @@ -23,8 +23,8 @@ (label) print_cls::@1 (label) print_cls::@return (byte*) print_cls::sc -(byte*) print_cls::sc#1 sc zp ZP_WORD:8 16.5 -(byte*) print_cls::sc#2 sc zp ZP_WORD:8 16.5 +(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 +(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -39,7 +39,6 @@ (const string) txt#0 txt = (string) "camelot@" reg byte x [ main::i#2 main::i#1 ] -zp ZP_WORD:2 [ line_cursor#6 line_cursor#13 line_cursor#1 ] +zp ZP_WORD:2 [ line_cursor#6 line_cursor#13 line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] zp ZP_WORD:4 [ print_str::str#2 print_str::str#0 ] zp ZP_WORD:6 [ char_cursor#10 char_cursor#19 char_cursor#25 char_cursor#1 ] -zp ZP_WORD:8 [ print_cls::sc#2 print_cls::sc#1 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.asm b/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.asm index c028b7194..a8ccc6cc9 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.asm @@ -7,8 +7,8 @@ main: { .label BGCOL = $d020 .label sc2 = screen+$51 .label _2 = 2 - .label _9 = 4 - .label _11 = 6 + .label _9 = 2 + .label _11 = 4 ldx #0 b1: txa diff --git a/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.log b/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.log index 62e68df4e..54abc7738 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.log @@ -644,9 +644,9 @@ Uplift Scope [] Uplifting [main] best 1165 combination reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] zp ZP_WORD:4 [ main::$2 ] zp ZP_WORD:8 [ main::$11 ] zp ZP_WORD:6 [ main::$9 ] Uplifting [] best 1165 combination -Allocated (was zp ZP_WORD:4) zp ZP_WORD:2 [ main::$2 ] -Allocated (was zp ZP_WORD:6) zp ZP_WORD:4 [ main::$9 ] -Allocated (was zp ZP_WORD:8) zp ZP_WORD:6 [ main::$11 ] +Coalescing zero page register [ zp ZP_WORD:4 [ main::$2 ] ] with [ zp ZP_WORD:6 [ main::$9 ] ] +Allocated (was zp ZP_WORD:4) zp ZP_WORD:2 [ main::$2 main::$9 ] +Allocated (was zp ZP_WORD:8) zp ZP_WORD:4 [ main::$11 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -676,8 +676,8 @@ main: { .label BGCOL = $d020 .label sc2 = screen+$51 .label _2 = 2 - .label _9 = 4 - .label _11 = 6 + .label _9 = 2 + .label _11 = 4 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 @@ -805,9 +805,9 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte*~) main::$11 $11 zp ZP_WORD:6 22.0 +(byte*~) main::$11 $11 zp ZP_WORD:4 22.0 (byte*~) main::$2 $2 zp ZP_WORD:2 22.0 -(byte*~) main::$9 $9 zp ZP_WORD:4 11.0 +(byte*~) main::$9 $9 zp ZP_WORD:2 11.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -828,9 +828,8 @@ FINAL SYMBOL TABLE reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] -zp ZP_WORD:2 [ main::$2 ] -zp ZP_WORD:4 [ main::$9 ] -zp ZP_WORD:6 [ main::$11 ] +zp ZP_WORD:2 [ main::$2 main::$9 ] +zp ZP_WORD:4 [ main::$11 ] FINAL ASSEMBLER @@ -855,8 +854,8 @@ main: { .label BGCOL = $d020 .label sc2 = screen+$51 .label _2 = 2 - .label _9 = 4 - .label _11 = 6 + .label _9 = 2 + .label _11 = 4 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.sym b/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.sym index c2bd98780..cbde774f9 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/ptr-complex.sym @@ -2,9 +2,9 @@ (label) @begin (label) @end (void()) main() -(byte*~) main::$11 $11 zp ZP_WORD:6 22.0 +(byte*~) main::$11 $11 zp ZP_WORD:4 22.0 (byte*~) main::$2 $2 zp ZP_WORD:2 22.0 -(byte*~) main::$9 $9 zp ZP_WORD:4 11.0 +(byte*~) main::$9 $9 zp ZP_WORD:2 11.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -25,6 +25,5 @@ reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] -zp ZP_WORD:2 [ main::$2 ] -zp ZP_WORD:4 [ main::$9 ] -zp ZP_WORD:6 [ main::$11 ] +zp ZP_WORD:2 [ main::$2 main::$9 ] +zp ZP_WORD:4 [ main::$11 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.asm b/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.asm index ff287bc8e..d150f1cf5 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.asm @@ -33,7 +33,7 @@ lvaluevar: { jmp b1 } rvaluevar: { - .label screen = 4 + .label screen = 2 lda #<$400 sta screen lda #>$400 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.log b/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.log index 2f2093e8b..02b7ce77f 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.log @@ -1089,8 +1089,8 @@ Uplifting [rvalue] best 1530 combination reg byte x [ rvalue::i#2 rvalue::i#1 ] Uplifting [lvalue] best 1410 combination reg byte x [ lvalue::i#2 lvalue::i#1 ] Uplifting [main] best 1410 combination Uplifting [] best 1410 combination -Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ lvaluevar::screen#2 lvaluevar::screen#1 ] -Allocated (was zp ZP_WORD:6) zp ZP_WORD:4 [ rvaluevar::screen#2 rvaluevar::screen#1 ] +Coalescing zero page register [ zp ZP_WORD:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] ] with [ zp ZP_WORD:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ] ] +Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ lvaluevar::screen#2 lvaluevar::screen#1 rvaluevar::screen#2 rvaluevar::screen#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -1196,7 +1196,7 @@ lvaluevar: { } //SEG40 rvaluevar rvaluevar: { - .label screen = 4 + .label screen = 2 //SEG41 [21] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] b1_from_rvaluevar: //SEG42 [21] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- pbuz1=pbuc1 @@ -1390,13 +1390,12 @@ FINAL SYMBOL TABLE (byte) rvaluevar::i#1 reg byte x 22.0 (byte) rvaluevar::i#2 reg byte x 11.0 (byte*) rvaluevar::screen -(byte*) rvaluevar::screen#1 screen zp ZP_WORD:4 11.0 -(byte*) rvaluevar::screen#2 screen zp ZP_WORD:4 11.0 +(byte*) rvaluevar::screen#1 screen zp ZP_WORD:2 11.0 +(byte*) rvaluevar::screen#2 screen zp ZP_WORD:2 11.0 reg byte x [ lvaluevar::i#2 lvaluevar::i#1 ] -zp ZP_WORD:2 [ lvaluevar::screen#2 lvaluevar::screen#1 ] +zp ZP_WORD:2 [ lvaluevar::screen#2 lvaluevar::screen#1 rvaluevar::screen#2 rvaluevar::screen#1 ] reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] -zp ZP_WORD:4 [ rvaluevar::screen#2 rvaluevar::screen#1 ] reg byte x [ rvalue::i#2 rvalue::i#1 ] reg byte x [ lvalue::i#2 lvalue::i#1 ] @@ -1480,7 +1479,7 @@ lvaluevar: { } //SEG40 rvaluevar rvaluevar: { - .label screen = 4 + .label screen = 2 //SEG41 [21] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] //SEG42 [21] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- pbuz1=pbuc1 lda #<$400 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.sym b/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.sym index 2c38ddfa5..8a60e0e43 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.sym @@ -44,12 +44,11 @@ (byte) rvaluevar::i#1 reg byte x 22.0 (byte) rvaluevar::i#2 reg byte x 11.0 (byte*) rvaluevar::screen -(byte*) rvaluevar::screen#1 screen zp ZP_WORD:4 11.0 -(byte*) rvaluevar::screen#2 screen zp ZP_WORD:4 11.0 +(byte*) rvaluevar::screen#1 screen zp ZP_WORD:2 11.0 +(byte*) rvaluevar::screen#2 screen zp ZP_WORD:2 11.0 reg byte x [ lvaluevar::i#2 lvaluevar::i#1 ] -zp ZP_WORD:2 [ lvaluevar::screen#2 lvaluevar::screen#1 ] +zp ZP_WORD:2 [ lvaluevar::screen#2 lvaluevar::screen#1 rvaluevar::screen#2 rvaluevar::screen#1 ] reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] -zp ZP_WORD:4 [ rvaluevar::screen#2 rvaluevar::screen#1 ] reg byte x [ rvalue::i#2 rvalue::i#1 ] reg byte x [ lvalue::i#2 lvalue::i#1 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scroll.asm b/src/test/java/dk/camelot64/kickc/test/ref/scroll.asm index 7d13e974d..bfeb4d888 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scroll.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/scroll.asm @@ -58,7 +58,7 @@ main: { } fillscreen: { .const fill = $20 - .label cursor = 4 + .label cursor = 2 lda #SCREEN diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scroll.log b/src/test/java/dk/camelot64/kickc/test/ref/scroll.log index 8a2c51c09..4041813f3 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scroll.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/scroll.log @@ -1266,8 +1266,8 @@ Uplift Scope [] Uplifting [main] best 8620 combination reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::c#2 main::c#0 main::c#1 ] zp ZP_WORD:5 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 ] reg byte x [ main::scroll#7 main::scroll#10 main::scroll#1 ] Uplifting [fillscreen] best 8620 combination zp ZP_WORD:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] Uplifting [] best 8620 combination -Allocated (was zp ZP_WORD:5) zp ZP_WORD:2 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 ] -Allocated (was zp ZP_WORD:7) zp ZP_WORD:4 [ fillscreen::cursor#2 fillscreen::cursor#1 ] +Coalescing zero page register [ zp ZP_WORD:5 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 ] ] with [ zp ZP_WORD:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] ] +Allocated (was zp ZP_WORD:5) zp ZP_WORD:2 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 fillscreen::cursor#2 fillscreen::cursor#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -1429,7 +1429,7 @@ main: { //SEG61 fillscreen fillscreen: { .const fill = $20 - .label cursor = 4 + .label cursor = 2 //SEG62 [28] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: //SEG63 [28] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 @@ -1550,8 +1550,8 @@ FINAL SYMBOL TABLE (label) fillscreen::@1 (label) fillscreen::@return (byte*) fillscreen::cursor -(byte*) fillscreen::cursor#1 cursor zp ZP_WORD:4 16.5 -(byte*) fillscreen::cursor#2 cursor zp ZP_WORD:4 16.5 +(byte*) fillscreen::cursor#1 cursor zp ZP_WORD:2 16.5 +(byte*) fillscreen::cursor#2 cursor zp ZP_WORD:2 16.5 (byte) fillscreen::fill (const byte) fillscreen::fill#0 fill = (byte/signed byte/word/signed word/dword/signed dword) 32 (byte*) fillscreen::screen @@ -1587,8 +1587,7 @@ FINAL SYMBOL TABLE reg byte x [ main::scroll#7 main::scroll#10 main::scroll#1 ] reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::c#2 main::c#0 main::c#1 ] -zp ZP_WORD:2 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 ] -zp ZP_WORD:4 [ fillscreen::cursor#2 fillscreen::cursor#1 ] +zp ZP_WORD:2 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 fillscreen::cursor#2 fillscreen::cursor#1 ] FINAL ASSEMBLER @@ -1716,7 +1715,7 @@ main: { //SEG61 fillscreen fillscreen: { .const fill = $20 - .label cursor = 4 + .label cursor = 2 //SEG62 [28] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] //SEG63 [28] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log index 3551edd90..3ac871b0b 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log @@ -3161,11 +3161,11 @@ Attempting to uplift remaining variables inzp ZP_BYTE:3 [ current_bit#29 current Uplifting [] best 24678 combination zp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] Coalescing zero page register [ zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 ] ] with [ zp ZP_WORD:20 [ scroll_bit::$4 ] ] Coalescing zero page register [ zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 scroll_bit::$4 ] ] with [ zp ZP_WORD:18 [ scroll_bit::c#0 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 scroll_bit::$4 scroll_bit::c#0 ] ] with [ zp ZP_WORD:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] ] Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] -Allocated (was zp ZP_WORD:4) zp ZP_WORD:3 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 scroll_bit::$4 scroll_bit::c#0 ] +Allocated (was zp ZP_WORD:4) zp ZP_WORD:3 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 scroll_bit::$4 scroll_bit::c#0 fillscreen::cursor#2 fillscreen::cursor#1 ] Allocated (was zp ZP_WORD:7) zp ZP_WORD:5 [ scroll_bit::sc#2 scroll_bit::sc#1 ] Allocated (was zp ZP_WORD:11) zp ZP_WORD:7 [ nxt#18 nxt#31 nxt#14 nxt#36 nxt#19 ] -Allocated (was zp ZP_WORD:14) zp ZP_WORD:9 [ fillscreen::cursor#2 fillscreen::cursor#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -3539,7 +3539,7 @@ next_char: { //SEG140 fillscreen fillscreen: { .const fill = $20 - .label cursor = 9 + .label cursor = 3 //SEG141 [67] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: //SEG142 [67] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 @@ -3711,8 +3711,8 @@ FINAL SYMBOL TABLE (label) fillscreen::@1 (label) fillscreen::@return (byte*) fillscreen::cursor -(byte*) fillscreen::cursor#1 cursor zp ZP_WORD:9 16.5 -(byte*) fillscreen::cursor#2 cursor zp ZP_WORD:9 16.5 +(byte*) fillscreen::cursor#1 cursor zp ZP_WORD:3 16.5 +(byte*) fillscreen::cursor#2 cursor zp ZP_WORD:3 16.5 (byte) fillscreen::fill (const byte) fillscreen::fill#0 fill = (byte/signed byte/word/signed word/dword/signed dword) 32 (byte*) fillscreen::screen @@ -3780,14 +3780,13 @@ FINAL SYMBOL TABLE reg byte x [ scroll#18 scroll#10 scroll#3 ] zp ZP_BYTE:2 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] -zp ZP_WORD:3 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 scroll_bit::$4 scroll_bit::c#0 ] +zp ZP_WORD:3 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 scroll_bit::$4 scroll_bit::c#0 fillscreen::cursor#2 fillscreen::cursor#1 ] reg byte x [ scroll_bit::r#2 scroll_bit::r#1 ] zp ZP_WORD:5 [ scroll_bit::sc#2 scroll_bit::sc#1 ] reg byte a [ scroll_bit::b#2 ] reg byte x [ scroll_hard::i#2 scroll_hard::i#1 ] zp ZP_WORD:7 [ nxt#18 nxt#31 nxt#14 nxt#36 nxt#19 ] reg byte a [ next_char::return#1 next_char::c#0 next_char::c#1 ] -zp ZP_WORD:9 [ fillscreen::cursor#2 fillscreen::cursor#1 ] reg byte a [ next_char::return#0 ] reg byte a [ scroll_bit::$3 ] reg byte a [ scroll_bit::bits#0 ] @@ -4097,7 +4096,7 @@ next_char: { //SEG140 fillscreen fillscreen: { .const fill = $20 - .label cursor = 9 + .label cursor = 3 //SEG141 [67] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] //SEG142 [67] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 lda #=(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) -- vwsz1_ge_0_then_la1 lda ypos+1 bpl b1_from_anim @@ -2304,7 +2305,7 @@ anim: { } //SEG75 init init: { - .label sc = $c + .label sc = 2 //SEG76 [34] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2 lda #1 sta SPRITES_ENABLE @@ -2490,8 +2491,8 @@ FINAL SYMBOL TABLE (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 (void()) anim() -(signed word~) anim::$10 $10 zp ZP_WORD:14 4.0 -(signed word~) anim::$12 $12 zp ZP_WORD:16 4.0 +(signed word~) anim::$10 $10 zp ZP_WORD:12 4.0 +(signed word~) anim::$12 $12 zp ZP_WORD:14 4.0 (byte~) anim::$14 reg byte a 4.0 (byte~) anim::$15 reg byte a 4.0 (byte~) anim::$16 reg byte a 4.0 @@ -2501,9 +2502,9 @@ FINAL SYMBOL TABLE (label) anim::@5 (label) anim::@return (signed word) anim::sprite_x -(signed word) anim::sprite_x#0 sprite_x zp ZP_WORD:14 0.8571428571428571 +(signed word) anim::sprite_x#0 sprite_x zp ZP_WORD:12 0.8571428571428571 (signed word) anim::sprite_y -(signed word) anim::sprite_y#0 sprite_y zp ZP_WORD:16 1.3333333333333333 +(signed word) anim::sprite_y#0 sprite_y zp ZP_WORD:14 1.3333333333333333 (signed word) g (const signed word) g#0 g = -(byte/signed byte/word/signed word/dword/signed dword) 5 (void()) init() @@ -2514,8 +2515,8 @@ FINAL SYMBOL TABLE (byte) init::i#1 reg byte x 16.5 (byte) init::i#2 reg byte x 16.5 (byte*) init::sc -(byte*) init::sc#1 sc zp ZP_WORD:12 16.5 -(byte*) init::sc#2 sc zp ZP_WORD:12 16.5 +(byte*) init::sc#1 sc zp ZP_WORD:2 16.5 +(byte*) init::sc#2 sc zp ZP_WORD:2 16.5 (void()) main() (label) main::@2 (label) main::@3 @@ -2544,15 +2545,14 @@ FINAL SYMBOL TABLE (signed word) yvel_init#13 yvel_init zp ZP_WORD:4 3.0 (signed word) yvel_init#3 yvel_init zp ZP_WORD:4 2.0 -zp ZP_WORD:2 [ xvel#12 xvel#10 xvel#14 ] +zp ZP_WORD:2 [ xvel#12 xvel#10 xvel#14 init::sc#2 init::sc#1 ] zp ZP_WORD:4 [ yvel_init#13 yvel_init#11 yvel#4 yvel_init#3 ] zp ZP_WORD:6 [ yvel#9 yvel#12 yvel#10 yvel#22 ] zp ZP_WORD:8 [ xpos#9 xpos#12 xpos#10 ] zp ZP_WORD:10 [ ypos#10 ypos#13 ypos#11 ] -zp ZP_WORD:12 [ init::sc#2 init::sc#1 ] reg byte x [ init::i#2 init::i#1 ] -zp ZP_WORD:14 [ anim::$10 anim::sprite_x#0 ] -zp ZP_WORD:16 [ anim::$12 anim::sprite_y#0 ] +zp ZP_WORD:12 [ anim::$10 anim::sprite_x#0 ] +zp ZP_WORD:14 [ anim::$12 anim::sprite_y#0 ] reg byte a [ anim::$14 ] reg byte a [ anim::$15 ] reg byte a [ anim::$16 ] @@ -2647,10 +2647,10 @@ main: { } //SEG33 anim anim: { - .label _10 = $e - .label _12 = $10 - .label sprite_x = $e - .label sprite_y = $10 + .label _10 = $c + .label _12 = $e + .label sprite_x = $c + .label sprite_y = $e //SEG34 [12] if((signed word) ypos#13>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) -- vwsz1_ge_0_then_la1 lda ypos+1 bpl b1 @@ -2810,7 +2810,7 @@ anim: { } //SEG75 init init: { - .label sc = $c + .label sc = 2 //SEG76 [34] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2 lda #1 sta SPRITES_ENABLE diff --git a/src/test/java/dk/camelot64/kickc/test/ref/signed-words.sym b/src/test/java/dk/camelot64/kickc/test/ref/signed-words.sym index 37d9adc3c..0419578df 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/signed-words.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/signed-words.sym @@ -26,8 +26,8 @@ (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 (void()) anim() -(signed word~) anim::$10 $10 zp ZP_WORD:14 4.0 -(signed word~) anim::$12 $12 zp ZP_WORD:16 4.0 +(signed word~) anim::$10 $10 zp ZP_WORD:12 4.0 +(signed word~) anim::$12 $12 zp ZP_WORD:14 4.0 (byte~) anim::$14 reg byte a 4.0 (byte~) anim::$15 reg byte a 4.0 (byte~) anim::$16 reg byte a 4.0 @@ -37,9 +37,9 @@ (label) anim::@5 (label) anim::@return (signed word) anim::sprite_x -(signed word) anim::sprite_x#0 sprite_x zp ZP_WORD:14 0.8571428571428571 +(signed word) anim::sprite_x#0 sprite_x zp ZP_WORD:12 0.8571428571428571 (signed word) anim::sprite_y -(signed word) anim::sprite_y#0 sprite_y zp ZP_WORD:16 1.3333333333333333 +(signed word) anim::sprite_y#0 sprite_y zp ZP_WORD:14 1.3333333333333333 (signed word) g (const signed word) g#0 g = -(byte/signed byte/word/signed word/dword/signed dword) 5 (void()) init() @@ -50,8 +50,8 @@ (byte) init::i#1 reg byte x 16.5 (byte) init::i#2 reg byte x 16.5 (byte*) init::sc -(byte*) init::sc#1 sc zp ZP_WORD:12 16.5 -(byte*) init::sc#2 sc zp ZP_WORD:12 16.5 +(byte*) init::sc#1 sc zp ZP_WORD:2 16.5 +(byte*) init::sc#2 sc zp ZP_WORD:2 16.5 (void()) main() (label) main::@2 (label) main::@3 @@ -80,15 +80,14 @@ (signed word) yvel_init#13 yvel_init zp ZP_WORD:4 3.0 (signed word) yvel_init#3 yvel_init zp ZP_WORD:4 2.0 -zp ZP_WORD:2 [ xvel#12 xvel#10 xvel#14 ] +zp ZP_WORD:2 [ xvel#12 xvel#10 xvel#14 init::sc#2 init::sc#1 ] zp ZP_WORD:4 [ yvel_init#13 yvel_init#11 yvel#4 yvel_init#3 ] zp ZP_WORD:6 [ yvel#9 yvel#12 yvel#10 yvel#22 ] zp ZP_WORD:8 [ xpos#9 xpos#12 xpos#10 ] zp ZP_WORD:10 [ ypos#10 ypos#13 ypos#11 ] -zp ZP_WORD:12 [ init::sc#2 init::sc#1 ] reg byte x [ init::i#2 init::i#1 ] -zp ZP_WORD:14 [ anim::$10 anim::sprite_x#0 ] -zp ZP_WORD:16 [ anim::$12 anim::sprite_y#0 ] +zp ZP_WORD:12 [ anim::$10 anim::sprite_x#0 ] +zp ZP_WORD:14 [ anim::$12 anim::sprite_y#0 ] reg byte a [ anim::$14 ] reg byte a [ anim::$15 ] reg byte a [ anim::$16 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.asm b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.asm index 50905bbdf..5abbc5136 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.asm @@ -96,7 +96,7 @@ print_ln: { rts } print_word: { - .label w = 9 + .label w = 7 lda w+1 tax jsr print_byte @@ -132,7 +132,7 @@ print_char: { rts } getFAC: { - .label return = 9 + .label return = 7 jsr $b1aa sty $fe sta $ff diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.log b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.log index 6d78d4e82..7ab9da9cb 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.log @@ -3276,9 +3276,9 @@ Coalescing zero page register [ zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem Coalescing zero page register [ zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 ] ] with [ zp ZP_WORD:15 [ setMEMtoFAC::mem#2 ] ] Coalescing zero page register [ zp ZP_WORD:17 [ getFAC::return#2 ] ] with [ zp ZP_WORD:19 [ print_word::w#0 ] ] Coalescing zero page register [ zp ZP_WORD:17 [ getFAC::return#2 print_word::w#0 ] ] with [ zp ZP_WORD:23 [ getFAC::return#0 ] ] +Coalescing zero page register [ zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 ] ] with [ zp ZP_WORD:17 [ getFAC::return#2 print_word::w#0 getFAC::return#0 ] ] Allocated (was zp ZP_WORD:7) zp ZP_WORD:5 [ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ] -Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 ] -Allocated (was zp ZP_WORD:17) zp ZP_WORD:9 [ getFAC::return#2 print_word::w#0 getFAC::return#0 ] +Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 getFAC::return#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -3457,12 +3457,12 @@ main: { //SEG63 [28] call getFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] ) jsr getFAC //SEG64 [29] (word) getFAC::return#2 ← (word) getFAC::return#0 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#2 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#2 ] ) - // (word) getFAC::return#2 = (word) getFAC::return#0 // register copy zp ZP_WORD:9 + // (word) getFAC::return#2 = (word) getFAC::return#0 // register copy zp ZP_WORD:7 jmp b14 //SEG65 main::@14 b14: //SEG66 [30] (word) print_word::w#0 ← (word) getFAC::return#2 [ main::i#10 char_cursor#32 line_cursor#13 print_word::w#0 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 print_word::w#0 ] ) - // (word) print_word::w#0 = (word) getFAC::return#2 // register copy zp ZP_WORD:9 + // (word) print_word::w#0 = (word) getFAC::return#2 // register copy zp ZP_WORD:7 //SEG67 [31] call print_word param-assignment [ main::i#10 line_cursor#13 char_cursor#10 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#10 ] ) jsr print_word //SEG68 [32] phi from main::@14 to main::@15 [phi:main::@14->main::@15] @@ -3538,7 +3538,7 @@ print_ln: { } //SEG91 print_word print_word: { - .label w = 9 + .label w = 7 //SEG92 [43] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ char_cursor#32 print_word::w#0 print_byte::b#0 ] ( main:2::print_word:31 [ main::i#10 line_cursor#13 char_cursor#32 print_word::w#0 print_byte::b#0 ] ) -- vbuxx=_hi_vwuz1 lda w+1 tax @@ -3623,7 +3623,7 @@ print_char: { } //SEG126 getFAC getFAC: { - .label return = 9 + .label return = 7 //SEG127 asm { jsr$b1aa sty$fe sta$ff } jsr $b1aa sty $fe @@ -3936,8 +3936,8 @@ FINAL SYMBOL TABLE (word()) getFAC() (label) getFAC::@return (word) getFAC::return -(word) getFAC::return#0 return zp ZP_WORD:9 4.333333333333333 -(word) getFAC::return#2 return zp ZP_WORD:9 22.0 +(word) getFAC::return#0 return zp ZP_WORD:7 4.333333333333333 +(word) getFAC::return#2 return zp ZP_WORD:7 22.0 (word) getFAC::w (byte*) line_cursor (byte*) line_cursor#1 line_cursor zp ZP_WORD:3 46.42857142857143 @@ -4011,7 +4011,7 @@ FINAL SYMBOL TABLE (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp ZP_WORD:9 5.0 +(word) print_word::w#0 w zp ZP_WORD:7 5.0 (void()) setFAC((word) setFAC::w) (label) setFAC::@1 (label) setFAC::@return @@ -4031,8 +4031,7 @@ zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] zp ZP_WORD:5 [ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ] -zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 ] -zp ZP_WORD:9 [ getFAC::return#2 print_word::w#0 getFAC::return#0 ] +zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 getFAC::return#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] reg byte a [ prepareMEM::$0 ] @@ -4169,10 +4168,10 @@ main: { //SEG63 [28] call getFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] ) jsr getFAC //SEG64 [29] (word) getFAC::return#2 ← (word) getFAC::return#0 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#2 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#2 ] ) - // (word) getFAC::return#2 = (word) getFAC::return#0 // register copy zp ZP_WORD:9 + // (word) getFAC::return#2 = (word) getFAC::return#0 // register copy zp ZP_WORD:7 //SEG65 main::@14 //SEG66 [30] (word) print_word::w#0 ← (word) getFAC::return#2 [ main::i#10 char_cursor#32 line_cursor#13 print_word::w#0 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 print_word::w#0 ] ) - // (word) print_word::w#0 = (word) getFAC::return#2 // register copy zp ZP_WORD:9 + // (word) print_word::w#0 = (word) getFAC::return#2 // register copy zp ZP_WORD:7 //SEG67 [31] call print_word param-assignment [ main::i#10 line_cursor#13 char_cursor#10 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#10 ] ) jsr print_word //SEG68 [32] phi from main::@14 to main::@15 [phi:main::@14->main::@15] @@ -4234,7 +4233,7 @@ print_ln: { } //SEG91 print_word print_word: { - .label w = 9 + .label w = 7 //SEG92 [43] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ char_cursor#32 print_word::w#0 print_byte::b#0 ] ( main:2::print_word:31 [ main::i#10 line_cursor#13 char_cursor#32 print_word::w#0 print_byte::b#0 ] ) -- vbuxx=_hi_vwuz1 lda w+1 tax @@ -4305,7 +4304,7 @@ print_char: { } //SEG126 getFAC getFAC: { - .label return = 9 + .label return = 7 //SEG127 asm { jsr$b1aa sty$fe sta$ff } jsr $b1aa sty $fe diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.sym index 1103f3155..baef74b88 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.sym @@ -20,8 +20,8 @@ (word()) getFAC() (label) getFAC::@return (word) getFAC::return -(word) getFAC::return#0 return zp ZP_WORD:9 4.333333333333333 -(word) getFAC::return#2 return zp ZP_WORD:9 22.0 +(word) getFAC::return#0 return zp ZP_WORD:7 4.333333333333333 +(word) getFAC::return#2 return zp ZP_WORD:7 22.0 (word) getFAC::w (byte*) line_cursor (byte*) line_cursor#1 line_cursor zp ZP_WORD:3 46.42857142857143 @@ -95,7 +95,7 @@ (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp ZP_WORD:9 5.0 +(word) print_word::w#0 w zp ZP_WORD:7 5.0 (void()) setFAC((word) setFAC::w) (label) setFAC::@1 (label) setFAC::@return @@ -115,8 +115,7 @@ zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] zp ZP_WORD:5 [ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ] -zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 ] -zp ZP_WORD:9 [ getFAC::return#2 print_word::w#0 getFAC::return#0 ] +zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 getFAC::return#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] reg byte a [ prepareMEM::$0 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm index 97ab2db43..79c87ae22 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm @@ -19,8 +19,8 @@ .const sinlen_x = $dd .const sinlen_y = $c5 .label sprites = $2000 - .label progress_idx = $f - .label progress_cursor = $10 + .label progress_idx = 4 + .label progress_cursor = $a .label sin_idx_x = 2 .label sin_idx_y = 3 jsr main @@ -39,7 +39,7 @@ main: { anim: { .label xidx = 4 .label yidx = 6 - .label x = $21 + .label x = 8 .label x_msb = 5 .label j = 7 inc BORDERCOL @@ -188,11 +188,11 @@ clear_screen: { } gen_sintab: { .label f_2pi = $e2e5 - .label _23 = $23 - .label i = $e - .label min = $a - .label length = $b - .label sintab = $c + .label _23 = $c + .label i = 2 + .label min = 2 + .label length = 3 + .label sintab = 8 txa sta setFAC.w lda #0 @@ -320,7 +320,7 @@ progress_inc: { progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0 } getFAC: { - .label return = $23 + .label return = $c jsr $b1aa sty $fe sta $ff @@ -331,7 +331,7 @@ getFAC: { rts } addMEMtoFAC: { - .label mem = $12 + .label mem = $c jsr prepareMEM lda $fe ldy $ff @@ -339,7 +339,7 @@ addMEMtoFAC: { rts } prepareMEM: { - .label mem = $12 + .label mem = $c lda mem sta memLo lda mem+1 @@ -347,7 +347,7 @@ prepareMEM: { rts } mulFACbyMEM: { - .label mem = $12 + .label mem = $c jsr prepareMEM lda $fe ldy $ff @@ -359,7 +359,7 @@ sinFAC: { rts } divMEMbyFAC: { - .label mem = $12 + .label mem = $c jsr prepareMEM lda $fe ldy $ff @@ -367,7 +367,7 @@ divMEMbyFAC: { rts } setFAC: { - .label w = $12 + .label w = $c jsr prepareMEM ldy $fe lda $ff @@ -375,7 +375,7 @@ setFAC: { rts } setMEMtoFAC: { - .label mem = $12 + .label mem = $c jsr prepareMEM ldx $fe ldy $ff @@ -391,12 +391,12 @@ setARGtoFAC: { rts } progress_init: { - .label line = $10 + .label line = $a rts } gen_sprites: { - .label spr = $15 - .label i = $14 + .label spr = 8 + .label i = 2 lda #sprites @@ -426,15 +426,15 @@ gen_sprites: { cml: .text "camelot" } gen_chargen_sprite: { - .label _0 = $25 - .label _1 = $25 - .label sprite = $1c - .label chargen = $25 - .label bits = $18 - .label s_gen = $1b - .label x = $19 - .label y = $17 - .label c = $1a + .label _0 = $c + .label _1 = $c + .label sprite = $a + .label chargen = $c + .label bits = 4 + .label s_gen = 7 + .label x = 5 + .label y = 3 + .label c = 6 tya sta _0 lda #0 @@ -526,9 +526,9 @@ gen_chargen_sprite: { } place_sprites: { .label sprites_ptr = SCREEN+$3f8 - .label spr_id = $1e - .label spr_x = $1f - .label col = $20 + .label spr_id = 2 + .label spr_x = 3 + .label col = 4 lda #$7f sta SPRITES_ENABLE sta SPRITES_EXPAND_X diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log index 50b973d65..1d64b6c47 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log @@ -7991,30 +7991,30 @@ Coalescing zero page register [ zp ZP_WORD:55 [ getFAC::return#2 ] ] with [ zp Z Coalescing zero page register [ zp ZP_WORD:55 [ getFAC::return#2 gen_sintab::$23 ] ] with [ zp ZP_WORD:60 [ getFAC::return#0 ] ] Coalescing zero page register [ zp ZP_WORD:65 [ gen_chargen_sprite::$0 ] ] with [ zp ZP_WORD:67 [ gen_chargen_sprite::$1 ] ] Coalescing zero page register [ zp ZP_WORD:65 [ gen_chargen_sprite::$0 gen_chargen_sprite::$1 ] ] with [ zp ZP_WORD:69 [ gen_chargen_sprite::chargen#0 ] ] -Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:6 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] -Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:7 [ anim::j#2 anim::j#1 ] -Allocated (was zp ZP_WORD:10) zp ZP_WORD:8 [ clear_screen::sc#2 clear_screen::sc#1 ] -Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:10 [ gen_sintab::min#2 ] -Allocated (was zp ZP_BYTE:14) zp ZP_BYTE:11 [ gen_sintab::length#10 ] -Allocated (was zp ZP_WORD:15) zp ZP_WORD:12 [ gen_sintab::sintab#12 ] -Allocated (was zp ZP_BYTE:17) zp ZP_BYTE:14 [ gen_sintab::i#10 gen_sintab::i#1 ] -Allocated (was zp ZP_BYTE:18) zp ZP_BYTE:15 [ progress_idx#34 progress_idx#12 progress_idx#10 ] -Allocated (was zp ZP_WORD:19) zp ZP_WORD:16 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] -Allocated (was zp ZP_WORD:21) zp ZP_WORD:18 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#9 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 ] -Allocated (was zp ZP_BYTE:33) zp ZP_BYTE:20 [ gen_sprites::i#2 gen_sprites::i#1 ] -Allocated (was zp ZP_WORD:34) zp ZP_WORD:21 [ gen_sprites::spr#2 gen_sprites::spr#1 ] -Allocated (was zp ZP_BYTE:36) zp ZP_BYTE:23 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] -Allocated (was zp ZP_BYTE:37) zp ZP_BYTE:24 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] -Allocated (was zp ZP_BYTE:38) zp ZP_BYTE:25 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] -Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:26 [ gen_chargen_sprite::c#3 ] -Allocated (was zp ZP_BYTE:40) zp ZP_BYTE:27 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] -Allocated (was zp ZP_WORD:43) zp ZP_WORD:28 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] -Allocated (was zp ZP_BYTE:45) zp ZP_BYTE:30 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] -Allocated (was zp ZP_BYTE:47) zp ZP_BYTE:31 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] -Allocated (was zp ZP_BYTE:49) zp ZP_BYTE:32 [ place_sprites::col#2 place_sprites::col#1 ] -Allocated (was zp ZP_WORD:50) zp ZP_WORD:33 [ anim::x#0 ] -Allocated (was zp ZP_WORD:55) zp ZP_WORD:35 [ getFAC::return#2 gen_sintab::$23 getFAC::return#0 ] -Allocated (was zp ZP_WORD:65) zp ZP_WORD:37 [ gen_chargen_sprite::$0 gen_chargen_sprite::$1 gen_chargen_sprite::chargen#0 ] +Coalescing zero page register [ zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] ] with [ zp ZP_BYTE:13 [ gen_sintab::min#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 gen_sintab::min#2 ] ] with [ zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 gen_sintab::min#2 gen_sintab::i#10 gen_sintab::i#1 ] ] with [ zp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 gen_sintab::min#2 gen_sintab::i#10 gen_sintab::i#1 gen_sprites::i#2 gen_sprites::i#1 ] ] with [ zp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] ] with [ zp ZP_BYTE:14 [ gen_sintab::length#10 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 gen_sintab::length#10 ] ] with [ zp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 gen_sintab::length#10 gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] ] with [ zp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] ] with [ zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] ] +Coalescing zero page register [ zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 progress_idx#34 progress_idx#12 progress_idx#10 ] ] with [ zp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 progress_idx#34 progress_idx#12 progress_idx#10 gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] ] with [ zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] ] with [ zp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:7 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] ] with [ zp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] ] with [ zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] ] +Coalescing zero page register [ zp ZP_WORD:10 [ clear_screen::sc#2 clear_screen::sc#1 ] ] with [ zp ZP_WORD:15 [ gen_sintab::sintab#12 ] ] +Coalescing zero page register [ zp ZP_WORD:10 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 ] ] with [ zp ZP_WORD:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] ] +Coalescing zero page register [ zp ZP_WORD:10 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 gen_sprites::spr#2 gen_sprites::spr#1 ] ] with [ zp ZP_WORD:50 [ anim::x#0 ] ] +Coalescing zero page register [ zp ZP_WORD:19 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] ] with [ zp ZP_WORD:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] ] +Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#9 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 ] ] with [ zp ZP_WORD:55 [ getFAC::return#2 gen_sintab::$23 getFAC::return#0 ] ] +Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#9 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 getFAC::return#0 ] ] with [ zp ZP_WORD:65 [ gen_chargen_sprite::$0 gen_chargen_sprite::$1 gen_chargen_sprite::chargen#0 ] ] +Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:6 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 gen_chargen_sprite::c#3 ] +Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:7 [ anim::j#2 anim::j#1 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] +Allocated (was zp ZP_WORD:10) zp ZP_WORD:8 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 gen_sprites::spr#2 gen_sprites::spr#1 anim::x#0 ] +Allocated (was zp ZP_WORD:19) zp ZP_WORD:10 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] +Allocated (was zp ZP_WORD:21) zp ZP_WORD:12 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#9 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 getFAC::return#0 gen_chargen_sprite::$0 gen_chargen_sprite::$1 gen_chargen_sprite::chargen#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -8040,8 +8040,8 @@ ASSEMBLER BEFORE OPTIMIZATION .const sinlen_x = $dd .const sinlen_y = $c5 .label sprites = $2000 - .label progress_idx = $f - .label progress_cursor = $10 + .label progress_idx = 4 + .label progress_cursor = $a .label sin_idx_x = 2 .label sin_idx_y = 3 //SEG2 @begin @@ -8111,7 +8111,7 @@ main: { anim: { .label xidx = 4 .label yidx = 6 - .label x = $21 + .label x = 8 .label x_msb = 5 .label j = 7 //SEG29 [12] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ sin_idx_x#13 sin_idx_y#13 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 @@ -8464,11 +8464,11 @@ clear_screen: { //SEG154 gen_sintab gen_sintab: { .label f_2pi = $e2e5 - .label _23 = $23 - .label i = $e - .label min = $a - .label length = $b - .label sintab = $c + .label _23 = $c + .label i = 2 + .label min = 2 + .label length = 3 + .label sintab = 8 //SEG155 [74] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:63 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) -- vwuz1=_word_vbuxx txa sta setFAC.w @@ -8734,12 +8734,12 @@ gen_sintab: { //SEG254 [115] call getFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:63 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) jsr getFAC //SEG255 [116] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] main:2::init:5::gen_sintab:63 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ) - // (word) getFAC::return#2 = (word) getFAC::return#0 // register copy zp ZP_WORD:35 + // (word) getFAC::return#2 = (word) getFAC::return#0 // register copy zp ZP_WORD:12 jmp b22 //SEG256 gen_sintab::@22 b22: //SEG257 [117] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] main:2::init:5::gen_sintab:63 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ) - // (word~) gen_sintab::$23 = (word) getFAC::return#2 // register copy zp ZP_WORD:35 + // (word~) gen_sintab::$23 = (word) getFAC::return#2 // register copy zp ZP_WORD:12 //SEG258 [118] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] main:2::init:5::gen_sintab:63 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ) -- vbuaa=_byte_vwuz1 lda _23 //SEG259 [119] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:63 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) -- pbuz1_derefidx_vbuz2=vbuaa @@ -8813,7 +8813,7 @@ progress_inc: { } //SEG282 getFAC getFAC: { - .label return = $23 + .label return = $c //SEG283 asm { jsr$b1aa sty$fe sta$ff } jsr $b1aa sty $fe @@ -8831,9 +8831,9 @@ getFAC: { } //SEG287 addMEMtoFAC addMEMtoFAC: { - .label mem = $12 + .label mem = $c //SEG288 [135] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] ( main:2::init:5::gen_sintab:59::addMEMtoFAC:94 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:63::addMEMtoFAC:94 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:59::addMEMtoFAC:113 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:63::addMEMtoFAC:113 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] ) - // (byte*) prepareMEM::mem#2 = (byte*) addMEMtoFAC::mem#2 // register copy zp ZP_WORD:18 + // (byte*) prepareMEM::mem#2 = (byte*) addMEMtoFAC::mem#2 // register copy zp ZP_WORD:12 //SEG289 [136] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:59::addMEMtoFAC:94 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::addMEMtoFAC:94 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::addMEMtoFAC:113 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:63::addMEMtoFAC:113 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) //SEG290 [139] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] prepareMEM_from_addMEMtoFAC: @@ -8854,7 +8854,7 @@ addMEMtoFAC: { } //SEG296 prepareMEM prepareMEM: { - .label mem = $12 + .label mem = $c //SEG297 [140] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::init:5::gen_sintab:59::addMEMtoFAC:94::prepareMEM:136 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::addMEMtoFAC:94::prepareMEM:136 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::addMEMtoFAC:113::prepareMEM:136 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::addMEMtoFAC:113::prepareMEM:136 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::mulFACbyMEM:101::prepareMEM:147 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::mulFACbyMEM:101::prepareMEM:147 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::mulFACbyMEM:111::prepareMEM:147 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::mulFACbyMEM:111::prepareMEM:147 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::divMEMbyFAC:90::prepareMEM:154 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::divMEMbyFAC:90::prepareMEM:154 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::divMEMbyFAC:107::prepareMEM:154 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::divMEMbyFAC:107::prepareMEM:154 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setFAC:75::prepareMEM:159 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setFAC:75::prepareMEM:159 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setFAC:80::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setFAC:80::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setFAC:88::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setFAC:88::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setFAC:99::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setFAC:99::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setFAC:105::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setFAC:105::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:82::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:82::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:86::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:86::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:92::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:92::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:96::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:96::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:103::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:103::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] ) -- vbuaa=_lo_pbuz1 lda mem //SEG298 [141] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::init:5::gen_sintab:59::addMEMtoFAC:94::prepareMEM:136 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::addMEMtoFAC:94::prepareMEM:136 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::addMEMtoFAC:113::prepareMEM:136 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::addMEMtoFAC:113::prepareMEM:136 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::mulFACbyMEM:101::prepareMEM:147 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::mulFACbyMEM:101::prepareMEM:147 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::mulFACbyMEM:111::prepareMEM:147 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::mulFACbyMEM:111::prepareMEM:147 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::divMEMbyFAC:90::prepareMEM:154 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::divMEMbyFAC:90::prepareMEM:154 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::divMEMbyFAC:107::prepareMEM:154 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::divMEMbyFAC:107::prepareMEM:154 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setFAC:75::prepareMEM:159 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setFAC:75::prepareMEM:159 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setFAC:80::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setFAC:80::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setFAC:88::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setFAC:88::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setFAC:99::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setFAC:99::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setFAC:105::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setFAC:105::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:82::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:82::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:86::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:86::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:92::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:92::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:96::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:96::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:103::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:103::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] ) -- _deref_pbuc1=vbuaa @@ -8871,9 +8871,9 @@ prepareMEM: { } //SEG303 mulFACbyMEM mulFACbyMEM: { - .label mem = $12 + .label mem = $c //SEG304 [146] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::init:5::gen_sintab:59::mulFACbyMEM:101 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:63::mulFACbyMEM:101 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:59::mulFACbyMEM:111 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:63::mulFACbyMEM:111 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] ) - // (byte*) prepareMEM::mem#4 = (byte*) mulFACbyMEM::mem#2 // register copy zp ZP_WORD:18 + // (byte*) prepareMEM::mem#4 = (byte*) mulFACbyMEM::mem#2 // register copy zp ZP_WORD:12 //SEG305 [147] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:59::mulFACbyMEM:101 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:63::mulFACbyMEM:101 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:59::mulFACbyMEM:111 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:63::mulFACbyMEM:111 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) //SEG306 [139] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] prepareMEM_from_mulFACbyMEM: @@ -8904,9 +8904,9 @@ sinFAC: { } //SEG316 divMEMbyFAC divMEMbyFAC: { - .label mem = $12 + .label mem = $c //SEG317 [153] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] ( main:2::init:5::gen_sintab:59::divMEMbyFAC:90 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:63::divMEMbyFAC:90 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:59::divMEMbyFAC:107 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:63::divMEMbyFAC:107 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] ) - // (byte*) prepareMEM::mem#3 = (byte*) divMEMbyFAC::mem#2 // register copy zp ZP_WORD:18 + // (byte*) prepareMEM::mem#3 = (byte*) divMEMbyFAC::mem#2 // register copy zp ZP_WORD:12 //SEG318 [154] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:59::divMEMbyFAC:90 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::divMEMbyFAC:90 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::divMEMbyFAC:107 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:63::divMEMbyFAC:107 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) //SEG319 [139] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] prepareMEM_from_divMEMbyFAC: @@ -8927,9 +8927,9 @@ divMEMbyFAC: { } //SEG325 setFAC setFAC: { - .label w = $12 + .label w = $c //SEG326 [158] (byte*~) prepareMEM::mem#9 ← (byte*)(word) setFAC::w#5 [ prepareMEM::mem#9 ] ( main:2::init:5::gen_sintab:59::setFAC:75 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:63::setFAC:75 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:59::setFAC:80 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:63::setFAC:80 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:59::setFAC:88 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:63::setFAC:88 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:59::setFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:63::setFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:59::setFAC:105 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:63::setFAC:105 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#9 ] ) - // (byte*~) prepareMEM::mem#9 = (byte*)(word) setFAC::w#5 // register copy zp ZP_WORD:18 + // (byte*~) prepareMEM::mem#9 = (byte*)(word) setFAC::w#5 // register copy zp ZP_WORD:12 //SEG327 [159] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:59::setFAC:75 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::setFAC:75 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::setFAC:80 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::setFAC:80 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::setFAC:88 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::setFAC:88 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::setFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:63::setFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:59::setFAC:105 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:63::setFAC:105 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) //SEG328 [139] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] prepareMEM_from_setFAC: @@ -8950,9 +8950,9 @@ setFAC: { } //SEG334 setMEMtoFAC setMEMtoFAC: { - .label mem = $12 + .label mem = $c //SEG335 [163] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] ( main:2::init:5::gen_sintab:59::setMEMtoFAC:82 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:82 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:86 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:86 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:92 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:92 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:96 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:96 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:103 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:103 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] ) - // (byte*) prepareMEM::mem#1 = (byte*) setMEMtoFAC::mem#5 // register copy zp ZP_WORD:18 + // (byte*) prepareMEM::mem#1 = (byte*) setMEMtoFAC::mem#5 // register copy zp ZP_WORD:12 //SEG336 [164] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:59::setMEMtoFAC:82 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:82 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:86 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:86 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:92 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:92 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:96 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:96 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:103 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:103 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) //SEG337 [139] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] prepareMEM_from_setMEMtoFAC: @@ -8993,7 +8993,7 @@ setARGtoFAC: { } //SEG351 progress_init progress_init: { - .label line = $10 + .label line = $a jmp breturn //SEG352 progress_init::@return breturn: @@ -9002,8 +9002,8 @@ progress_init: { } //SEG354 gen_sprites gen_sprites: { - .label spr = $15 - .label i = $14 + .label spr = 8 + .label i = 2 //SEG355 [174] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1] b1_from_gen_sprites: //SEG356 [174] phi (byte*) gen_sprites::spr#2 = (const byte*) sprites#0 [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 @@ -9058,15 +9058,15 @@ gen_sprites: { } //SEG371 gen_chargen_sprite gen_chargen_sprite: { - .label _0 = $25 - .label _1 = $25 - .label sprite = $1c - .label chargen = $25 - .label bits = $18 - .label s_gen = $1b - .label x = $19 - .label y = $17 - .label c = $1a + .label _0 = $c + .label _1 = $c + .label sprite = $a + .label chargen = $c + .label bits = 4 + .label s_gen = 7 + .label x = 5 + .label y = 3 + .label c = 6 //SEG372 [182] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:55::gen_chargen_sprite:177 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) -- vwuz1=_word_vbuyy tya sta _0 @@ -9273,9 +9273,9 @@ gen_chargen_sprite: { //SEG451 place_sprites place_sprites: { .label sprites_ptr = SCREEN+$3f8 - .label spr_id = $1e - .label spr_x = $1f - .label col = $20 + .label spr_id = 2 + .label spr_x = 3 + .label col = 4 //SEG452 [215] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:2::init:5::place_sprites:53 [ ] ) -- _deref_pbuc1=vbuc2 lda #$7f sta SPRITES_ENABLE @@ -9704,7 +9704,7 @@ FINAL SYMBOL TABLE (label) addMEMtoFAC::@1 (label) addMEMtoFAC::@return (byte*) addMEMtoFAC::mem -(byte*) addMEMtoFAC::mem#2 mem zp ZP_WORD:18 2.0 +(byte*) addMEMtoFAC::mem#2 mem zp ZP_WORD:12 2.0 (void()) anim() (byte~) anim::$2 reg byte a 101.0 (byte~) anim::$3 reg byte alu 202.0 @@ -9727,7 +9727,7 @@ FINAL SYMBOL TABLE (byte) anim::j2#1 reg byte x 67.33333333333333 (byte) anim::j2#2 reg byte x 25.25 (word) anim::x -(word) anim::x#0 x zp ZP_WORD:33 75.75 +(word) anim::x#0 x zp ZP_WORD:8 75.75 (byte) anim::x_msb (byte) anim::x_msb#1 x_msb zp ZP_BYTE:5 13.6 (byte) anim::x_msb#2 x_msb zp ZP_BYTE:5 101.0 @@ -9753,10 +9753,10 @@ FINAL SYMBOL TABLE (label) divMEMbyFAC::@1 (label) divMEMbyFAC::@return (byte*) divMEMbyFAC::mem -(byte*) divMEMbyFAC::mem#2 mem zp ZP_WORD:18 2.0 +(byte*) divMEMbyFAC::mem#2 mem zp ZP_WORD:12 2.0 (void()) gen_chargen_sprite((byte) gen_chargen_sprite::ch , (byte*) gen_chargen_sprite::sprite) -(word~) gen_chargen_sprite::$0 $0 zp ZP_WORD:37 4.0 -(word~) gen_chargen_sprite::$1 $1 zp ZP_WORD:37 4.0 +(word~) gen_chargen_sprite::$0 $0 zp ZP_WORD:12 4.0 +(word~) gen_chargen_sprite::$1 $1 zp ZP_WORD:12 4.0 (byte~) gen_chargen_sprite::$3 reg byte a 2002.0 (byte~) gen_chargen_sprite::$6 reg byte a 20002.0 (label) gen_chargen_sprite::@1 @@ -9774,41 +9774,41 @@ FINAL SYMBOL TABLE (byte) gen_chargen_sprite::b#1 reg byte x 15001.5 (byte) gen_chargen_sprite::b#2 reg byte x 2000.2 (byte) gen_chargen_sprite::bits -(byte) gen_chargen_sprite::bits#0 bits zp ZP_BYTE:24 202.0 -(byte) gen_chargen_sprite::bits#1 bits zp ZP_BYTE:24 667.3333333333334 -(byte) gen_chargen_sprite::bits#2 bits zp ZP_BYTE:24 182.58823529411765 +(byte) gen_chargen_sprite::bits#0 bits zp ZP_BYTE:4 202.0 +(byte) gen_chargen_sprite::bits#1 bits zp ZP_BYTE:4 667.3333333333334 +(byte) gen_chargen_sprite::bits#2 bits zp ZP_BYTE:4 182.58823529411765 (byte) gen_chargen_sprite::c -(byte) gen_chargen_sprite::c#3 c zp ZP_BYTE:26 769.3076923076923 +(byte) gen_chargen_sprite::c#3 c zp ZP_BYTE:6 769.3076923076923 (byte) gen_chargen_sprite::ch (byte) gen_chargen_sprite::ch#0 reg byte y 6.5 (byte*) gen_chargen_sprite::chargen -(byte*) gen_chargen_sprite::chargen#0 chargen zp ZP_WORD:37 3.678571428571429 +(byte*) gen_chargen_sprite::chargen#0 chargen zp ZP_WORD:12 3.678571428571429 (byte) gen_chargen_sprite::s_gen -(byte) gen_chargen_sprite::s_gen#1 s_gen zp ZP_BYTE:27 10001.0 -(byte) gen_chargen_sprite::s_gen#3 s_gen zp ZP_BYTE:27 21003.0 -(byte) gen_chargen_sprite::s_gen#5 s_gen zp ZP_BYTE:27 400.4 -(byte) gen_chargen_sprite::s_gen#6 s_gen zp ZP_BYTE:27 3500.5 +(byte) gen_chargen_sprite::s_gen#1 s_gen zp ZP_BYTE:7 10001.0 +(byte) gen_chargen_sprite::s_gen#3 s_gen zp ZP_BYTE:7 21003.0 +(byte) gen_chargen_sprite::s_gen#5 s_gen zp ZP_BYTE:7 400.4 +(byte) gen_chargen_sprite::s_gen#6 s_gen zp ZP_BYTE:7 3500.5 (byte) gen_chargen_sprite::s_gen_cnt (byte) gen_chargen_sprite::s_gen_cnt#1 reg byte y 15001.5 (byte) gen_chargen_sprite::s_gen_cnt#3 reg byte y 7001.0 (byte) gen_chargen_sprite::s_gen_cnt#4 reg byte y 400.4 (byte) gen_chargen_sprite::s_gen_cnt#5 reg byte y 3500.5 (byte*) gen_chargen_sprite::sprite -(byte*) gen_chargen_sprite::sprite#0 sprite zp ZP_WORD:28 2.1666666666666665 -(byte*) gen_chargen_sprite::sprite#1 sprite zp ZP_WORD:28 20002.0 -(byte*) gen_chargen_sprite::sprite#10 sprite zp ZP_WORD:28 420.59999999999997 -(byte*) gen_chargen_sprite::sprite#11 sprite zp ZP_WORD:28 102.0 -(byte*) gen_chargen_sprite::sprite#2 sprite zp ZP_WORD:28 67.33333333333333 -(byte*) gen_chargen_sprite::sprite#3 sprite zp ZP_WORD:28 7625.875 -(byte*) gen_chargen_sprite::sprite#4 sprite zp ZP_WORD:28 5184.166666666666 +(byte*) gen_chargen_sprite::sprite#0 sprite zp ZP_WORD:10 2.1666666666666665 +(byte*) gen_chargen_sprite::sprite#1 sprite zp ZP_WORD:10 20002.0 +(byte*) gen_chargen_sprite::sprite#10 sprite zp ZP_WORD:10 420.59999999999997 +(byte*) gen_chargen_sprite::sprite#11 sprite zp ZP_WORD:10 102.0 +(byte*) gen_chargen_sprite::sprite#2 sprite zp ZP_WORD:10 67.33333333333333 +(byte*) gen_chargen_sprite::sprite#3 sprite zp ZP_WORD:10 7625.875 +(byte*) gen_chargen_sprite::sprite#4 sprite zp ZP_WORD:10 5184.166666666666 (byte) gen_chargen_sprite::x -(byte) gen_chargen_sprite::x#1 x zp ZP_BYTE:25 1501.5 -(byte) gen_chargen_sprite::x#6 x zp ZP_BYTE:25 111.22222222222223 +(byte) gen_chargen_sprite::x#1 x zp ZP_BYTE:5 1501.5 +(byte) gen_chargen_sprite::x#6 x zp ZP_BYTE:5 111.22222222222223 (byte) gen_chargen_sprite::y -(byte) gen_chargen_sprite::y#1 y zp ZP_BYTE:23 151.5 -(byte) gen_chargen_sprite::y#2 y zp ZP_BYTE:23 13.173913043478262 +(byte) gen_chargen_sprite::y#1 y zp ZP_BYTE:3 151.5 +(byte) gen_chargen_sprite::y#2 y zp ZP_BYTE:3 13.173913043478262 (void()) gen_sintab((byte*) gen_sintab::sintab , (byte) gen_sintab::length , (byte) gen_sintab::min , (byte) gen_sintab::max) -(word~) gen_sintab::$23 $23 zp ZP_WORD:35 22.0 +(word~) gen_sintab::$23 $23 zp ZP_WORD:12 22.0 (byte~) gen_sintab::$24 reg byte a 22.0 (label) gen_sintab::@1 (label) gen_sintab::@10 @@ -9841,16 +9841,16 @@ FINAL SYMBOL TABLE (byte[]) gen_sintab::f_min (const byte[]) gen_sintab::f_min#0 f_min = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } (byte) gen_sintab::i -(byte) gen_sintab::i#1 i zp ZP_BYTE:14 16.5 -(byte) gen_sintab::i#10 i zp ZP_BYTE:14 1.8333333333333333 +(byte) gen_sintab::i#1 i zp ZP_BYTE:2 16.5 +(byte) gen_sintab::i#10 i zp ZP_BYTE:2 1.8333333333333333 (byte) gen_sintab::length -(byte) gen_sintab::length#10 length zp ZP_BYTE:11 0.44 +(byte) gen_sintab::length#10 length zp ZP_BYTE:3 0.44 (byte) gen_sintab::max (byte) gen_sintab::max#2 reg byte x 2.0 (byte) gen_sintab::min -(byte) gen_sintab::min#2 min zp ZP_BYTE:10 0.3333333333333333 +(byte) gen_sintab::min#2 min zp ZP_BYTE:2 0.3333333333333333 (byte*) gen_sintab::sintab -(byte*) gen_sintab::sintab#12 sintab zp ZP_WORD:12 0.22 +(byte*) gen_sintab::sintab#12 sintab zp ZP_WORD:8 0.22 (void()) gen_sprites() (label) gen_sprites::@1 (label) gen_sprites::@3 @@ -9858,16 +9858,16 @@ FINAL SYMBOL TABLE (byte[]) gen_sprites::cml (const string) gen_sprites::cml#0 cml = (string) "camelot" (byte) gen_sprites::i -(byte) gen_sprites::i#1 i zp ZP_BYTE:20 16.5 -(byte) gen_sprites::i#2 i zp ZP_BYTE:20 6.6000000000000005 +(byte) gen_sprites::i#1 i zp ZP_BYTE:2 16.5 +(byte) gen_sprites::i#2 i zp ZP_BYTE:2 6.6000000000000005 (byte*) gen_sprites::spr -(byte*) gen_sprites::spr#1 spr zp ZP_WORD:21 7.333333333333333 -(byte*) gen_sprites::spr#2 spr zp ZP_WORD:21 8.25 +(byte*) gen_sprites::spr#1 spr zp ZP_WORD:8 7.333333333333333 +(byte*) gen_sprites::spr#2 spr zp ZP_WORD:8 8.25 (word()) getFAC() (label) getFAC::@return (word) getFAC::return -(word) getFAC::return#0 return zp ZP_WORD:35 4.333333333333333 -(word) getFAC::return#2 return zp ZP_WORD:35 22.0 +(word) getFAC::return#0 return zp ZP_WORD:12 4.333333333333333 +(word) getFAC::return#2 return zp ZP_WORD:12 22.0 (word) getFAC::w (void()) init() (label) init::@1 @@ -9895,13 +9895,13 @@ FINAL SYMBOL TABLE (label) mulFACbyMEM::@1 (label) mulFACbyMEM::@return (byte*) mulFACbyMEM::mem -(byte*) mulFACbyMEM::mem#2 mem zp ZP_WORD:18 2.0 +(byte*) mulFACbyMEM::mem#2 mem zp ZP_WORD:12 2.0 (void()) place_sprites() (label) place_sprites::@1 (label) place_sprites::@return (byte) place_sprites::col -(byte) place_sprites::col#1 col zp ZP_BYTE:32 4.4 -(byte) place_sprites::col#2 col zp ZP_BYTE:32 4.714285714285714 +(byte) place_sprites::col#1 col zp ZP_BYTE:4 4.4 +(byte) place_sprites::col#2 col zp ZP_BYTE:4 4.714285714285714 (byte) place_sprites::j (byte) place_sprites::j#1 reg byte y 16.5 (byte) place_sprites::j#2 reg byte y 4.4 @@ -9910,11 +9910,11 @@ FINAL SYMBOL TABLE (byte) place_sprites::j2#2 reg byte x 7.333333333333333 (byte) place_sprites::j2#3 reg byte x 5.5 (byte) place_sprites::spr_id -(byte) place_sprites::spr_id#1 spr_id zp ZP_BYTE:30 2.2 -(byte) place_sprites::spr_id#2 spr_id zp ZP_BYTE:30 16.5 +(byte) place_sprites::spr_id#1 spr_id zp ZP_BYTE:2 2.2 +(byte) place_sprites::spr_id#2 spr_id zp ZP_BYTE:2 16.5 (byte) place_sprites::spr_x -(byte) place_sprites::spr_x#1 spr_x zp ZP_BYTE:31 3.6666666666666665 -(byte) place_sprites::spr_x#2 spr_x zp ZP_BYTE:31 5.5 +(byte) place_sprites::spr_x#1 spr_x zp ZP_BYTE:3 3.6666666666666665 +(byte) place_sprites::spr_x#2 spr_x zp ZP_BYTE:3 5.5 (byte*) place_sprites::sprites_ptr (const byte*) place_sprites::sprites_ptr#0 sprites_ptr = (const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1016 (void()) prepareMEM((byte*) prepareMEM::mem) @@ -9922,20 +9922,20 @@ FINAL SYMBOL TABLE (byte~) prepareMEM::$1 reg byte a 4.0 (label) prepareMEM::@return (byte*) prepareMEM::mem -(byte*) prepareMEM::mem#1 mem zp ZP_WORD:18 4.0 -(byte*) prepareMEM::mem#2 mem zp ZP_WORD:18 4.0 -(byte*) prepareMEM::mem#3 mem zp ZP_WORD:18 4.0 -(byte*) prepareMEM::mem#4 mem zp ZP_WORD:18 4.0 -(byte*) prepareMEM::mem#5 mem zp ZP_WORD:18 4.666666666666666 -(byte*~) prepareMEM::mem#9 mem zp ZP_WORD:18 4.0 +(byte*) prepareMEM::mem#1 mem zp ZP_WORD:12 4.0 +(byte*) prepareMEM::mem#2 mem zp ZP_WORD:12 4.0 +(byte*) prepareMEM::mem#3 mem zp ZP_WORD:12 4.0 +(byte*) prepareMEM::mem#4 mem zp ZP_WORD:12 4.0 +(byte*) prepareMEM::mem#5 mem zp ZP_WORD:12 4.666666666666666 +(byte*~) prepareMEM::mem#9 mem zp ZP_WORD:12 4.0 (byte*) progress_cursor -(byte*) progress_cursor#10 progress_cursor zp ZP_WORD:16 4.0 -(byte*) progress_cursor#11 progress_cursor zp ZP_WORD:16 2.8333333333333335 -(byte*) progress_cursor#34 progress_cursor zp ZP_WORD:16 0.7307692307692306 +(byte*) progress_cursor#10 progress_cursor zp ZP_WORD:10 4.0 +(byte*) progress_cursor#11 progress_cursor zp ZP_WORD:10 2.8333333333333335 +(byte*) progress_cursor#34 progress_cursor zp ZP_WORD:10 0.7307692307692306 (byte) progress_idx -(byte) progress_idx#10 progress_idx zp ZP_BYTE:15 3.0 -(byte) progress_idx#12 progress_idx zp ZP_BYTE:15 2.5 -(byte) progress_idx#34 progress_idx zp ZP_BYTE:15 0.5652173913043479 +(byte) progress_idx#10 progress_idx zp ZP_BYTE:4 3.0 +(byte) progress_idx#12 progress_idx zp ZP_BYTE:4 2.5 +(byte) progress_idx#34 progress_idx zp ZP_BYTE:4 0.5652173913043479 (void()) progress_inc() (label) progress_inc::@1 (label) progress_inc::@2 @@ -9945,23 +9945,23 @@ FINAL SYMBOL TABLE (void()) progress_init((byte*) progress_init::line) (label) progress_init::@return (byte*) progress_init::line -(byte*) progress_init::line#2 line zp ZP_WORD:16 0.06666666666666667 +(byte*) progress_init::line#2 line zp ZP_WORD:10 0.06666666666666667 (void()) setARGtoFAC() (label) setARGtoFAC::@return (void()) setFAC((word) setFAC::w) (label) setFAC::@1 (label) setFAC::@return (word) setFAC::w -(word) setFAC::w#0 w zp ZP_WORD:18 4.0 -(word) setFAC::w#1 w zp ZP_WORD:18 4.0 -(word) setFAC::w#3 w zp ZP_WORD:18 22.0 -(word) setFAC::w#4 w zp ZP_WORD:18 22.0 -(word) setFAC::w#5 w zp ZP_WORD:18 26.0 +(word) setFAC::w#0 w zp ZP_WORD:12 4.0 +(word) setFAC::w#1 w zp ZP_WORD:12 4.0 +(word) setFAC::w#3 w zp ZP_WORD:12 22.0 +(word) setFAC::w#4 w zp ZP_WORD:12 22.0 +(word) setFAC::w#5 w zp ZP_WORD:12 26.0 (void()) setMEMtoFAC((byte*) setMEMtoFAC::mem) (label) setMEMtoFAC::@1 (label) setMEMtoFAC::@return (byte*) setMEMtoFAC::mem -(byte*) setMEMtoFAC::mem#5 mem zp ZP_WORD:18 2.0 +(byte*) setMEMtoFAC::mem#5 mem zp ZP_WORD:12 2.0 (void()) sinFAC() (label) sinFAC::@return (byte) sin_idx_x @@ -9985,48 +9985,29 @@ FINAL SYMBOL TABLE (void()) subFACfromARG() (label) subFACfromARG::@return -zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] -zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] -zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] -zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] +zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 gen_sintab::min#2 gen_sintab::i#10 gen_sintab::i#1 gen_sprites::i#2 gen_sprites::i#1 place_sprites::spr_id#2 place_sprites::spr_id#1 ] +zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 gen_sintab::length#10 gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 place_sprites::spr_x#2 place_sprites::spr_x#1 ] +zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 progress_idx#34 progress_idx#12 progress_idx#10 gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 place_sprites::col#2 place_sprites::col#1 ] +zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] reg byte x [ anim::j2#2 anim::j2#1 ] -zp ZP_BYTE:6 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] -zp ZP_BYTE:7 [ anim::j#2 anim::j#1 ] +zp ZP_BYTE:6 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 gen_chargen_sprite::c#3 ] +zp ZP_BYTE:7 [ anim::j#2 anim::j#1 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] reg byte x [ init::i#2 init::i#1 ] -zp ZP_WORD:8 [ clear_screen::sc#2 clear_screen::sc#1 ] +zp ZP_WORD:8 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 gen_sprites::spr#2 gen_sprites::spr#1 anim::x#0 ] reg byte x [ gen_sintab::max#2 ] -zp ZP_BYTE:10 [ gen_sintab::min#2 ] -zp ZP_BYTE:11 [ gen_sintab::length#10 ] -zp ZP_WORD:12 [ gen_sintab::sintab#12 ] -zp ZP_BYTE:14 [ gen_sintab::i#10 gen_sintab::i#1 ] -zp ZP_BYTE:15 [ progress_idx#34 progress_idx#12 progress_idx#10 ] -zp ZP_WORD:16 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] -zp ZP_WORD:18 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#9 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 ] -zp ZP_BYTE:20 [ gen_sprites::i#2 gen_sprites::i#1 ] -zp ZP_WORD:21 [ gen_sprites::spr#2 gen_sprites::spr#1 ] -zp ZP_BYTE:23 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] -zp ZP_BYTE:24 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] -zp ZP_BYTE:25 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] -zp ZP_BYTE:26 [ gen_chargen_sprite::c#3 ] -zp ZP_BYTE:27 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] +zp ZP_WORD:10 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] +zp ZP_WORD:12 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#9 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 getFAC::return#0 gen_chargen_sprite::$0 gen_chargen_sprite::$1 gen_chargen_sprite::chargen#0 ] reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] -zp ZP_WORD:28 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] -zp ZP_BYTE:30 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] reg byte y [ place_sprites::j#2 place_sprites::j#1 ] -zp ZP_BYTE:31 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] reg byte x [ place_sprites::j2#3 place_sprites::j2#2 ] -zp ZP_BYTE:32 [ place_sprites::col#2 place_sprites::col#1 ] -zp ZP_WORD:33 [ anim::x#0 ] reg byte a [ anim::$2 ] reg byte alu [ anim::$3 ] reg byte a [ anim::$5 ] -zp ZP_WORD:35 [ getFAC::return#2 gen_sintab::$23 getFAC::return#0 ] reg byte a [ gen_sintab::$24 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] reg byte y [ gen_chargen_sprite::ch#0 ] -zp ZP_WORD:37 [ gen_chargen_sprite::$0 gen_chargen_sprite::$1 gen_chargen_sprite::chargen#0 ] reg byte a [ gen_chargen_sprite::$3 ] reg byte a [ gen_chargen_sprite::$6 ] reg byte x [ place_sprites::j2#1 ] @@ -10058,8 +10039,8 @@ Score: 767890 .const sinlen_x = $dd .const sinlen_y = $c5 .label sprites = $2000 - .label progress_idx = $f - .label progress_cursor = $10 + .label progress_idx = 4 + .label progress_cursor = $a .label sin_idx_x = 2 .label sin_idx_y = 3 //SEG2 @begin @@ -10105,7 +10086,7 @@ main: { anim: { .label xidx = 4 .label yidx = 6 - .label x = $21 + .label x = 8 .label x_msb = 5 .label j = 7 //SEG29 [12] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ sin_idx_x#13 sin_idx_y#13 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 ] ) -- _deref_pbuc1=_inc__deref_pbuc1 @@ -10381,11 +10362,11 @@ clear_screen: { //SEG154 gen_sintab gen_sintab: { .label f_2pi = $e2e5 - .label _23 = $23 - .label i = $e - .label min = $a - .label length = $b - .label sintab = $c + .label _23 = $c + .label i = 2 + .label min = 2 + .label length = 3 + .label sintab = 8 //SEG155 [74] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:63 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) -- vwuz1=_word_vbuxx txa sta setFAC.w @@ -10578,10 +10559,10 @@ gen_sintab: { //SEG254 [115] call getFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:63 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) jsr getFAC //SEG255 [116] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] main:2::init:5::gen_sintab:63 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ) - // (word) getFAC::return#2 = (word) getFAC::return#0 // register copy zp ZP_WORD:35 + // (word) getFAC::return#2 = (word) getFAC::return#0 // register copy zp ZP_WORD:12 //SEG256 gen_sintab::@22 //SEG257 [117] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] main:2::init:5::gen_sintab:63 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ) - // (word~) gen_sintab::$23 = (word) getFAC::return#2 // register copy zp ZP_WORD:35 + // (word~) gen_sintab::$23 = (word) getFAC::return#2 // register copy zp ZP_WORD:12 //SEG258 [118] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] main:2::init:5::gen_sintab:63 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ) -- vbuaa=_byte_vwuz1 lda _23 //SEG259 [119] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:63 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) -- pbuz1_derefidx_vbuz2=vbuaa @@ -10643,7 +10624,7 @@ progress_inc: { } //SEG282 getFAC getFAC: { - .label return = $23 + .label return = $c //SEG283 asm { jsr$b1aa sty$fe sta$ff } jsr $b1aa sty $fe @@ -10659,9 +10640,9 @@ getFAC: { } //SEG287 addMEMtoFAC addMEMtoFAC: { - .label mem = $12 + .label mem = $c //SEG288 [135] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] ( main:2::init:5::gen_sintab:59::addMEMtoFAC:94 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:63::addMEMtoFAC:94 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:59::addMEMtoFAC:113 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:63::addMEMtoFAC:113 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] ) - // (byte*) prepareMEM::mem#2 = (byte*) addMEMtoFAC::mem#2 // register copy zp ZP_WORD:18 + // (byte*) prepareMEM::mem#2 = (byte*) addMEMtoFAC::mem#2 // register copy zp ZP_WORD:12 //SEG289 [136] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:59::addMEMtoFAC:94 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::addMEMtoFAC:94 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::addMEMtoFAC:113 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:63::addMEMtoFAC:113 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) //SEG290 [139] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] //SEG291 [139] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#2 [phi:addMEMtoFAC->prepareMEM#0] -- register_copy @@ -10677,7 +10658,7 @@ addMEMtoFAC: { } //SEG296 prepareMEM prepareMEM: { - .label mem = $12 + .label mem = $c //SEG297 [140] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::init:5::gen_sintab:59::addMEMtoFAC:94::prepareMEM:136 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::addMEMtoFAC:94::prepareMEM:136 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::addMEMtoFAC:113::prepareMEM:136 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::addMEMtoFAC:113::prepareMEM:136 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::mulFACbyMEM:101::prepareMEM:147 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::mulFACbyMEM:101::prepareMEM:147 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::mulFACbyMEM:111::prepareMEM:147 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::mulFACbyMEM:111::prepareMEM:147 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::divMEMbyFAC:90::prepareMEM:154 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::divMEMbyFAC:90::prepareMEM:154 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::divMEMbyFAC:107::prepareMEM:154 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::divMEMbyFAC:107::prepareMEM:154 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setFAC:75::prepareMEM:159 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setFAC:75::prepareMEM:159 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setFAC:80::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setFAC:80::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setFAC:88::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setFAC:88::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setFAC:99::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setFAC:99::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setFAC:105::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setFAC:105::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:82::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:82::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:86::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:86::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:92::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:92::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:96::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:96::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:103::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:103::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] ) -- vbuaa=_lo_pbuz1 lda mem //SEG298 [141] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::init:5::gen_sintab:59::addMEMtoFAC:94::prepareMEM:136 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::addMEMtoFAC:94::prepareMEM:136 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::addMEMtoFAC:113::prepareMEM:136 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::addMEMtoFAC:113::prepareMEM:136 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::mulFACbyMEM:101::prepareMEM:147 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::mulFACbyMEM:101::prepareMEM:147 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::mulFACbyMEM:111::prepareMEM:147 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::mulFACbyMEM:111::prepareMEM:147 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::divMEMbyFAC:90::prepareMEM:154 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::divMEMbyFAC:90::prepareMEM:154 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::divMEMbyFAC:107::prepareMEM:154 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::divMEMbyFAC:107::prepareMEM:154 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setFAC:75::prepareMEM:159 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setFAC:75::prepareMEM:159 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setFAC:80::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setFAC:80::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setFAC:88::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setFAC:88::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setFAC:99::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setFAC:99::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setFAC:105::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setFAC:105::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:82::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:82::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:86::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:86::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:92::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:92::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:96::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:96::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:103::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:103::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] ) -- _deref_pbuc1=vbuaa @@ -10692,9 +10673,9 @@ prepareMEM: { } //SEG303 mulFACbyMEM mulFACbyMEM: { - .label mem = $12 + .label mem = $c //SEG304 [146] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::init:5::gen_sintab:59::mulFACbyMEM:101 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:63::mulFACbyMEM:101 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:59::mulFACbyMEM:111 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:63::mulFACbyMEM:111 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] ) - // (byte*) prepareMEM::mem#4 = (byte*) mulFACbyMEM::mem#2 // register copy zp ZP_WORD:18 + // (byte*) prepareMEM::mem#4 = (byte*) mulFACbyMEM::mem#2 // register copy zp ZP_WORD:12 //SEG305 [147] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:59::mulFACbyMEM:101 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:63::mulFACbyMEM:101 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:59::mulFACbyMEM:111 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:63::mulFACbyMEM:111 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) //SEG306 [139] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] //SEG307 [139] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy @@ -10718,9 +10699,9 @@ sinFAC: { } //SEG316 divMEMbyFAC divMEMbyFAC: { - .label mem = $12 + .label mem = $c //SEG317 [153] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] ( main:2::init:5::gen_sintab:59::divMEMbyFAC:90 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:63::divMEMbyFAC:90 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:59::divMEMbyFAC:107 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:63::divMEMbyFAC:107 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] ) - // (byte*) prepareMEM::mem#3 = (byte*) divMEMbyFAC::mem#2 // register copy zp ZP_WORD:18 + // (byte*) prepareMEM::mem#3 = (byte*) divMEMbyFAC::mem#2 // register copy zp ZP_WORD:12 //SEG318 [154] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:59::divMEMbyFAC:90 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::divMEMbyFAC:90 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::divMEMbyFAC:107 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:63::divMEMbyFAC:107 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) //SEG319 [139] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] //SEG320 [139] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#3 [phi:divMEMbyFAC->prepareMEM#0] -- register_copy @@ -10736,9 +10717,9 @@ divMEMbyFAC: { } //SEG325 setFAC setFAC: { - .label w = $12 + .label w = $c //SEG326 [158] (byte*~) prepareMEM::mem#9 ← (byte*)(word) setFAC::w#5 [ prepareMEM::mem#9 ] ( main:2::init:5::gen_sintab:59::setFAC:75 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:63::setFAC:75 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:59::setFAC:80 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:63::setFAC:80 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:59::setFAC:88 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:63::setFAC:88 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:59::setFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:63::setFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:59::setFAC:105 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#9 ] main:2::init:5::gen_sintab:63::setFAC:105 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#9 ] ) - // (byte*~) prepareMEM::mem#9 = (byte*)(word) setFAC::w#5 // register copy zp ZP_WORD:18 + // (byte*~) prepareMEM::mem#9 = (byte*)(word) setFAC::w#5 // register copy zp ZP_WORD:12 //SEG327 [159] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:59::setFAC:75 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::setFAC:75 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::setFAC:80 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::setFAC:80 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::setFAC:88 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::setFAC:88 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::setFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:63::setFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:59::setFAC:105 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:63::setFAC:105 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) //SEG328 [139] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] //SEG329 [139] phi (byte*) prepareMEM::mem#5 = (byte*~) prepareMEM::mem#9 [phi:setFAC->prepareMEM#0] -- register_copy @@ -10754,9 +10735,9 @@ setFAC: { } //SEG334 setMEMtoFAC setMEMtoFAC: { - .label mem = $12 + .label mem = $c //SEG335 [163] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] ( main:2::init:5::gen_sintab:59::setMEMtoFAC:82 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:82 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:86 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:86 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:92 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:92 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:96 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:96 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:103 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:103 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] ) - // (byte*) prepareMEM::mem#1 = (byte*) setMEMtoFAC::mem#5 // register copy zp ZP_WORD:18 + // (byte*) prepareMEM::mem#1 = (byte*) setMEMtoFAC::mem#5 // register copy zp ZP_WORD:12 //SEG336 [164] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:59::setMEMtoFAC:82 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:82 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:86 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:86 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:92 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:92 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:96 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:96 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:59::setMEMtoFAC:103 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:63::setMEMtoFAC:103 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) //SEG337 [139] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] //SEG338 [139] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy @@ -10788,15 +10769,15 @@ setARGtoFAC: { } //SEG351 progress_init progress_init: { - .label line = $10 + .label line = $a //SEG352 progress_init::@return //SEG353 [172] return [ progress_init::line#2 ] ( main:2::init:5::progress_init:57 [ progress_init::line#2 ] main:2::init:5::progress_init:61 [ progress_init::line#2 ] ) rts } //SEG354 gen_sprites gen_sprites: { - .label spr = $15 - .label i = $14 + .label spr = 8 + .label i = 2 //SEG355 [174] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1] //SEG356 [174] phi (byte*) gen_sprites::spr#2 = (const byte*) sprites#0 [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 lda #$400 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.log b/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.log index 447575ff7..bb5ac049e 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.log @@ -8851,13 +8851,13 @@ Attempting to uplift remaining variables inzp ZP_BYTE:39 [ main::b#0 ] Uplifting [main] best 20013 combination zp ZP_BYTE:39 [ main::b#0 ] Coalescing zero page register [ zp ZP_BYTE:2 [ main::a#10 main::a#1 ] ] with [ zp ZP_BYTE:26 [ printu::a#20 printu::a#8 printu::a#9 printu::a#10 printu::a#11 printu::a#12 printu::a#13 printu::a#14 printu::a#15 printu::a#16 printu::a#17 printu::a#0 printu::a#18 printu::a#19 printu::a#1 printu::a#2 printu::a#3 printu::a#4 printu::a#5 printu::a#6 printu::a#7 ] ] Coalescing zero page register [ zp ZP_WORD:27 [ printu::op#20 ] ] with [ zp ZP_WORD:35 [ print_str::str#2 print_str::str#1 print_str::str#0 ] ] -Allocated (was zp ZP_WORD:24) zp ZP_WORD:4 [ line_cursor#10 line_cursor#20 line_cursor#21 line_cursor#1 ] +Coalescing zero page register [ zp ZP_WORD:24 [ line_cursor#10 line_cursor#20 line_cursor#21 line_cursor#1 ] ] with [ zp ZP_WORD:37 [ print_cls::sc#2 print_cls::sc#1 ] ] +Allocated (was zp ZP_WORD:24) zp ZP_WORD:4 [ line_cursor#10 line_cursor#20 line_cursor#21 line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] Allocated (was zp ZP_WORD:27) zp ZP_WORD:6 [ printu::op#20 print_str::str#2 print_str::str#1 print_str::str#0 ] Allocated (was zp ZP_BYTE:29) zp ZP_BYTE:8 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] Allocated (was zp ZP_WORD:32) zp ZP_WORD:9 [ char_cursor#51 char_cursor#89 char_cursor#90 char_cursor#138 char_cursor#52 char_cursor#142 char_cursor#146 char_cursor#114 char_cursor#137 char_cursor#154 char_cursor#2 char_cursor#1 ] Allocated (was zp ZP_BYTE:34) zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Allocated (was zp ZP_WORD:37) zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] -Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:14 [ main::b#0 ] +Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:12 [ main::b#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -8885,7 +8885,7 @@ bend_from_b10: bend: //SEG9 main main: { - .label b = $e + .label b = $c .label a = 2 .label i = 3 //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] ) @@ -10136,7 +10136,7 @@ print_str: { } //SEG513 print_cls print_cls: { - .label sc = $c + .label sc = 4 //SEG514 [201] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: //SEG515 [201] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 @@ -10544,7 +10544,7 @@ FINAL SYMBOL TABLE (byte) main::a#1 a zp ZP_BYTE:2 5.5 (byte) main::a#10 a zp ZP_BYTE:2 3.860927152317884 (byte) main::b -(byte) main::b#0 b zp ZP_BYTE:14 0.9758064516129035 +(byte) main::b#0 b zp ZP_BYTE:12 0.9758064516129035 (byte[5]) main::cs (const byte[5]) main::cs#0 cs = { (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/word/signed word/dword/signed dword) 199, (byte/signed byte/word/signed word/dword/signed dword) 55, (byte/word/signed word/dword/signed dword) 151, (byte/signed byte/word/signed word/dword/signed dword) 103 } (byte) main::i @@ -10613,8 +10613,8 @@ FINAL SYMBOL TABLE (label) print_cls::@1 (label) print_cls::@return (byte*) print_cls::sc -(byte*) print_cls::sc#1 sc zp ZP_WORD:12 16.5 -(byte*) print_cls::sc#2 sc zp ZP_WORD:12 16.5 +(byte*) print_cls::sc#1 sc zp ZP_WORD:4 16.5 +(byte*) print_cls::sc#2 sc zp ZP_WORD:4 16.5 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -10719,15 +10719,14 @@ reg byte x [ main::r#56 ] reg byte x [ main::r#57 ] reg byte x [ main::r#58 ] reg byte x [ main::r#59 ] -zp ZP_WORD:4 [ line_cursor#10 line_cursor#20 line_cursor#21 line_cursor#1 ] +zp ZP_WORD:4 [ line_cursor#10 line_cursor#20 line_cursor#21 line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] zp ZP_WORD:6 [ printu::op#20 print_str::str#2 print_str::str#1 print_str::str#0 ] zp ZP_BYTE:8 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] reg byte x [ printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 ] reg byte a [ print_char::ch#5 print_char::ch#0 print_char::ch#1 print_char::ch#4 ] zp ZP_WORD:9 [ char_cursor#51 char_cursor#89 char_cursor#90 char_cursor#138 char_cursor#52 char_cursor#142 char_cursor#146 char_cursor#114 char_cursor#137 char_cursor#154 char_cursor#2 char_cursor#1 ] zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] -zp ZP_BYTE:14 [ main::b#0 ] +zp ZP_BYTE:12 [ main::b#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] @@ -10752,7 +10751,7 @@ Score: 15772 //SEG8 @end //SEG9 main main: { - .label b = $e + .label b = $c .label a = 2 .label i = 3 //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] ) @@ -11777,7 +11776,7 @@ print_str: { } //SEG513 print_cls print_cls: { - .label sc = $c + .label sc = 4 //SEG514 [201] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] //SEG515 [201] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.sym b/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.sym index fb040efee..a8900680e 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.sym @@ -93,7 +93,7 @@ (byte) main::a#1 a zp ZP_BYTE:2 5.5 (byte) main::a#10 a zp ZP_BYTE:2 3.860927152317884 (byte) main::b -(byte) main::b#0 b zp ZP_BYTE:14 0.9758064516129035 +(byte) main::b#0 b zp ZP_BYTE:12 0.9758064516129035 (byte[5]) main::cs (const byte[5]) main::cs#0 cs = { (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/word/signed word/dword/signed dword) 199, (byte/signed byte/word/signed word/dword/signed dword) 55, (byte/word/signed word/dword/signed dword) 151, (byte/signed byte/word/signed word/dword/signed dword) 103 } (byte) main::i @@ -162,8 +162,8 @@ (label) print_cls::@1 (label) print_cls::@return (byte*) print_cls::sc -(byte*) print_cls::sc#1 sc zp ZP_WORD:12 16.5 -(byte*) print_cls::sc#2 sc zp ZP_WORD:12 16.5 +(byte*) print_cls::sc#1 sc zp ZP_WORD:4 16.5 +(byte*) print_cls::sc#2 sc zp ZP_WORD:4 16.5 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -268,14 +268,13 @@ reg byte x [ main::r#56 ] reg byte x [ main::r#57 ] reg byte x [ main::r#58 ] reg byte x [ main::r#59 ] -zp ZP_WORD:4 [ line_cursor#10 line_cursor#20 line_cursor#21 line_cursor#1 ] +zp ZP_WORD:4 [ line_cursor#10 line_cursor#20 line_cursor#21 line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] zp ZP_WORD:6 [ printu::op#20 print_str::str#2 print_str::str#1 print_str::str#0 ] zp ZP_BYTE:8 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ] reg byte x [ printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 ] reg byte a [ print_char::ch#5 print_char::ch#0 print_char::ch#1 print_char::ch#4 ] zp ZP_WORD:9 [ char_cursor#51 char_cursor#89 char_cursor#90 char_cursor#138 char_cursor#52 char_cursor#142 char_cursor#146 char_cursor#114 char_cursor#137 char_cursor#154 char_cursor#2 char_cursor#1 ] zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] -zp ZP_BYTE:14 [ main::b#0 ] +zp ZP_BYTE:12 [ main::b#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-division.asm b/src/test/java/dk/camelot64/kickc/test/ref/test-division.asm index 41ed1d60c..5f322dcd2 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-division.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-division.asm @@ -3,7 +3,7 @@ .pc = $80d "Program" .label char_cursor = 7 .label line_cursor = 3 - .label rem16u = $b + .label rem16u = 9 jsr main main: { jsr print_cls @@ -13,8 +13,8 @@ main: { } test_16u: { .label dividend = 5 - .label divisor = $16 - .label res = $f + .label divisor = $f + .label res = $b .label i = 2 lda #0 sta rem16u @@ -142,7 +142,7 @@ print_char: { rts } print_str: { - .label str = 9 + .label str = 5 b1: ldy #0 lda (str),y @@ -164,11 +164,11 @@ print_str: { jmp b1 } div16u: { - .label rem = $b - .label dividend = $d - .label quotient = $f - .label return = $f - .label divisor = $16 + .label rem = 9 + .label dividend = 7 + .label quotient = $b + .label return = $b + .label divisor = $f ldx #0 txa sta quotient @@ -217,11 +217,11 @@ div16u: { rts } test_8u: { - .label rem = $18 - .label dividend = $19 - .label divisor = $1a - .label res = $1b - .label i = $11 + .label rem = $11 + .label dividend = $12 + .label divisor = $13 + .label res = $d + .label i = 2 lda #0 sta rem lda #<$400 @@ -288,10 +288,10 @@ test_8u: { } div8u: { .label remainder = test_8u.rem - .label dividend = $12 - .label quotient = $13 - .label return = $13 - .label divisor = $1a + .label dividend = $d + .label quotient = $e + .label return = $e + .label divisor = $13 ldx #0 txa sta quotient @@ -323,7 +323,7 @@ div8u: { rts } print_cls: { - .label sc = $14 + .label sc = 3 lda #<$400 sta sc lda #>$400 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-division.log b/src/test/java/dk/camelot64/kickc/test/ref/test-division.log index d205ec247..5dc8f3a4d 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-division.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-division.log @@ -4410,20 +4410,20 @@ Coalescing zero page register [ zp ZP_WORD:17 [ div16u::quotient#3 div16u::retur Coalescing zero page register [ zp ZP_WORD:17 [ div16u::quotient#3 div16u::return#0 div16u::quotient#1 div16u::quotient#2 div16u::return#2 ] ] with [ zp ZP_WORD:35 [ test_16u::res#0 ] ] Coalescing zero page register [ zp ZP_WORD:29 [ test_16u::divisor#0 ] ] with [ zp ZP_WORD:31 [ div16u::divisor#0 ] ] Coalescing zero page register [ zp ZP_BYTE:43 [ test_8u::divisor#0 ] ] with [ zp ZP_BYTE:44 [ div8u::divisor#0 ] ] -Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ char_cursor#45 char_cursor#72 char_cursor#71 char_cursor#84 char_cursor#2 char_cursor#11 char_cursor#75 char_cursor#1 char_cursor#98 ] -Allocated (was zp ZP_WORD:11) zp ZP_WORD:9 [ print_str::str#7 print_str::str#9 print_str::str#0 ] -Allocated (was zp ZP_WORD:13) zp ZP_WORD:11 [ div16u::rem#4 rem16u#16 div16u::rem#8 div16u::rem#5 div16u::rem#1 div16u::rem#2 div16u::rem#3 ] -Allocated (was zp ZP_WORD:15) zp ZP_WORD:13 [ div16u::dividend#2 div16u::dividend#1 div16u::dividend#0 ] -Allocated (was zp ZP_WORD:17) zp ZP_WORD:15 [ div16u::quotient#3 div16u::return#0 div16u::quotient#1 div16u::quotient#2 div16u::return#2 test_16u::res#0 ] -Allocated (was zp ZP_BYTE:20) zp ZP_BYTE:17 [ test_8u::i#10 test_8u::i#1 ] -Allocated (was zp ZP_BYTE:22) zp ZP_BYTE:18 [ div8u::dividend#2 div8u::dividend#1 div8u::dividend#0 ] -Allocated (was zp ZP_BYTE:23) zp ZP_BYTE:19 [ div8u::quotient#3 div8u::return#0 div8u::quotient#1 div8u::quotient#2 ] -Allocated (was zp ZP_WORD:25) zp ZP_WORD:20 [ print_cls::sc#2 print_cls::sc#1 ] -Allocated (was zp ZP_WORD:29) zp ZP_WORD:22 [ test_16u::divisor#0 div16u::divisor#0 ] -Allocated (was zp ZP_BYTE:41) zp ZP_BYTE:24 [ test_8u::rem#0 ] -Allocated (was zp ZP_BYTE:42) zp ZP_BYTE:25 [ test_8u::dividend#0 ] -Allocated (was zp ZP_BYTE:43) zp ZP_BYTE:26 [ test_8u::divisor#0 div8u::divisor#0 ] -Allocated (was zp ZP_BYTE:46) zp ZP_BYTE:27 [ test_8u::res#0 ] +Coalescing zero page register [ zp ZP_BYTE:2 [ test_16u::i#10 test_16u::i#1 ] ] with [ zp ZP_BYTE:20 [ test_8u::i#10 test_8u::i#1 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ line_cursor#11 line_cursor#22 line_cursor#1 line_cursor#25 ] ] with [ zp ZP_WORD:25 [ print_cls::sc#2 print_cls::sc#1 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ print_word::w#4 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 test_16u::dividend#0 ] ] with [ zp ZP_WORD:11 [ print_str::str#7 print_str::str#9 print_str::str#0 ] ] +Coalescing zero page register [ zp ZP_WORD:9 [ char_cursor#45 char_cursor#72 char_cursor#71 char_cursor#84 char_cursor#2 char_cursor#11 char_cursor#75 char_cursor#1 char_cursor#98 ] ] with [ zp ZP_WORD:15 [ div16u::dividend#2 div16u::dividend#1 div16u::dividend#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:22 [ div8u::dividend#2 div8u::dividend#1 div8u::dividend#0 ] ] with [ zp ZP_BYTE:46 [ test_8u::res#0 ] ] +Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ char_cursor#45 char_cursor#72 char_cursor#71 char_cursor#84 char_cursor#2 char_cursor#11 char_cursor#75 char_cursor#1 char_cursor#98 div16u::dividend#2 div16u::dividend#1 div16u::dividend#0 ] +Allocated (was zp ZP_WORD:13) zp ZP_WORD:9 [ div16u::rem#4 rem16u#16 div16u::rem#8 div16u::rem#5 div16u::rem#1 div16u::rem#2 div16u::rem#3 ] +Allocated (was zp ZP_WORD:17) zp ZP_WORD:11 [ div16u::quotient#3 div16u::return#0 div16u::quotient#1 div16u::quotient#2 div16u::return#2 test_16u::res#0 ] +Allocated (was zp ZP_BYTE:22) zp ZP_BYTE:13 [ div8u::dividend#2 div8u::dividend#1 div8u::dividend#0 test_8u::res#0 ] +Allocated (was zp ZP_BYTE:23) zp ZP_BYTE:14 [ div8u::quotient#3 div8u::return#0 div8u::quotient#1 div8u::quotient#2 ] +Allocated (was zp ZP_WORD:29) zp ZP_WORD:15 [ test_16u::divisor#0 div16u::divisor#0 ] +Allocated (was zp ZP_BYTE:41) zp ZP_BYTE:17 [ test_8u::rem#0 ] +Allocated (was zp ZP_BYTE:42) zp ZP_BYTE:18 [ test_8u::dividend#0 ] +Allocated (was zp ZP_BYTE:43) zp ZP_BYTE:19 [ test_8u::divisor#0 div8u::divisor#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -4433,7 +4433,7 @@ ASSEMBLER BEFORE OPTIMIZATION //SEG1 Global Constants & labels .label char_cursor = 7 .label line_cursor = 3 - .label rem16u = $b + .label rem16u = 9 //SEG2 @begin bbegin: //SEG3 [1] phi from @begin to @13 [phi:@begin->@13] @@ -4481,8 +4481,8 @@ main: { //SEG21 test_16u test_16u: { .label dividend = 5 - .label divisor = $16 - .label res = $f + .label divisor = $f + .label res = $b .label i = 2 //SEG22 [12] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] b1_from_test_16u: @@ -4520,18 +4520,18 @@ test_16u: { lda dividend+1 sta div16u.dividend+1 //SEG32 [16] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#1 div16u::divisor#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#1 div16u::divisor#0 line_cursor#1 ] ) - // (word) div16u::divisor#0 = (word) test_16u::divisor#0 // register copy zp ZP_WORD:22 + // (word) div16u::divisor#0 = (word) test_16u::divisor#0 // register copy zp ZP_WORD:15 //SEG33 [17] call div16u param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#0 line_cursor#1 ] ) //SEG34 [70] phi from test_16u::@1 to div16u [phi:test_16u::@1->div16u] div16u_from_b1: jsr div16u //SEG35 [18] (word) div16u::return#2 ← (word) div16u::return#0 [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 line_cursor#1 ] ) - // (word) div16u::return#2 = (word) div16u::return#0 // register copy zp ZP_WORD:15 + // (word) div16u::return#2 = (word) div16u::return#0 // register copy zp ZP_WORD:11 jmp b3 //SEG36 test_16u::@3 b3: //SEG37 [19] (word) test_16u::res#0 ← (word) div16u::return#2 [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 line_cursor#1 ] ) - // (word) test_16u::res#0 = (word) div16u::return#2 // register copy zp ZP_WORD:15 + // (word) test_16u::res#0 = (word) div16u::return#2 // register copy zp ZP_WORD:11 //SEG38 [20] (word) print_word::w#0 ← (word) test_16u::dividend#0 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 print_word::w#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 print_word::w#0 line_cursor#1 ] ) // (word) print_word::w#0 = (word) test_16u::dividend#0 // register copy zp ZP_WORD:5 //SEG39 [21] (byte*~) char_cursor#84 ← (byte*) line_cursor#1 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 print_word::w#0 char_cursor#84 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 print_word::w#0 char_cursor#84 line_cursor#1 ] ) -- pbuz1=pbuz2 @@ -4781,7 +4781,7 @@ print_char: { } //SEG130 print_str print_str: { - .label str = 9 + .label str = 5 //SEG131 [64] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: @@ -4821,11 +4821,11 @@ print_str: { } //SEG142 div16u div16u: { - .label rem = $b - .label dividend = $d - .label quotient = $f - .label return = $f - .label divisor = $16 + .label rem = 9 + .label dividend = 7 + .label quotient = $b + .label return = $b + .label divisor = $f //SEG143 [71] phi from div16u to div16u::@1 [phi:div16u->div16u::@1] b1_from_div16u: //SEG144 [71] phi (byte) div16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->div16u::@1#0] -- vbuxx=vbuc1 @@ -4928,11 +4928,11 @@ div16u: { } //SEG177 test_8u test_8u: { - .label rem = $18 - .label dividend = $19 - .label divisor = $1a - .label res = $1b - .label i = $11 + .label rem = $11 + .label dividend = $12 + .label divisor = $13 + .label res = $d + .label i = 2 //SEG178 [87] (byte) test_8u::rem#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ test_8u::rem#0 ] ( main:2::test_8u:7 [ test_8u::rem#0 ] ) -- vbuz1=vbuc1 lda #0 sta rem @@ -4966,7 +4966,7 @@ test_8u: { lda dividend sta div8u.dividend //SEG187 [92] (byte) div8u::divisor#0 ← (byte) test_8u::divisor#0 [ line_cursor#25 char_cursor#75 test_8u::rem#0 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#1 div8u::divisor#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::rem#0 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#1 div8u::divisor#0 ] ) - // (byte) div8u::divisor#0 = (byte) test_8u::divisor#0 // register copy zp ZP_BYTE:26 + // (byte) div8u::divisor#0 = (byte) test_8u::divisor#0 // register copy zp ZP_BYTE:19 //SEG188 [93] call div8u param-assignment [ line_cursor#25 char_cursor#75 test_8u::rem#0 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::rem#0 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#0 ] ) //SEG189 [116] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] div8u_from_b1: @@ -5107,10 +5107,10 @@ test_8u: { //SEG247 div8u div8u: { .label remainder = test_8u.rem - .label dividend = $12 - .label quotient = $13 - .label return = $13 - .label divisor = $1a + .label dividend = $d + .label quotient = $e + .label return = $e + .label divisor = $13 //SEG248 [117] phi from div8u to div8u::@1 [phi:div8u->div8u::@1] b1_from_div8u: //SEG249 [117] phi (byte) div8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#0] -- vbuxx=vbuc1 @@ -5196,7 +5196,7 @@ div8u: { } //SEG283 print_cls print_cls: { - .label sc = $14 + .label sc = 3 //SEG284 [134] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: //SEG285 [134] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 @@ -5446,28 +5446,28 @@ FINAL SYMBOL TABLE (label) div16u::@5 (label) div16u::@return (word) div16u::dividend -(word) div16u::dividend#0 dividend zp ZP_WORD:13 25.25 -(word) div16u::dividend#1 dividend zp ZP_WORD:13 4.333333333333333 -(word) div16u::dividend#2 dividend zp ZP_WORD:13 43.57142857142858 +(word) div16u::dividend#0 dividend zp ZP_WORD:7 25.25 +(word) div16u::dividend#1 dividend zp ZP_WORD:7 4.333333333333333 +(word) div16u::dividend#2 dividend zp ZP_WORD:7 43.57142857142858 (word) div16u::divisor -(word) div16u::divisor#0 divisor zp ZP_WORD:22 12.529411764705884 +(word) div16u::divisor#0 divisor zp ZP_WORD:15 12.529411764705884 (byte) div16u::i (byte) div16u::i#1 reg byte x 151.5 (byte) div16u::i#2 reg byte x 15.538461538461538 (word) div16u::quotient -(word) div16u::quotient#1 quotient zp ZP_WORD:15 151.5 -(word) div16u::quotient#2 quotient zp ZP_WORD:15 101.0 -(word) div16u::quotient#3 quotient zp ZP_WORD:15 25.25 +(word) div16u::quotient#1 quotient zp ZP_WORD:11 151.5 +(word) div16u::quotient#2 quotient zp ZP_WORD:11 101.0 +(word) div16u::quotient#3 quotient zp ZP_WORD:11 25.25 (word) div16u::rem -(word) div16u::rem#1 rem zp ZP_WORD:11 75.75 -(word) div16u::rem#2 rem zp ZP_WORD:11 202.0 -(word) div16u::rem#3 rem zp ZP_WORD:11 202.0 -(word) div16u::rem#4 rem zp ZP_WORD:11 202.0 -(word) div16u::rem#5 rem zp ZP_WORD:11 101.0 -(word) div16u::rem#8 rem zp ZP_WORD:11 12.5 +(word) div16u::rem#1 rem zp ZP_WORD:9 75.75 +(word) div16u::rem#2 rem zp ZP_WORD:9 202.0 +(word) div16u::rem#3 rem zp ZP_WORD:9 202.0 +(word) div16u::rem#4 rem zp ZP_WORD:9 202.0 +(word) div16u::rem#5 rem zp ZP_WORD:9 101.0 +(word) div16u::rem#8 rem zp ZP_WORD:9 12.5 (word) div16u::return -(word) div16u::return#0 return zp ZP_WORD:15 62.8 -(word) div16u::return#2 return zp ZP_WORD:15 22.0 +(word) div16u::return#0 return zp ZP_WORD:11 62.8 +(word) div16u::return#2 return zp ZP_WORD:11 22.0 (byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor , (byte*) div8u::remainder) (byte~) div8u::$1 reg byte a 202.0 (label) div8u::@1 @@ -5478,18 +5478,18 @@ FINAL SYMBOL TABLE (label) div8u::@6 (label) div8u::@return (byte) div8u::dividend -(byte) div8u::dividend#0 dividend zp ZP_BYTE:18 25.25 -(byte) div8u::dividend#1 dividend zp ZP_BYTE:18 4.333333333333333 -(byte) div8u::dividend#2 dividend zp ZP_BYTE:18 50.83333333333333 +(byte) div8u::dividend#0 dividend zp ZP_BYTE:13 25.25 +(byte) div8u::dividend#1 dividend zp ZP_BYTE:13 4.333333333333333 +(byte) div8u::dividend#2 dividend zp ZP_BYTE:13 50.83333333333333 (byte) div8u::divisor -(byte) div8u::divisor#0 divisor zp ZP_BYTE:26 13.3125 +(byte) div8u::divisor#0 divisor zp ZP_BYTE:19 13.3125 (byte) div8u::i (byte) div8u::i#1 reg byte x 151.5 (byte) div8u::i#2 reg byte x 16.833333333333332 (byte) div8u::quotient -(byte) div8u::quotient#1 quotient zp ZP_BYTE:19 151.5 -(byte) div8u::quotient#2 quotient zp ZP_BYTE:19 101.0 -(byte) div8u::quotient#3 quotient zp ZP_BYTE:19 28.857142857142858 +(byte) div8u::quotient#1 quotient zp ZP_BYTE:14 151.5 +(byte) div8u::quotient#2 quotient zp ZP_BYTE:14 101.0 +(byte) div8u::quotient#3 quotient zp ZP_BYTE:14 28.857142857142858 (byte) div8u::rem (byte) div8u::rem#1 reg byte y 101.0 (byte) div8u::rem#2 reg byte y 202.0 @@ -5500,7 +5500,7 @@ FINAL SYMBOL TABLE (byte*) div8u::remainder (const byte*) div8u::remainder#0 remainder = &(byte) test_8u::rem#0 (byte) div8u::return -(byte) div8u::return#0 return zp ZP_BYTE:19 52.33333333333333 +(byte) div8u::return#0 return zp ZP_BYTE:14 52.33333333333333 (byte) div8u::return#2 reg byte a 22.0 (byte*) line_cursor (byte*) line_cursor#1 line_cursor zp ZP_WORD:3 9.131578947368421 @@ -5536,8 +5536,8 @@ FINAL SYMBOL TABLE (label) print_cls::@1 (label) print_cls::@return (byte*) print_cls::sc -(byte*) print_cls::sc#1 sc zp ZP_WORD:20 16.5 -(byte*) print_cls::sc#2 sc zp ZP_WORD:20 16.5 +(byte*) print_cls::sc#1 sc zp ZP_WORD:3 16.5 +(byte*) print_cls::sc#2 sc zp ZP_WORD:3 16.5 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -5546,9 +5546,9 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp ZP_WORD:9 202.0 -(byte*) print_str::str#7 str zp ZP_WORD:9 101.5 -(byte*) print_str::str#9 str zp ZP_WORD:9 2.0 +(byte*) print_str::str#0 str zp ZP_WORD:5 202.0 +(byte*) print_str::str#7 str zp ZP_WORD:5 101.5 +(byte*) print_str::str#9 str zp ZP_WORD:5 2.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -5559,7 +5559,7 @@ FINAL SYMBOL TABLE (word) print_word::w#3 w zp ZP_WORD:5 22.0 (word) print_word::w#4 w zp ZP_WORD:5 15.999999999999998 (word) rem16u -(word) rem16u#16 rem16u zp ZP_WORD:11 110.0 +(word) rem16u#16 rem16u zp ZP_WORD:9 110.0 (void()) test_16u() (label) test_16u::@1 (label) test_16u::@10 @@ -5577,14 +5577,14 @@ FINAL SYMBOL TABLE (word[]) test_16u::dividends (const word[]) test_16u::dividends#0 dividends = { (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535 } (word) test_16u::divisor -(word) test_16u::divisor#0 divisor zp ZP_WORD:22 3.0 +(word) test_16u::divisor#0 divisor zp ZP_WORD:15 3.0 (word[]) test_16u::divisors (const word[]) test_16u::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 } (byte) test_16u::i (byte) test_16u::i#1 i zp ZP_BYTE:2 16.5 (byte) test_16u::i#10 i zp ZP_BYTE:2 1.76 (word) test_16u::res -(word) test_16u::res#0 res zp ZP_WORD:15 2.2 +(word) test_16u::res#0 res zp ZP_WORD:11 2.2 (const string) test_16u::str str = (string) " / @" (const string) test_16u::str1 str1 = (string) " = @" (const string) test_16u::str2 str2 = (string) " @" @@ -5602,51 +5602,46 @@ FINAL SYMBOL TABLE (label) test_8u::@9 (label) test_8u::@return (byte) test_8u::dividend -(byte) test_8u::dividend#0 dividend zp ZP_BYTE:25 4.714285714285714 +(byte) test_8u::dividend#0 dividend zp ZP_BYTE:18 4.714285714285714 (byte[]) test_8u::dividends (const byte[]) test_8u::dividends#0 dividends = { (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255 } (byte) test_8u::divisor -(byte) test_8u::divisor#0 divisor zp ZP_BYTE:26 3.3000000000000003 +(byte) test_8u::divisor#0 divisor zp ZP_BYTE:19 3.3000000000000003 (byte[]) test_8u::divisors (const byte[]) test_8u::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 } (byte) test_8u::i -(byte) test_8u::i#1 i zp ZP_BYTE:17 11.0 -(byte) test_8u::i#10 i zp ZP_BYTE:17 1.8333333333333333 +(byte) test_8u::i#1 i zp ZP_BYTE:2 11.0 +(byte) test_8u::i#10 i zp ZP_BYTE:2 1.8333333333333333 (byte) test_8u::rem -(byte) test_8u::rem#0 rem zp ZP_BYTE:24 0.4642857142857143 +(byte) test_8u::rem#0 rem zp ZP_BYTE:17 0.4642857142857143 (byte) test_8u::res -(byte) test_8u::res#0 res zp ZP_BYTE:27 2.4444444444444446 +(byte) test_8u::res#0 res zp ZP_BYTE:13 2.4444444444444446 (const string) test_8u::str str = (string) " / @" (const string) test_8u::str1 str1 = (string) " = @" (const string) test_8u::str2 str2 = (string) " @" -zp ZP_BYTE:2 [ test_16u::i#10 test_16u::i#1 ] -zp ZP_WORD:3 [ line_cursor#11 line_cursor#22 line_cursor#1 line_cursor#25 ] -zp ZP_WORD:5 [ print_word::w#4 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 test_16u::dividend#0 ] +zp ZP_BYTE:2 [ test_16u::i#10 test_16u::i#1 test_8u::i#10 test_8u::i#1 ] +zp ZP_WORD:3 [ line_cursor#11 line_cursor#22 line_cursor#1 line_cursor#25 print_cls::sc#2 print_cls::sc#1 ] +zp ZP_WORD:5 [ print_word::w#4 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 test_16u::dividend#0 print_str::str#7 print_str::str#9 print_str::str#0 ] reg byte x [ print_byte::b#6 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -zp ZP_WORD:7 [ char_cursor#45 char_cursor#72 char_cursor#71 char_cursor#84 char_cursor#2 char_cursor#11 char_cursor#75 char_cursor#1 char_cursor#98 ] -zp ZP_WORD:9 [ print_str::str#7 print_str::str#9 print_str::str#0 ] -zp ZP_WORD:11 [ div16u::rem#4 rem16u#16 div16u::rem#8 div16u::rem#5 div16u::rem#1 div16u::rem#2 div16u::rem#3 ] -zp ZP_WORD:13 [ div16u::dividend#2 div16u::dividend#1 div16u::dividend#0 ] -zp ZP_WORD:15 [ div16u::quotient#3 div16u::return#0 div16u::quotient#1 div16u::quotient#2 div16u::return#2 test_16u::res#0 ] +zp ZP_WORD:7 [ char_cursor#45 char_cursor#72 char_cursor#71 char_cursor#84 char_cursor#2 char_cursor#11 char_cursor#75 char_cursor#1 char_cursor#98 div16u::dividend#2 div16u::dividend#1 div16u::dividend#0 ] +zp ZP_WORD:9 [ div16u::rem#4 rem16u#16 div16u::rem#8 div16u::rem#5 div16u::rem#1 div16u::rem#2 div16u::rem#3 ] +zp ZP_WORD:11 [ div16u::quotient#3 div16u::return#0 div16u::quotient#1 div16u::quotient#2 div16u::return#2 test_16u::res#0 ] reg byte x [ div16u::i#2 div16u::i#1 ] -zp ZP_BYTE:17 [ test_8u::i#10 test_8u::i#1 ] reg byte y [ div8u::rem#4 div8u::rem#8 div8u::rem#5 div8u::rem#1 div8u::rem#2 div8u::rem#3 ] -zp ZP_BYTE:18 [ div8u::dividend#2 div8u::dividend#1 div8u::dividend#0 ] -zp ZP_BYTE:19 [ div8u::quotient#3 div8u::return#0 div8u::quotient#1 div8u::quotient#2 ] +zp ZP_BYTE:13 [ div8u::dividend#2 div8u::dividend#1 div8u::dividend#0 test_8u::res#0 ] +zp ZP_BYTE:14 [ div8u::quotient#3 div8u::return#0 div8u::quotient#1 div8u::quotient#2 ] reg byte x [ div8u::i#2 div8u::i#1 ] -zp ZP_WORD:20 [ print_cls::sc#2 print_cls::sc#1 ] -zp ZP_WORD:22 [ test_16u::divisor#0 div16u::divisor#0 ] +zp ZP_WORD:15 [ test_16u::divisor#0 div16u::divisor#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] reg byte a [ div16u::$1 ] reg byte a [ div16u::$2 ] -zp ZP_BYTE:24 [ test_8u::rem#0 ] -zp ZP_BYTE:25 [ test_8u::dividend#0 ] -zp ZP_BYTE:26 [ test_8u::divisor#0 div8u::divisor#0 ] +zp ZP_BYTE:17 [ test_8u::rem#0 ] +zp ZP_BYTE:18 [ test_8u::dividend#0 ] +zp ZP_BYTE:19 [ test_8u::divisor#0 div8u::divisor#0 ] reg byte a [ div8u::return#2 ] -zp ZP_BYTE:27 [ test_8u::res#0 ] reg byte a [ div8u::$1 ] @@ -5660,7 +5655,7 @@ Score: 30932 //SEG1 Global Constants & labels .label char_cursor = 7 .label line_cursor = 3 - .label rem16u = $b + .label rem16u = 9 //SEG2 @begin //SEG3 [1] phi from @begin to @13 [phi:@begin->@13] //SEG4 @13 @@ -5690,8 +5685,8 @@ main: { //SEG21 test_16u test_16u: { .label dividend = 5 - .label divisor = $16 - .label res = $f + .label divisor = $f + .label res = $b .label i = 2 //SEG22 [12] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] //SEG23 [12] phi (word) rem16u#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vwuz1=vbuc1 @@ -5722,15 +5717,15 @@ test_16u: { lda dividend+1 sta div16u.dividend+1 //SEG32 [16] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#1 div16u::divisor#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#1 div16u::divisor#0 line_cursor#1 ] ) - // (word) div16u::divisor#0 = (word) test_16u::divisor#0 // register copy zp ZP_WORD:22 + // (word) div16u::divisor#0 = (word) test_16u::divisor#0 // register copy zp ZP_WORD:15 //SEG33 [17] call div16u param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#0 line_cursor#1 ] ) //SEG34 [70] phi from test_16u::@1 to div16u [phi:test_16u::@1->div16u] jsr div16u //SEG35 [18] (word) div16u::return#2 ← (word) div16u::return#0 [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 line_cursor#1 ] ) - // (word) div16u::return#2 = (word) div16u::return#0 // register copy zp ZP_WORD:15 + // (word) div16u::return#2 = (word) div16u::return#0 // register copy zp ZP_WORD:11 //SEG36 test_16u::@3 //SEG37 [19] (word) test_16u::res#0 ← (word) div16u::return#2 [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 line_cursor#1 ] ) - // (word) test_16u::res#0 = (word) div16u::return#2 // register copy zp ZP_WORD:15 + // (word) test_16u::res#0 = (word) div16u::return#2 // register copy zp ZP_WORD:11 //SEG38 [20] (word) print_word::w#0 ← (word) test_16u::dividend#0 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 print_word::w#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 print_word::w#0 line_cursor#1 ] ) // (word) print_word::w#0 = (word) test_16u::dividend#0 // register copy zp ZP_WORD:5 //SEG39 [21] (byte*~) char_cursor#84 ← (byte*) line_cursor#1 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 print_word::w#0 char_cursor#84 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 print_word::w#0 char_cursor#84 line_cursor#1 ] ) -- pbuz1=pbuz2 @@ -5932,7 +5927,7 @@ print_char: { } //SEG130 print_str print_str: { - .label str = 9 + .label str = 5 //SEG131 [64] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] //SEG132 [64] phi (byte*) char_cursor#2 = (byte*) char_cursor#11 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy //SEG133 [64] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy @@ -5966,11 +5961,11 @@ print_str: { } //SEG142 div16u div16u: { - .label rem = $b - .label dividend = $d - .label quotient = $f - .label return = $f - .label divisor = $16 + .label rem = 9 + .label dividend = 7 + .label quotient = $b + .label return = $b + .label divisor = $f //SEG143 [71] phi from div16u to div16u::@1 [phi:div16u->div16u::@1] //SEG144 [71] phi (byte) div16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->div16u::@1#0] -- vbuxx=vbuc1 ldx #0 @@ -6054,11 +6049,11 @@ div16u: { } //SEG177 test_8u test_8u: { - .label rem = $18 - .label dividend = $19 - .label divisor = $1a - .label res = $1b - .label i = $11 + .label rem = $11 + .label dividend = $12 + .label divisor = $13 + .label res = $d + .label i = 2 //SEG178 [87] (byte) test_8u::rem#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ test_8u::rem#0 ] ( main:2::test_8u:7 [ test_8u::rem#0 ] ) -- vbuz1=vbuc1 lda #0 sta rem @@ -6089,7 +6084,7 @@ test_8u: { lda dividend sta div8u.dividend //SEG187 [92] (byte) div8u::divisor#0 ← (byte) test_8u::divisor#0 [ line_cursor#25 char_cursor#75 test_8u::rem#0 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#1 div8u::divisor#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::rem#0 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#1 div8u::divisor#0 ] ) - // (byte) div8u::divisor#0 = (byte) test_8u::divisor#0 // register copy zp ZP_BYTE:26 + // (byte) div8u::divisor#0 = (byte) test_8u::divisor#0 // register copy zp ZP_BYTE:19 //SEG188 [93] call div8u param-assignment [ line_cursor#25 char_cursor#75 test_8u::rem#0 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::rem#0 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#0 ] ) //SEG189 [116] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] jsr div8u @@ -6196,10 +6191,10 @@ test_8u: { //SEG247 div8u div8u: { .label remainder = test_8u.rem - .label dividend = $12 - .label quotient = $13 - .label return = $13 - .label divisor = $1a + .label dividend = $d + .label quotient = $e + .label return = $e + .label divisor = $13 //SEG248 [117] phi from div8u to div8u::@1 [phi:div8u->div8u::@1] //SEG249 [117] phi (byte) div8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#0] -- vbuxx=vbuc1 ldx #0 @@ -6267,7 +6262,7 @@ div8u: { } //SEG283 print_cls print_cls: { - .label sc = $14 + .label sc = 3 //SEG284 [134] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] //SEG285 [134] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-division.sym b/src/test/java/dk/camelot64/kickc/test/ref/test-division.sym index e65797b53..6ea86a2a2 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-division.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-division.sym @@ -21,28 +21,28 @@ (label) div16u::@5 (label) div16u::@return (word) div16u::dividend -(word) div16u::dividend#0 dividend zp ZP_WORD:13 25.25 -(word) div16u::dividend#1 dividend zp ZP_WORD:13 4.333333333333333 -(word) div16u::dividend#2 dividend zp ZP_WORD:13 43.57142857142858 +(word) div16u::dividend#0 dividend zp ZP_WORD:7 25.25 +(word) div16u::dividend#1 dividend zp ZP_WORD:7 4.333333333333333 +(word) div16u::dividend#2 dividend zp ZP_WORD:7 43.57142857142858 (word) div16u::divisor -(word) div16u::divisor#0 divisor zp ZP_WORD:22 12.529411764705884 +(word) div16u::divisor#0 divisor zp ZP_WORD:15 12.529411764705884 (byte) div16u::i (byte) div16u::i#1 reg byte x 151.5 (byte) div16u::i#2 reg byte x 15.538461538461538 (word) div16u::quotient -(word) div16u::quotient#1 quotient zp ZP_WORD:15 151.5 -(word) div16u::quotient#2 quotient zp ZP_WORD:15 101.0 -(word) div16u::quotient#3 quotient zp ZP_WORD:15 25.25 +(word) div16u::quotient#1 quotient zp ZP_WORD:11 151.5 +(word) div16u::quotient#2 quotient zp ZP_WORD:11 101.0 +(word) div16u::quotient#3 quotient zp ZP_WORD:11 25.25 (word) div16u::rem -(word) div16u::rem#1 rem zp ZP_WORD:11 75.75 -(word) div16u::rem#2 rem zp ZP_WORD:11 202.0 -(word) div16u::rem#3 rem zp ZP_WORD:11 202.0 -(word) div16u::rem#4 rem zp ZP_WORD:11 202.0 -(word) div16u::rem#5 rem zp ZP_WORD:11 101.0 -(word) div16u::rem#8 rem zp ZP_WORD:11 12.5 +(word) div16u::rem#1 rem zp ZP_WORD:9 75.75 +(word) div16u::rem#2 rem zp ZP_WORD:9 202.0 +(word) div16u::rem#3 rem zp ZP_WORD:9 202.0 +(word) div16u::rem#4 rem zp ZP_WORD:9 202.0 +(word) div16u::rem#5 rem zp ZP_WORD:9 101.0 +(word) div16u::rem#8 rem zp ZP_WORD:9 12.5 (word) div16u::return -(word) div16u::return#0 return zp ZP_WORD:15 62.8 -(word) div16u::return#2 return zp ZP_WORD:15 22.0 +(word) div16u::return#0 return zp ZP_WORD:11 62.8 +(word) div16u::return#2 return zp ZP_WORD:11 22.0 (byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor , (byte*) div8u::remainder) (byte~) div8u::$1 reg byte a 202.0 (label) div8u::@1 @@ -53,18 +53,18 @@ (label) div8u::@6 (label) div8u::@return (byte) div8u::dividend -(byte) div8u::dividend#0 dividend zp ZP_BYTE:18 25.25 -(byte) div8u::dividend#1 dividend zp ZP_BYTE:18 4.333333333333333 -(byte) div8u::dividend#2 dividend zp ZP_BYTE:18 50.83333333333333 +(byte) div8u::dividend#0 dividend zp ZP_BYTE:13 25.25 +(byte) div8u::dividend#1 dividend zp ZP_BYTE:13 4.333333333333333 +(byte) div8u::dividend#2 dividend zp ZP_BYTE:13 50.83333333333333 (byte) div8u::divisor -(byte) div8u::divisor#0 divisor zp ZP_BYTE:26 13.3125 +(byte) div8u::divisor#0 divisor zp ZP_BYTE:19 13.3125 (byte) div8u::i (byte) div8u::i#1 reg byte x 151.5 (byte) div8u::i#2 reg byte x 16.833333333333332 (byte) div8u::quotient -(byte) div8u::quotient#1 quotient zp ZP_BYTE:19 151.5 -(byte) div8u::quotient#2 quotient zp ZP_BYTE:19 101.0 -(byte) div8u::quotient#3 quotient zp ZP_BYTE:19 28.857142857142858 +(byte) div8u::quotient#1 quotient zp ZP_BYTE:14 151.5 +(byte) div8u::quotient#2 quotient zp ZP_BYTE:14 101.0 +(byte) div8u::quotient#3 quotient zp ZP_BYTE:14 28.857142857142858 (byte) div8u::rem (byte) div8u::rem#1 reg byte y 101.0 (byte) div8u::rem#2 reg byte y 202.0 @@ -75,7 +75,7 @@ (byte*) div8u::remainder (const byte*) div8u::remainder#0 remainder = &(byte) test_8u::rem#0 (byte) div8u::return -(byte) div8u::return#0 return zp ZP_BYTE:19 52.33333333333333 +(byte) div8u::return#0 return zp ZP_BYTE:14 52.33333333333333 (byte) div8u::return#2 reg byte a 22.0 (byte*) line_cursor (byte*) line_cursor#1 line_cursor zp ZP_WORD:3 9.131578947368421 @@ -111,8 +111,8 @@ (label) print_cls::@1 (label) print_cls::@return (byte*) print_cls::sc -(byte*) print_cls::sc#1 sc zp ZP_WORD:20 16.5 -(byte*) print_cls::sc#2 sc zp ZP_WORD:20 16.5 +(byte*) print_cls::sc#1 sc zp ZP_WORD:3 16.5 +(byte*) print_cls::sc#2 sc zp ZP_WORD:3 16.5 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -121,9 +121,9 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp ZP_WORD:9 202.0 -(byte*) print_str::str#7 str zp ZP_WORD:9 101.5 -(byte*) print_str::str#9 str zp ZP_WORD:9 2.0 +(byte*) print_str::str#0 str zp ZP_WORD:5 202.0 +(byte*) print_str::str#7 str zp ZP_WORD:5 101.5 +(byte*) print_str::str#9 str zp ZP_WORD:5 2.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return @@ -134,7 +134,7 @@ (word) print_word::w#3 w zp ZP_WORD:5 22.0 (word) print_word::w#4 w zp ZP_WORD:5 15.999999999999998 (word) rem16u -(word) rem16u#16 rem16u zp ZP_WORD:11 110.0 +(word) rem16u#16 rem16u zp ZP_WORD:9 110.0 (void()) test_16u() (label) test_16u::@1 (label) test_16u::@10 @@ -152,14 +152,14 @@ (word[]) test_16u::dividends (const word[]) test_16u::dividends#0 dividends = { (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535 } (word) test_16u::divisor -(word) test_16u::divisor#0 divisor zp ZP_WORD:22 3.0 +(word) test_16u::divisor#0 divisor zp ZP_WORD:15 3.0 (word[]) test_16u::divisors (const word[]) test_16u::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 } (byte) test_16u::i (byte) test_16u::i#1 i zp ZP_BYTE:2 16.5 (byte) test_16u::i#10 i zp ZP_BYTE:2 1.76 (word) test_16u::res -(word) test_16u::res#0 res zp ZP_WORD:15 2.2 +(word) test_16u::res#0 res zp ZP_WORD:11 2.2 (const string) test_16u::str str = (string) " / @" (const string) test_16u::str1 str1 = (string) " = @" (const string) test_16u::str2 str2 = (string) " @" @@ -177,49 +177,44 @@ (label) test_8u::@9 (label) test_8u::@return (byte) test_8u::dividend -(byte) test_8u::dividend#0 dividend zp ZP_BYTE:25 4.714285714285714 +(byte) test_8u::dividend#0 dividend zp ZP_BYTE:18 4.714285714285714 (byte[]) test_8u::dividends (const byte[]) test_8u::dividends#0 dividends = { (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255 } (byte) test_8u::divisor -(byte) test_8u::divisor#0 divisor zp ZP_BYTE:26 3.3000000000000003 +(byte) test_8u::divisor#0 divisor zp ZP_BYTE:19 3.3000000000000003 (byte[]) test_8u::divisors (const byte[]) test_8u::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 } (byte) test_8u::i -(byte) test_8u::i#1 i zp ZP_BYTE:17 11.0 -(byte) test_8u::i#10 i zp ZP_BYTE:17 1.8333333333333333 +(byte) test_8u::i#1 i zp ZP_BYTE:2 11.0 +(byte) test_8u::i#10 i zp ZP_BYTE:2 1.8333333333333333 (byte) test_8u::rem -(byte) test_8u::rem#0 rem zp ZP_BYTE:24 0.4642857142857143 +(byte) test_8u::rem#0 rem zp ZP_BYTE:17 0.4642857142857143 (byte) test_8u::res -(byte) test_8u::res#0 res zp ZP_BYTE:27 2.4444444444444446 +(byte) test_8u::res#0 res zp ZP_BYTE:13 2.4444444444444446 (const string) test_8u::str str = (string) " / @" (const string) test_8u::str1 str1 = (string) " = @" (const string) test_8u::str2 str2 = (string) " @" -zp ZP_BYTE:2 [ test_16u::i#10 test_16u::i#1 ] -zp ZP_WORD:3 [ line_cursor#11 line_cursor#22 line_cursor#1 line_cursor#25 ] -zp ZP_WORD:5 [ print_word::w#4 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 test_16u::dividend#0 ] +zp ZP_BYTE:2 [ test_16u::i#10 test_16u::i#1 test_8u::i#10 test_8u::i#1 ] +zp ZP_WORD:3 [ line_cursor#11 line_cursor#22 line_cursor#1 line_cursor#25 print_cls::sc#2 print_cls::sc#1 ] +zp ZP_WORD:5 [ print_word::w#4 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 test_16u::dividend#0 print_str::str#7 print_str::str#9 print_str::str#0 ] reg byte x [ print_byte::b#6 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -zp ZP_WORD:7 [ char_cursor#45 char_cursor#72 char_cursor#71 char_cursor#84 char_cursor#2 char_cursor#11 char_cursor#75 char_cursor#1 char_cursor#98 ] -zp ZP_WORD:9 [ print_str::str#7 print_str::str#9 print_str::str#0 ] -zp ZP_WORD:11 [ div16u::rem#4 rem16u#16 div16u::rem#8 div16u::rem#5 div16u::rem#1 div16u::rem#2 div16u::rem#3 ] -zp ZP_WORD:13 [ div16u::dividend#2 div16u::dividend#1 div16u::dividend#0 ] -zp ZP_WORD:15 [ div16u::quotient#3 div16u::return#0 div16u::quotient#1 div16u::quotient#2 div16u::return#2 test_16u::res#0 ] +zp ZP_WORD:7 [ char_cursor#45 char_cursor#72 char_cursor#71 char_cursor#84 char_cursor#2 char_cursor#11 char_cursor#75 char_cursor#1 char_cursor#98 div16u::dividend#2 div16u::dividend#1 div16u::dividend#0 ] +zp ZP_WORD:9 [ div16u::rem#4 rem16u#16 div16u::rem#8 div16u::rem#5 div16u::rem#1 div16u::rem#2 div16u::rem#3 ] +zp ZP_WORD:11 [ div16u::quotient#3 div16u::return#0 div16u::quotient#1 div16u::quotient#2 div16u::return#2 test_16u::res#0 ] reg byte x [ div16u::i#2 div16u::i#1 ] -zp ZP_BYTE:17 [ test_8u::i#10 test_8u::i#1 ] reg byte y [ div8u::rem#4 div8u::rem#8 div8u::rem#5 div8u::rem#1 div8u::rem#2 div8u::rem#3 ] -zp ZP_BYTE:18 [ div8u::dividend#2 div8u::dividend#1 div8u::dividend#0 ] -zp ZP_BYTE:19 [ div8u::quotient#3 div8u::return#0 div8u::quotient#1 div8u::quotient#2 ] +zp ZP_BYTE:13 [ div8u::dividend#2 div8u::dividend#1 div8u::dividend#0 test_8u::res#0 ] +zp ZP_BYTE:14 [ div8u::quotient#3 div8u::return#0 div8u::quotient#1 div8u::quotient#2 ] reg byte x [ div8u::i#2 div8u::i#1 ] -zp ZP_WORD:20 [ print_cls::sc#2 print_cls::sc#1 ] -zp ZP_WORD:22 [ test_16u::divisor#0 div16u::divisor#0 ] +zp ZP_WORD:15 [ test_16u::divisor#0 div16u::divisor#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] reg byte a [ div16u::$1 ] reg byte a [ div16u::$2 ] -zp ZP_BYTE:24 [ test_8u::rem#0 ] -zp ZP_BYTE:25 [ test_8u::dividend#0 ] -zp ZP_BYTE:26 [ test_8u::divisor#0 div8u::divisor#0 ] +zp ZP_BYTE:17 [ test_8u::rem#0 ] +zp ZP_BYTE:18 [ test_8u::dividend#0 ] +zp ZP_BYTE:19 [ test_8u::divisor#0 div8u::divisor#0 ] reg byte a [ div8u::return#2 ] -zp ZP_BYTE:27 [ test_8u::res#0 ] reg byte a [ div8u::$1 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.asm b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.asm index f9fb89ce7..2dacb08b3 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.asm @@ -340,8 +340,8 @@ slow_signed_multiply: { multiply_results_compare: { .label ms = 8 .label ma = $c - .label b = $f - .label a = $e + .label b = 3 + .label a = 2 lda #0 sta a b1: @@ -383,7 +383,7 @@ multiply_results_compare: { str: .text "multiply results match!@" } multiply_error: { - .label b = $f + .label b = 3 .label ms = 8 .label ma = $c lda #asm_mul_sqr1_lo @@ -586,13 +586,13 @@ init_multiply_asm: { rts } init_multiply: { - .label sqr1_hi = $14 - .label sqr = $17 - .label sqr1_lo = $12 - .label x_2 = $16 - .label sqr2_hi = $1b - .label sqr2_lo = $19 - .label dir = $1d + .label sqr1_hi = 6 + .label sqr = 8 + .label sqr1_lo = 4 + .label x_2 = 2 + .label sqr2_hi = 6 + .label sqr2_lo = 4 + .label dir = 2 lda #0 sta x_2 lda #$400 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.log b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.log index 0dadbcefb..19094d5d5 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.log @@ -8391,19 +8391,19 @@ Coalescing zero page register [ zp ZP_WORD:17 [ signed_multiply::m#4 signed_mult Coalescing zero page register [ zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 multiply::return#2 multiply::return#0 multiply::return#3 multiply_results_compare::ma#0 ] ] with [ zp ZP_WORD:92 [ multiply_error::ma#0 ] ] Coalescing zero page register [ zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] ] with [ zp ZP_BYTE:78 [ slow_multiply::a#0 ] ] Coalescing zero page register [ zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] ] with [ zp ZP_BYTE:89 [ multiply_error::b#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 slow_signed_multiply::a#0 ] ] with [ zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 slow_multiply::a#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 slow_signed_multiply::a#0 multiply_results_compare::a#6 multiply_results_compare::a#1 slow_multiply::a#0 ] ] with [ zp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 slow_signed_multiply::a#0 multiply_results_compare::a#6 multiply_results_compare::a#1 slow_multiply::a#0 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] ] with [ zp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 signed_multiply::b#0 signed_multiply_error::b#0 ] ] with [ zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 multiply_error::b#0 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ] ] with [ zp ZP_WORD:30 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] ] with [ zp ZP_WORD:35 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] ] with [ zp ZP_WORD:43 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] ] with [ zp ZP_WORD:48 [ print_cls::sc#2 print_cls::sc#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 ] ] with [ zp ZP_WORD:37 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] ] with [ zp ZP_WORD:45 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 slow_signed_multiply::return#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 multiply_error::ms#0 multiply_results_compare::ms#0 slow_multiply::return#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] ] with [ zp ZP_WORD:40 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] ] Allocated (was zp ZP_WORD:14) zp ZP_WORD:10 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ] Allocated (was zp ZP_WORD:17) zp ZP_WORD:12 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 multiply::return#2 multiply::return#0 multiply::return#3 multiply_results_compare::ma#0 multiply_error::ma#0 ] -Allocated (was zp ZP_BYTE:25) zp ZP_BYTE:14 [ multiply_results_compare::a#6 multiply_results_compare::a#1 slow_multiply::a#0 ] -Allocated (was zp ZP_BYTE:26) zp ZP_BYTE:15 [ multiply_results_compare::b#2 multiply_results_compare::b#1 multiply_error::b#0 ] -Allocated (was zp ZP_WORD:30) zp ZP_WORD:16 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] -Allocated (was zp ZP_WORD:35) zp ZP_WORD:18 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] -Allocated (was zp ZP_WORD:37) zp ZP_WORD:20 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] -Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:22 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] -Allocated (was zp ZP_WORD:40) zp ZP_WORD:23 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] -Allocated (was zp ZP_WORD:43) zp ZP_WORD:25 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] -Allocated (was zp ZP_WORD:45) zp ZP_WORD:27 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] -Allocated (was zp ZP_BYTE:47) zp ZP_BYTE:29 [ init_multiply::dir#2 init_multiply::dir#3 ] -Allocated (was zp ZP_WORD:48) zp ZP_WORD:30 [ print_cls::sc#2 print_cls::sc#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -9233,8 +9233,8 @@ slow_signed_multiply: { multiply_results_compare: { .label ms = 8 .label ma = $c - .label b = $f - .label a = $e + .label b = 3 + .label a = 2 //SEG300 [148] phi from multiply_results_compare to multiply_results_compare::@1 [phi:multiply_results_compare->multiply_results_compare::@1] b1_from_multiply_results_compare: //SEG301 [148] phi (byte) multiply_results_compare::a#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:multiply_results_compare->multiply_results_compare::@1#0] -- vbuz1=vbuc1 @@ -9260,7 +9260,7 @@ multiply_results_compare: { //SEG309 multiply_results_compare::@2 b2: //SEG310 [150] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ) - // (byte) slow_multiply::a#0 = (byte) multiply_results_compare::a#6 // register copy zp ZP_BYTE:14 + // (byte) slow_multiply::a#0 = (byte) multiply_results_compare::a#6 // register copy zp ZP_BYTE:2 //SEG311 [151] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuxx=vbuz1 ldx b //SEG312 [152] call slow_multiply param-assignment [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) @@ -9306,7 +9306,7 @@ multiply_results_compare: { //SEG328 [162] (byte) multiply_error::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 ] ) -- vbuxx=vbuz1 ldx a //SEG329 [163] (byte) multiply_error::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 ] ) - // (byte) multiply_error::b#0 = (byte) multiply_results_compare::b#2 // register copy zp ZP_BYTE:15 + // (byte) multiply_error::b#0 = (byte) multiply_results_compare::b#2 // register copy zp ZP_BYTE:3 //SEG330 [164] (word) multiply_error::ms#0 ← (word) multiply_results_compare::ms#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ) // (word) multiply_error::ms#0 = (word) multiply_results_compare::ms#0 // register copy zp ZP_WORD:8 //SEG331 [165] (word) multiply_error::ma#0 ← (word) multiply_results_compare::ma#0 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) @@ -9366,7 +9366,7 @@ multiply_results_compare: { } //SEG354 multiply_error multiply_error: { - .label b = $f + .label b = 3 .label ms = 8 .label ma = $c //SEG355 [177] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:166 [ char_cursor#117 line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) @@ -9496,7 +9496,7 @@ multiply_error: { slow_multiply: { .label return = 8 .label m = 8 - .label a = $e + .label a = 2 //SEG410 [195] if((byte) slow_multiply::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuz1_eq_0_then_la1 lda a beq b1_from_slow_multiply @@ -9553,7 +9553,7 @@ slow_multiply: { //SEG428 multiply_tables_compare multiply_tables_compare: { .label asm_sqr = 8 - .label kc_sqr = $10 + .label kc_sqr = 4 //SEG429 [203] phi from multiply_tables_compare to multiply_tables_compare::@1 [phi:multiply_tables_compare->multiply_tables_compare::@1] b1_from_multiply_tables_compare: //SEG430 [203] phi (byte*) multiply_tables_compare::asm_sqr#2 = (const byte[512]) asm_mul_sqr1_lo#0 [phi:multiply_tables_compare->multiply_tables_compare::@1#0] -- pbuz1=pbuc1 @@ -9784,13 +9784,13 @@ init_multiply_asm: { } //SEG494 init_multiply init_multiply: { - .label sqr1_hi = $14 - .label sqr = $17 - .label sqr1_lo = $12 - .label x_2 = $16 - .label sqr2_hi = $1b - .label sqr2_lo = $19 - .label dir = $1d + .label sqr1_hi = 6 + .label sqr = 8 + .label sqr1_lo = 4 + .label x_2 = 2 + .label sqr2_hi = 6 + .label sqr2_lo = 4 + .label dir = 2 //SEG495 [230] phi from init_multiply to init_multiply::@1 [phi:init_multiply->init_multiply::@1] b1_from_init_multiply: //SEG496 [230] phi (byte) init_multiply::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_multiply->init_multiply::@1#0] -- vbuz1=vbuc1 @@ -9979,7 +9979,7 @@ init_multiply: { } //SEG556 print_cls print_cls: { - .label sc = $1e + .label sc = 4 //SEG557 [259] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: //SEG558 [259] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 @@ -10422,29 +10422,29 @@ FINAL SYMBOL TABLE (byte) init_multiply::c#1 reg byte x 2.357142857142857 (byte) init_multiply::c#2 reg byte x 22.0 (byte) init_multiply::dir -(byte) init_multiply::dir#2 dir zp ZP_BYTE:29 4.714285714285714 -(byte) init_multiply::dir#3 dir zp ZP_BYTE:29 7.333333333333333 +(byte) init_multiply::dir#2 dir zp ZP_BYTE:2 4.714285714285714 +(byte) init_multiply::dir#3 dir zp ZP_BYTE:2 7.333333333333333 (word) init_multiply::sqr -(word) init_multiply::sqr#1 sqr zp ZP_WORD:23 7.333333333333333 -(word) init_multiply::sqr#2 sqr zp ZP_WORD:23 22.0 -(word) init_multiply::sqr#3 sqr zp ZP_WORD:23 9.166666666666666 -(word) init_multiply::sqr#4 sqr zp ZP_WORD:23 6.6000000000000005 +(word) init_multiply::sqr#1 sqr zp ZP_WORD:8 7.333333333333333 +(word) init_multiply::sqr#2 sqr zp ZP_WORD:8 22.0 +(word) init_multiply::sqr#3 sqr zp ZP_WORD:8 9.166666666666666 +(word) init_multiply::sqr#4 sqr zp ZP_WORD:8 6.6000000000000005 (byte*) init_multiply::sqr1_hi -(byte*) init_multiply::sqr1_hi#1 sqr1_hi zp ZP_WORD:20 5.5 -(byte*) init_multiply::sqr1_hi#2 sqr1_hi zp ZP_WORD:20 3.0 +(byte*) init_multiply::sqr1_hi#1 sqr1_hi zp ZP_WORD:6 5.5 +(byte*) init_multiply::sqr1_hi#2 sqr1_hi zp ZP_WORD:6 3.0 (byte*) init_multiply::sqr1_lo -(byte*) init_multiply::sqr1_lo#1 sqr1_lo zp ZP_WORD:18 16.5 -(byte*) init_multiply::sqr1_lo#2 sqr1_lo zp ZP_WORD:18 2.5384615384615383 +(byte*) init_multiply::sqr1_lo#1 sqr1_lo zp ZP_WORD:4 16.5 +(byte*) init_multiply::sqr1_lo#2 sqr1_lo zp ZP_WORD:4 2.5384615384615383 (byte*) init_multiply::sqr2_hi -(byte*) init_multiply::sqr2_hi#1 sqr2_hi zp ZP_WORD:27 3.142857142857143 -(byte*) init_multiply::sqr2_hi#2 sqr2_hi zp ZP_WORD:27 11.0 +(byte*) init_multiply::sqr2_hi#1 sqr2_hi zp ZP_WORD:6 3.142857142857143 +(byte*) init_multiply::sqr2_hi#2 sqr2_hi zp ZP_WORD:6 11.0 (byte*) init_multiply::sqr2_lo -(byte*) init_multiply::sqr2_lo#1 sqr2_lo zp ZP_WORD:25 16.5 -(byte*) init_multiply::sqr2_lo#2 sqr2_lo zp ZP_WORD:25 4.125 +(byte*) init_multiply::sqr2_lo#1 sqr2_lo zp ZP_WORD:4 16.5 +(byte*) init_multiply::sqr2_lo#2 sqr2_lo zp ZP_WORD:4 4.125 (byte) init_multiply::x_2 -(byte) init_multiply::x_2#1 x_2 zp ZP_BYTE:22 11.0 -(byte) init_multiply::x_2#2 x_2 zp ZP_BYTE:22 4.888888888888889 -(byte) init_multiply::x_2#3 x_2 zp ZP_BYTE:22 8.25 +(byte) init_multiply::x_2#1 x_2 zp ZP_BYTE:2 11.0 +(byte) init_multiply::x_2#2 x_2 zp ZP_BYTE:2 4.888888888888889 +(byte) init_multiply::x_2#3 x_2 zp ZP_BYTE:2 8.25 (byte) init_multiply::x_255 (byte) init_multiply::x_255#1 reg byte x 5.5 (byte) init_multiply::x_255#2 reg byte x 11.0 @@ -10503,7 +10503,7 @@ FINAL SYMBOL TABLE (byte) multiply_error::a (byte) multiply_error::a#0 reg byte x 0.6666666666666666 (byte) multiply_error::b -(byte) multiply_error::b#0 b zp ZP_BYTE:15 0.4444444444444444 +(byte) multiply_error::b#0 b zp ZP_BYTE:3 0.4444444444444444 (word) multiply_error::ma (word) multiply_error::ma#0 ma zp ZP_WORD:12 0.26666666666666666 (word) multiply_error::ms @@ -10524,11 +10524,11 @@ FINAL SYMBOL TABLE (label) multiply_results_compare::@9 (label) multiply_results_compare::@return (byte) multiply_results_compare::a -(byte) multiply_results_compare::a#1 a zp ZP_BYTE:14 16.5 -(byte) multiply_results_compare::a#6 a zp ZP_BYTE:14 14.125 +(byte) multiply_results_compare::a#1 a zp ZP_BYTE:2 16.5 +(byte) multiply_results_compare::a#6 a zp ZP_BYTE:2 14.125 (byte) multiply_results_compare::b -(byte) multiply_results_compare::b#1 b zp ZP_BYTE:15 151.5 -(byte) multiply_results_compare::b#2 b zp ZP_BYTE:15 29.0 +(byte) multiply_results_compare::b#1 b zp ZP_BYTE:3 151.5 +(byte) multiply_results_compare::b#2 b zp ZP_BYTE:3 29.0 (word) multiply_results_compare::ma (word) multiply_results_compare::ma#0 ma zp ZP_WORD:12 34.0 (word) multiply_results_compare::ms @@ -10548,8 +10548,8 @@ FINAL SYMBOL TABLE (byte*) multiply_tables_compare::asm_sqr#1 asm_sqr zp ZP_WORD:8 7.333333333333333 (byte*) multiply_tables_compare::asm_sqr#2 asm_sqr zp ZP_WORD:8 8.25 (byte*) multiply_tables_compare::kc_sqr -(byte*) multiply_tables_compare::kc_sqr#1 kc_sqr zp ZP_WORD:16 16.5 -(byte*) multiply_tables_compare::kc_sqr#2 kc_sqr zp ZP_WORD:16 3.666666666666667 +(byte*) multiply_tables_compare::kc_sqr#1 kc_sqr zp ZP_WORD:4 16.5 +(byte*) multiply_tables_compare::kc_sqr#2 kc_sqr zp ZP_WORD:4 3.666666666666667 (const string) multiply_tables_compare::str str = (string) "multiply table mismatch at @" (const string) multiply_tables_compare::str1 str1 = (string) " / @" (const string) multiply_tables_compare::str2 str2 = (string) "multiply tables match!@" @@ -10577,8 +10577,8 @@ FINAL SYMBOL TABLE (label) print_cls::@1 (label) print_cls::@return (byte*) print_cls::sc -(byte*) print_cls::sc#1 sc zp ZP_WORD:30 16.5 -(byte*) print_cls::sc#2 sc zp ZP_WORD:30 16.5 +(byte*) print_cls::sc#1 sc zp ZP_WORD:4 16.5 +(byte*) print_cls::sc#2 sc zp ZP_WORD:4 16.5 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -10694,7 +10694,7 @@ FINAL SYMBOL TABLE (label) slow_multiply::@2 (label) slow_multiply::@return (byte) slow_multiply::a -(byte) slow_multiply::a#0 a zp ZP_BYTE:14 157.71428571428572 +(byte) slow_multiply::a#0 a zp ZP_BYTE:2 157.71428571428572 (byte) slow_multiply::b (byte) slow_multiply::b#0 reg byte x 183.66666666666669 (byte) slow_multiply::i @@ -10731,11 +10731,11 @@ FINAL SYMBOL TABLE (signed word) slow_signed_multiply::return#0 return zp ZP_WORD:8 701.0 (signed word) slow_signed_multiply::return#2 return zp ZP_WORD:8 202.0 -zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 slow_signed_multiply::a#0 ] -zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 signed_multiply::b#0 signed_multiply_error::b#0 ] -zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ] -zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 ] -zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 slow_signed_multiply::return#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 multiply_error::ms#0 multiply_results_compare::ms#0 slow_multiply::return#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] +zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 slow_signed_multiply::a#0 multiply_results_compare::a#6 multiply_results_compare::a#1 slow_multiply::a#0 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 ] +zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 signed_multiply::b#0 signed_multiply_error::b#0 multiply_results_compare::b#2 multiply_results_compare::b#1 multiply_error::b#0 ] +zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ] +zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] +zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 slow_signed_multiply::return#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 multiply_error::ms#0 multiply_results_compare::ms#0 slow_multiply::return#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] zp ZP_WORD:10 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ] @@ -10745,20 +10745,9 @@ reg byte a [ multiply::a#2 multiply::a#1 multiply::a#4 ] reg byte x [ multiply::b#2 multiply::b#1 multiply::b#4 ] reg byte y [ slow_signed_multiply::i#2 slow_signed_multiply::i#1 ] reg byte y [ slow_signed_multiply::j#2 slow_signed_multiply::j#1 ] -zp ZP_BYTE:14 [ multiply_results_compare::a#6 multiply_results_compare::a#1 slow_multiply::a#0 ] -zp ZP_BYTE:15 [ multiply_results_compare::b#2 multiply_results_compare::b#1 multiply_error::b#0 ] reg byte y [ slow_multiply::i#2 slow_multiply::i#1 ] -zp ZP_WORD:16 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] reg byte x [ init_multiply::c#2 init_multiply::c#1 ] -zp ZP_WORD:18 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] -zp ZP_WORD:20 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] -zp ZP_BYTE:22 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] -zp ZP_WORD:23 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] reg byte x [ init_multiply::x_255#2 init_multiply::x_255#1 ] -zp ZP_WORD:25 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] -zp ZP_WORD:27 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] -zp ZP_BYTE:29 [ init_multiply::dir#2 init_multiply::dir#3 ] -zp ZP_WORD:30 [ print_cls::sc#2 print_cls::sc#1 ] reg byte x [ slow_signed_multiply::b#0 ] reg byte y [ signed_multiply::a#0 ] reg byte x [ signed_multiply_error::a#0 ] @@ -11435,8 +11424,8 @@ slow_signed_multiply: { multiply_results_compare: { .label ms = 8 .label ma = $c - .label b = $f - .label a = $e + .label b = 3 + .label a = 2 //SEG300 [148] phi from multiply_results_compare to multiply_results_compare::@1 [phi:multiply_results_compare->multiply_results_compare::@1] //SEG301 [148] phi (byte) multiply_results_compare::a#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:multiply_results_compare->multiply_results_compare::@1#0] -- vbuz1=vbuc1 lda #0 @@ -11454,7 +11443,7 @@ multiply_results_compare: { //SEG309 multiply_results_compare::@2 b2: //SEG310 [150] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ) - // (byte) slow_multiply::a#0 = (byte) multiply_results_compare::a#6 // register copy zp ZP_BYTE:14 + // (byte) slow_multiply::a#0 = (byte) multiply_results_compare::a#6 // register copy zp ZP_BYTE:2 //SEG311 [151] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuxx=vbuz1 ldx b //SEG312 [152] call slow_multiply param-assignment [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) @@ -11493,7 +11482,7 @@ multiply_results_compare: { //SEG328 [162] (byte) multiply_error::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#27 char_cursor#27 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 ] ) -- vbuxx=vbuz1 ldx a //SEG329 [163] (byte) multiply_error::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#27 char_cursor#27 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::ms#0 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 ] ) - // (byte) multiply_error::b#0 = (byte) multiply_results_compare::b#2 // register copy zp ZP_BYTE:15 + // (byte) multiply_error::b#0 = (byte) multiply_results_compare::b#2 // register copy zp ZP_BYTE:3 //SEG330 [164] (word) multiply_error::ms#0 ← (word) multiply_results_compare::ms#0 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ) // (word) multiply_error::ms#0 = (word) multiply_results_compare::ms#0 // register copy zp ZP_WORD:8 //SEG331 [165] (word) multiply_error::ma#0 ← (word) multiply_results_compare::ma#0 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#27 char_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) @@ -11541,7 +11530,7 @@ multiply_results_compare: { } //SEG354 multiply_error multiply_error: { - .label b = $f + .label b = 3 .label ms = 8 .label ma = $c //SEG355 [177] call print_str param-assignment [ char_cursor#117 line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:166 [ char_cursor#117 line_cursor#27 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) @@ -11640,7 +11629,7 @@ multiply_error: { slow_multiply: { .label return = 8 .label m = 8 - .label a = $e + .label a = 2 //SEG410 [195] if((byte) slow_multiply::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuz1_eq_0_then_la1 lda a beq b3 @@ -11687,7 +11676,7 @@ slow_multiply: { //SEG428 multiply_tables_compare multiply_tables_compare: { .label asm_sqr = 8 - .label kc_sqr = $10 + .label kc_sqr = 4 //SEG429 [203] phi from multiply_tables_compare to multiply_tables_compare::@1 [phi:multiply_tables_compare->multiply_tables_compare::@1] //SEG430 [203] phi (byte*) multiply_tables_compare::asm_sqr#2 = (const byte[512]) asm_mul_sqr1_lo#0 [phi:multiply_tables_compare->multiply_tables_compare::@1#0] -- pbuz1=pbuc1 lda #init_multiply::@1] //SEG496 [230] phi (byte) init_multiply::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_multiply->init_multiply::@1#0] -- vbuz1=vbuc1 lda #0 @@ -12055,7 +12044,7 @@ init_multiply: { } //SEG556 print_cls print_cls: { - .label sc = $1e + .label sc = 4 //SEG557 [259] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] //SEG558 [259] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.sym b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.sym index a6512ae29..7884309a9 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply.sym @@ -42,29 +42,29 @@ (byte) init_multiply::c#1 reg byte x 2.357142857142857 (byte) init_multiply::c#2 reg byte x 22.0 (byte) init_multiply::dir -(byte) init_multiply::dir#2 dir zp ZP_BYTE:29 4.714285714285714 -(byte) init_multiply::dir#3 dir zp ZP_BYTE:29 7.333333333333333 +(byte) init_multiply::dir#2 dir zp ZP_BYTE:2 4.714285714285714 +(byte) init_multiply::dir#3 dir zp ZP_BYTE:2 7.333333333333333 (word) init_multiply::sqr -(word) init_multiply::sqr#1 sqr zp ZP_WORD:23 7.333333333333333 -(word) init_multiply::sqr#2 sqr zp ZP_WORD:23 22.0 -(word) init_multiply::sqr#3 sqr zp ZP_WORD:23 9.166666666666666 -(word) init_multiply::sqr#4 sqr zp ZP_WORD:23 6.6000000000000005 +(word) init_multiply::sqr#1 sqr zp ZP_WORD:8 7.333333333333333 +(word) init_multiply::sqr#2 sqr zp ZP_WORD:8 22.0 +(word) init_multiply::sqr#3 sqr zp ZP_WORD:8 9.166666666666666 +(word) init_multiply::sqr#4 sqr zp ZP_WORD:8 6.6000000000000005 (byte*) init_multiply::sqr1_hi -(byte*) init_multiply::sqr1_hi#1 sqr1_hi zp ZP_WORD:20 5.5 -(byte*) init_multiply::sqr1_hi#2 sqr1_hi zp ZP_WORD:20 3.0 +(byte*) init_multiply::sqr1_hi#1 sqr1_hi zp ZP_WORD:6 5.5 +(byte*) init_multiply::sqr1_hi#2 sqr1_hi zp ZP_WORD:6 3.0 (byte*) init_multiply::sqr1_lo -(byte*) init_multiply::sqr1_lo#1 sqr1_lo zp ZP_WORD:18 16.5 -(byte*) init_multiply::sqr1_lo#2 sqr1_lo zp ZP_WORD:18 2.5384615384615383 +(byte*) init_multiply::sqr1_lo#1 sqr1_lo zp ZP_WORD:4 16.5 +(byte*) init_multiply::sqr1_lo#2 sqr1_lo zp ZP_WORD:4 2.5384615384615383 (byte*) init_multiply::sqr2_hi -(byte*) init_multiply::sqr2_hi#1 sqr2_hi zp ZP_WORD:27 3.142857142857143 -(byte*) init_multiply::sqr2_hi#2 sqr2_hi zp ZP_WORD:27 11.0 +(byte*) init_multiply::sqr2_hi#1 sqr2_hi zp ZP_WORD:6 3.142857142857143 +(byte*) init_multiply::sqr2_hi#2 sqr2_hi zp ZP_WORD:6 11.0 (byte*) init_multiply::sqr2_lo -(byte*) init_multiply::sqr2_lo#1 sqr2_lo zp ZP_WORD:25 16.5 -(byte*) init_multiply::sqr2_lo#2 sqr2_lo zp ZP_WORD:25 4.125 +(byte*) init_multiply::sqr2_lo#1 sqr2_lo zp ZP_WORD:4 16.5 +(byte*) init_multiply::sqr2_lo#2 sqr2_lo zp ZP_WORD:4 4.125 (byte) init_multiply::x_2 -(byte) init_multiply::x_2#1 x_2 zp ZP_BYTE:22 11.0 -(byte) init_multiply::x_2#2 x_2 zp ZP_BYTE:22 4.888888888888889 -(byte) init_multiply::x_2#3 x_2 zp ZP_BYTE:22 8.25 +(byte) init_multiply::x_2#1 x_2 zp ZP_BYTE:2 11.0 +(byte) init_multiply::x_2#2 x_2 zp ZP_BYTE:2 4.888888888888889 +(byte) init_multiply::x_2#3 x_2 zp ZP_BYTE:2 8.25 (byte) init_multiply::x_255 (byte) init_multiply::x_255#1 reg byte x 5.5 (byte) init_multiply::x_255#2 reg byte x 11.0 @@ -123,7 +123,7 @@ (byte) multiply_error::a (byte) multiply_error::a#0 reg byte x 0.6666666666666666 (byte) multiply_error::b -(byte) multiply_error::b#0 b zp ZP_BYTE:15 0.4444444444444444 +(byte) multiply_error::b#0 b zp ZP_BYTE:3 0.4444444444444444 (word) multiply_error::ma (word) multiply_error::ma#0 ma zp ZP_WORD:12 0.26666666666666666 (word) multiply_error::ms @@ -144,11 +144,11 @@ (label) multiply_results_compare::@9 (label) multiply_results_compare::@return (byte) multiply_results_compare::a -(byte) multiply_results_compare::a#1 a zp ZP_BYTE:14 16.5 -(byte) multiply_results_compare::a#6 a zp ZP_BYTE:14 14.125 +(byte) multiply_results_compare::a#1 a zp ZP_BYTE:2 16.5 +(byte) multiply_results_compare::a#6 a zp ZP_BYTE:2 14.125 (byte) multiply_results_compare::b -(byte) multiply_results_compare::b#1 b zp ZP_BYTE:15 151.5 -(byte) multiply_results_compare::b#2 b zp ZP_BYTE:15 29.0 +(byte) multiply_results_compare::b#1 b zp ZP_BYTE:3 151.5 +(byte) multiply_results_compare::b#2 b zp ZP_BYTE:3 29.0 (word) multiply_results_compare::ma (word) multiply_results_compare::ma#0 ma zp ZP_WORD:12 34.0 (word) multiply_results_compare::ms @@ -168,8 +168,8 @@ (byte*) multiply_tables_compare::asm_sqr#1 asm_sqr zp ZP_WORD:8 7.333333333333333 (byte*) multiply_tables_compare::asm_sqr#2 asm_sqr zp ZP_WORD:8 8.25 (byte*) multiply_tables_compare::kc_sqr -(byte*) multiply_tables_compare::kc_sqr#1 kc_sqr zp ZP_WORD:16 16.5 -(byte*) multiply_tables_compare::kc_sqr#2 kc_sqr zp ZP_WORD:16 3.666666666666667 +(byte*) multiply_tables_compare::kc_sqr#1 kc_sqr zp ZP_WORD:4 16.5 +(byte*) multiply_tables_compare::kc_sqr#2 kc_sqr zp ZP_WORD:4 3.666666666666667 (const string) multiply_tables_compare::str str = (string) "multiply table mismatch at @" (const string) multiply_tables_compare::str1 str1 = (string) " / @" (const string) multiply_tables_compare::str2 str2 = (string) "multiply tables match!@" @@ -197,8 +197,8 @@ (label) print_cls::@1 (label) print_cls::@return (byte*) print_cls::sc -(byte*) print_cls::sc#1 sc zp ZP_WORD:30 16.5 -(byte*) print_cls::sc#2 sc zp ZP_WORD:30 16.5 +(byte*) print_cls::sc#1 sc zp ZP_WORD:4 16.5 +(byte*) print_cls::sc#2 sc zp ZP_WORD:4 16.5 (void()) print_ln() (label) print_ln::@1 (label) print_ln::@return @@ -314,7 +314,7 @@ (label) slow_multiply::@2 (label) slow_multiply::@return (byte) slow_multiply::a -(byte) slow_multiply::a#0 a zp ZP_BYTE:14 157.71428571428572 +(byte) slow_multiply::a#0 a zp ZP_BYTE:2 157.71428571428572 (byte) slow_multiply::b (byte) slow_multiply::b#0 reg byte x 183.66666666666669 (byte) slow_multiply::i @@ -351,11 +351,11 @@ (signed word) slow_signed_multiply::return#0 return zp ZP_WORD:8 701.0 (signed word) slow_signed_multiply::return#2 return zp ZP_WORD:8 202.0 -zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 slow_signed_multiply::a#0 ] -zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 signed_multiply::b#0 signed_multiply_error::b#0 ] -zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ] -zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 ] -zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 slow_signed_multiply::return#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 multiply_error::ms#0 multiply_results_compare::ms#0 slow_multiply::return#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] +zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 slow_signed_multiply::a#0 multiply_results_compare::a#6 multiply_results_compare::a#1 slow_multiply::a#0 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 ] +zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 signed_multiply::b#0 signed_multiply_error::b#0 multiply_results_compare::b#2 multiply_results_compare::b#1 multiply_error::b#0 ] +zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ] +zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] +zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 slow_signed_multiply::return#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 multiply_error::ms#0 multiply_results_compare::ms#0 slow_multiply::return#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] zp ZP_WORD:10 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ] @@ -365,20 +365,9 @@ reg byte a [ multiply::a#2 multiply::a#1 multiply::a#4 ] reg byte x [ multiply::b#2 multiply::b#1 multiply::b#4 ] reg byte y [ slow_signed_multiply::i#2 slow_signed_multiply::i#1 ] reg byte y [ slow_signed_multiply::j#2 slow_signed_multiply::j#1 ] -zp ZP_BYTE:14 [ multiply_results_compare::a#6 multiply_results_compare::a#1 slow_multiply::a#0 ] -zp ZP_BYTE:15 [ multiply_results_compare::b#2 multiply_results_compare::b#1 multiply_error::b#0 ] reg byte y [ slow_multiply::i#2 slow_multiply::i#1 ] -zp ZP_WORD:16 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] reg byte x [ init_multiply::c#2 init_multiply::c#1 ] -zp ZP_WORD:18 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] -zp ZP_WORD:20 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] -zp ZP_BYTE:22 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] -zp ZP_WORD:23 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] reg byte x [ init_multiply::x_255#2 init_multiply::x_255#1 ] -zp ZP_WORD:25 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] -zp ZP_WORD:27 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] -zp ZP_BYTE:29 [ init_multiply::dir#2 init_multiply::dir#3 ] -zp ZP_WORD:30 [ print_cls::sc#2 print_cls::sc#1 ] reg byte x [ slow_signed_multiply::b#0 ] reg byte y [ signed_multiply::a#0 ] reg byte x [ signed_multiply_error::a#0 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/voronoi.asm b/src/test/java/dk/camelot64/kickc/test/ref/voronoi.asm index 39aecfd71..1e71cb06c 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/voronoi.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/voronoi.asm @@ -109,7 +109,7 @@ findcol: { .label x = 5 .label y = 2 .label xp = 7 - .label yp = $a + .label yp = 8 .label diff = 7 .label mindiff = 6 ldy #0 @@ -177,7 +177,7 @@ findcol: { jmp b5 } initscreen: { - .label screen = 8 + .label screen = 3 lda #SCREEN diff --git a/src/test/java/dk/camelot64/kickc/test/ref/voronoi.log b/src/test/java/dk/camelot64/kickc/test/ref/voronoi.log index f43b6de4c..0826d539e 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/voronoi.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/voronoi.log @@ -2603,10 +2603,10 @@ Uplifting [render] best 1703953 combination zp ZP_BYTE:2 [ render::y#4 render::y Coalescing zero page register [ zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] ] with [ zp ZP_BYTE:24 [ findcol::xp#0 ] ] Coalescing zero page register [ zp ZP_BYTE:2 [ render::y#4 render::y#1 ] ] with [ zp ZP_BYTE:21 [ findcol::y#0 ] ] Coalescing zero page register [ zp ZP_BYTE:5 [ render::x#2 render::x#1 ] ] with [ zp ZP_BYTE:20 [ findcol::x#0 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ render::colline#5 render::colline#1 ] ] with [ zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ] ] Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:6 [ findcol::mindiff#10 findcol::mindiff#13 ] Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:7 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 findcol::xp#0 ] -Allocated (was zp ZP_WORD:11) zp ZP_WORD:8 [ initscreen::screen#2 initscreen::screen#1 ] -Allocated (was zp ZP_BYTE:25) zp ZP_BYTE:10 [ findcol::yp#0 ] +Allocated (was zp ZP_BYTE:25) zp ZP_BYTE:8 [ findcol::yp#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -2869,7 +2869,7 @@ findcol: { .label x = 5 .label y = 2 .label xp = 7 - .label yp = $a + .label yp = 8 .label diff = 7 .label mindiff = 6 //SEG91 [54] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] @@ -3013,7 +3013,7 @@ findcol: { } //SEG143 initscreen initscreen: { - .label screen = 8 + .label screen = 3 //SEG144 [79] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] b1_from_initscreen: //SEG145 [79] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- pbuz1=pbuc1 @@ -3243,13 +3243,13 @@ FINAL SYMBOL TABLE (byte) findcol::y (byte) findcol::y#0 y zp ZP_BYTE:2 1708.5416666666665 (byte) findcol::yp -(byte) findcol::yp#0 yp zp ZP_BYTE:10 6250.625 +(byte) findcol::yp#0 yp zp ZP_BYTE:8 6250.625 (void()) initscreen() (label) initscreen::@1 (label) initscreen::@return (byte*) initscreen::screen -(byte*) initscreen::screen#1 screen zp ZP_WORD:8 16.5 -(byte*) initscreen::screen#2 screen zp ZP_WORD:8 16.5 +(byte*) initscreen::screen#1 screen zp ZP_WORD:3 16.5 +(byte*) initscreen::screen#2 screen zp ZP_WORD:3 16.5 (void()) main() (label) main::@1 (label) main::@4 @@ -3276,14 +3276,13 @@ FINAL SYMBOL TABLE (byte) render::y#4 y zp ZP_BYTE:2 109.36363636363637 zp ZP_BYTE:2 [ render::y#4 render::y#1 findcol::y#0 ] -zp ZP_WORD:3 [ render::colline#5 render::colline#1 ] +zp ZP_WORD:3 [ render::colline#5 render::colline#1 initscreen::screen#2 initscreen::screen#1 ] zp ZP_BYTE:5 [ render::x#2 render::x#1 findcol::x#0 ] reg byte x [ findcol::i#10 findcol::i#1 ] zp ZP_BYTE:6 [ findcol::mindiff#10 findcol::mindiff#13 ] reg byte y [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ] zp ZP_BYTE:7 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 findcol::xp#0 ] reg byte a [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ] -zp ZP_WORD:8 [ initscreen::screen#2 initscreen::screen#1 ] reg byte x [ animate::$0 ] reg byte x [ animate::$3 ] reg byte x [ animate::$6 ] @@ -3293,7 +3292,7 @@ reg byte a [ animate::$15 ] reg byte a [ animate::$18 ] reg byte a [ findcol::return#0 ] reg byte a [ render::col#0 ] -zp ZP_BYTE:10 [ findcol::yp#0 ] +zp ZP_BYTE:8 [ findcol::yp#0 ] reg byte a [ findcol::$10 ] reg byte a [ findcol::$12 ] @@ -3506,7 +3505,7 @@ findcol: { .label x = 5 .label y = 2 .label xp = 7 - .label yp = $a + .label yp = 8 .label diff = 7 .label mindiff = 6 //SEG91 [54] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] @@ -3627,7 +3626,7 @@ findcol: { } //SEG143 initscreen initscreen: { - .label screen = 8 + .label screen = 3 //SEG144 [79] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] //SEG145 [79] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- pbuz1=pbuc1 lda #