1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-23 23:32:55 +00:00

Merged IcePic/master fragments. Thanks to Janne Johansson. #248

This commit is contained in:
jespergravgaard 2019-08-10 14:41:46 +02:00
parent 741f424116
commit da56d74339
11 changed files with 77 additions and 111 deletions

View File

@ -1,4 +1,4 @@
ldx {z1} cpx #0
beq !e+ beq !e+
!: !:
ror ror

View File

@ -1,6 +1,4 @@
sta $ff ora {z2}
lda {z2}
ora $ff
sta {z1} sta {z1}
lda {z2}+1 lda {z2}+1
sta {z1}+1 sta {z1}+1

View File

@ -1,6 +1,6 @@
lda {z2} lda {z1}
eor {z1} ora {z2}
sta {z1} sta {z1}
lda {z2}+1 lda {z1}+1
eor {z1}+1 ora {z2}+1
sta {z1}+1 sta {z1}+1

View File

@ -2,5 +2,5 @@ lda #<{c1}
eor {z1} eor {z1}
sta {z1} sta {z1}
lda #>{c1} lda #>{c1}
eor {z1} eor {z1}+1
sta {z1} sta {z1}+1

View File

@ -1,8 +1,6 @@
lda {z1}+1 lda {z1}+1
bne {la1} bne {la1}
clc
lda {z1} lda {z1}
cmp {c1} cmp #{c1}
bcc !+
bcs {la1} bcs {la1}
!: !:

View File

@ -36,6 +36,11 @@ public class TestPrograms {
public TestPrograms() { public TestPrograms() {
} }
@Test
public void testAtariTempest() throws IOException, URISyntaxException {
compileAndCompare("complex/ataritempest/ataritempest");
}
@Test @Test
public void testXMega65() throws IOException, URISyntaxException { public void testXMega65() throws IOException, URISyntaxException {
compileAndCompare("complex/xmega65/xmega65"); compileAndCompare("complex/xmega65/xmega65");
@ -2173,7 +2178,7 @@ public class TestPrograms {
@Test @Test
public void testVarRegisterNoarg() throws IOException, URISyntaxException { public void testVarRegisterNoarg() throws IOException, URISyntaxException {
compileAndCompare("var-register-noarg", log()); compileAndCompare("var-register-noarg");
} }
@Test @Test

View File

@ -1,39 +1,22 @@
// XMega65 Kernal Development Template // Atari Tempest ROM Development Template
// Each function of the kernal is a no-args function // Each function of the kernal is a no-args function
// The functions are placed in the SYSCALLS table surrounded by JMP and NOP // The functions are placed in the SYSCALLS table surrounded by JMP and NOP
#pragma link("xmega65.ld") #pragma link("ataritempest.ld")
const char* BGCOL = 0xc01a;
void main() { void main() {
char i=0;
// Call SYSCALL functions one at a time
while(true) {
void()* fsyscall = FSYSCALLS[i*2];
(*fsyscall)();
if(++i==2) i=0;
}
}
void fn1() {
const char* BORDERCOL = $d020;
(*BORDERCOL)++;
}
void fn2() {
const char* BGCOL = $d021;
(*BGCOL)++; (*BGCOL)++;
} }
#pragma data_seg(Syscall) void entryPoint() {
(*BGCOL)++;
}
const char JMP = 0x4c; void interrupt(HARDWARE_ALL) nmiHandler() {
const char NOP = 0xea; (*BGCOL)++;
}
export char[] SYSCALLS = { #pragma data_seg(Vectors)
JMP, <&fn1, >&fn1, NOP, export const void()*[] VECTORS = { &nmiHandler, &entryPoint };
JMP, <&fn2, >&fn2, NOP
};
export align(0x100) char[] SYSCALL_RESET = { JMP, <&main, >&main, NOP };
const void()** FSYSCALLS = (void()**)(SYSCALLS+1);

View File

@ -1,7 +1,5 @@
.file [name="%O.bin", type="bin", segments="XMega65Bin"] .file [name="%O.bin", type="bin", segments="AtariTempest"]
.segmentdef XMega65Bin [segments="Syscall, Code, Data, Stack, Zeropage"] .segmentdef AtariTempest [segments="Code, Data, Vectors"]
.segmentdef Syscall [start=$8000, max=$81ff] .segmentdef Code [start=$4000, min=$4000, max=$bff9]
.segmentdef Code [start=$8200, min=$8200, max=$bdff] .segmentdef Data [startAfter="Code"]
.segmentdef Data [startAfter="Code", min=$8200, max=$bdff] .segmentdef Vectors [start=$bffa, min=$bffa, max=$bfff]
.segmentdef Stack [min=$be00, max=$beff, fill]
.segmentdef Zeropage [min=$bf00, max=$bfff, fill]

View File

@ -31,7 +31,7 @@ byte myprintf(byte *dst, byte *str, word w1, word w2, word w3) {
byte b, digit; byte b, digit;
byte[6] buf6; byte[6] buf6;
word w; word w;
kickasm {{ .break }}
for (; *str != 0; ++str) { for (; *str != 0; ++str) {
b = *str; b = *str;
if (bFormat != 0) { // "(bFormat)" is the normal way -- not supported -- https://gitlab.com/camelot/kickc/issues/135 if (bFormat != 0) { // "(bFormat)" is the normal way -- not supported -- https://gitlab.com/camelot/kickc/issues/135

View File

@ -517,22 +517,18 @@ utoa: {
cpx #1 cpx #1
beq b7 beq b7
lda.z value+1 lda.z value+1
cmp #>$64
bcc !+
bne b7 bne b7
lda.z value lda.z value
cmp #<$64 cmp #$64
bcs b7 bcs b7
!: !:
b3: b3:
cpx #1 cpx #1
beq b8 beq b8
lda.z value+1 lda.z value+1
cmp #>$a
bcc !+
bne b8 bne b8
lda.z value lda.z value
cmp #<$a cmp #$a
bcs b8 bcs b8
!: !:
b4: b4:

View File

@ -5576,13 +5576,11 @@ utoa: {
jmp b15 jmp b15
// utoa::@15 // utoa::@15
b15: b15:
// [165] if((word) utoa::value#11>=(byte) $64) goto utoa::@7 -- vwuz1_ge_vwuc1_then_la1 // [165] if((word) utoa::value#11>=(byte) $64) goto utoa::@7 -- vwuz1_ge_vbuc1_then_la1
lda.z value+1 lda.z value+1
cmp #>$64
bcc !+
bne b7 bne b7
lda.z value lda.z value
cmp #<$64 cmp #$64
bcs b7 bcs b7
!: !:
// [166] phi from utoa::@15 to utoa::@3 [phi:utoa::@15->utoa::@3] // [166] phi from utoa::@15 to utoa::@3 [phi:utoa::@15->utoa::@3]
@ -5600,13 +5598,11 @@ utoa: {
jmp b16 jmp b16
// utoa::@16 // utoa::@16
b16: b16:
// [168] if((word) utoa::value#10>=(byte) $a) goto utoa::@8 -- vwuz1_ge_vwuc1_then_la1 // [168] if((word) utoa::value#10>=(byte) $a) goto utoa::@8 -- vwuz1_ge_vbuc1_then_la1
lda.z value+1 lda.z value+1
cmp #>$a
bcc !+
bne b8 bne b8
lda.z value lda.z value
cmp #<$a cmp #$a
bcs b8 bcs b8
!: !:
// [169] phi from utoa::@12 utoa::@16 to utoa::@4 [phi:utoa::@12/utoa::@16->utoa::@4] // [169] phi from utoa::@12 utoa::@16 to utoa::@4 [phi:utoa::@12/utoa::@16->utoa::@4]
@ -6276,56 +6272,56 @@ Uplift Scope [utoa] 57.17: zp ZP_WORD:38 [ utoa::value#12 utoa::value#3 utoa::va
Uplift Scope [Print] Uplift Scope [Print]
Uplift Scope [] Uplift Scope []
Uplifting [divr16u] best 469986 combination zp ZP_WORD:8 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:12 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:10 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] zp ZP_WORD:68 [ divr16u::return#2 ] Uplifting [divr16u] best 469978 combination zp ZP_WORD:8 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:12 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:10 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] zp ZP_WORD:68 [ divr16u::return#2 ]
Uplifting [append] best 469986 combination zp ZP_WORD:46 [ append::value#5 append::value#8 append::value#1 append::value#2 append::value#3 append::value#4 append::value#0 ] zp ZP_WORD:42 [ append::dst#4 append::dst#1 append::dst#2 append::dst#3 ] zp ZP_WORD:44 [ append::sub#6 ] zp ZP_WORD:87 [ append::return#10 ] zp ZP_WORD:89 [ append::return#4 ] zp ZP_WORD:91 [ append::return#3 ] zp ZP_WORD:93 [ append::return#2 ] Uplifting [append] best 469978 combination zp ZP_WORD:46 [ append::value#5 append::value#8 append::value#1 append::value#2 append::value#3 append::value#4 append::value#0 ] zp ZP_WORD:42 [ append::dst#4 append::dst#1 append::dst#2 append::dst#3 ] zp ZP_WORD:44 [ append::sub#6 ] zp ZP_WORD:87 [ append::return#10 ] zp ZP_WORD:89 [ append::return#4 ] zp ZP_WORD:91 [ append::return#3 ] zp ZP_WORD:93 [ append::return#2 ]
Uplifting [main] best 469986 combination zp ZP_WORD:6 [ main::v#10 main::v#12 main::v#11 main::v#13 main::v#2 main::v#1 ] zp ZP_WORD:48 [ main::$12 ] zp ZP_WORD:52 [ main::$14 ] zp ZP_WORD:58 [ main::$3 ] zp ZP_WORD:62 [ main::$5 ] zp ZP_WORD:2 [ main::u#15 main::u#3 ] zp ZP_WORD:4 [ main::u#17 main::u#4 ] zp ZP_WORD:50 [ main::$13 ] zp ZP_WORD:60 [ main::$4 ] Uplifting [main] best 469978 combination zp ZP_WORD:6 [ main::v#10 main::v#12 main::v#11 main::v#13 main::v#2 main::v#1 ] zp ZP_WORD:48 [ main::$12 ] zp ZP_WORD:52 [ main::$14 ] zp ZP_WORD:58 [ main::$3 ] zp ZP_WORD:62 [ main::$5 ] zp ZP_WORD:2 [ main::u#15 main::u#3 ] zp ZP_WORD:4 [ main::u#17 main::u#4 ] zp ZP_WORD:50 [ main::$13 ] zp ZP_WORD:60 [ main::$4 ]
Uplifting [div10] best 469986 combination zp ZP_WORD:56 [ div10::return#2 ] zp ZP_WORD:54 [ div10::val#4 ] zp ZP_WORD:111 [ div10::return#0 ] zp ZP_WORD:95 [ div10::$0 ] zp ZP_WORD:99 [ div10::$2 ] zp ZP_WORD:103 [ div10::$3 ] zp ZP_WORD:107 [ div10::$4 ] zp ZP_WORD:109 [ div10::val#3 ] zp ZP_WORD:97 [ div10::val#0 ] zp ZP_WORD:101 [ div10::val#1 ] zp ZP_WORD:105 [ div10::val#2 ] Uplifting [div10] best 469978 combination zp ZP_WORD:56 [ div10::return#2 ] zp ZP_WORD:54 [ div10::val#4 ] zp ZP_WORD:111 [ div10::return#0 ] zp ZP_WORD:95 [ div10::$0 ] zp ZP_WORD:99 [ div10::$2 ] zp ZP_WORD:103 [ div10::$3 ] zp ZP_WORD:107 [ div10::$4 ] zp ZP_WORD:109 [ div10::val#3 ] zp ZP_WORD:97 [ div10::val#0 ] zp ZP_WORD:101 [ div10::val#1 ] zp ZP_WORD:105 [ div10::val#2 ]
Uplifting [div16u] best 469986 combination zp ZP_WORD:66 [ div16u::return#2 ] zp ZP_WORD:64 [ div16u::dividend#0 ] zp ZP_WORD:70 [ div16u::return#0 ] Uplifting [div16u] best 469978 combination zp ZP_WORD:66 [ div16u::return#2 ] zp ZP_WORD:64 [ div16u::dividend#0 ] zp ZP_WORD:70 [ div16u::return#0 ]
Uplifting [utoa] best 469955 combination zp ZP_WORD:38 [ utoa::value#12 utoa::value#3 utoa::value#10 utoa::value#2 utoa::value#11 utoa::value#6 utoa::value#4 utoa::value#0 utoa::value#1 ] zp ZP_WORD:40 [ utoa::dst#12 utoa::dst#4 utoa::dst#13 utoa::dst#2 utoa::dst#10 utoa::dst#16 utoa::dst#1 ] reg byte x [ utoa::bStarted#7 utoa::bStarted#6 utoa::bStarted#5 ] reg byte a [ utoa::$16 ] reg byte a [ utoa::$17 ] zp ZP_WORD:85 [ utoa::dst#3 ] Uplifting [utoa] best 469947 combination zp ZP_WORD:38 [ utoa::value#12 utoa::value#3 utoa::value#10 utoa::value#2 utoa::value#11 utoa::value#6 utoa::value#4 utoa::value#0 utoa::value#1 ] zp ZP_WORD:40 [ utoa::dst#12 utoa::dst#4 utoa::dst#13 utoa::dst#2 utoa::dst#10 utoa::dst#16 utoa::dst#1 ] reg byte x [ utoa::bStarted#7 utoa::bStarted#6 utoa::bStarted#5 ] reg byte a [ utoa::$16 ] reg byte a [ utoa::$17 ] zp ZP_WORD:85 [ utoa::dst#3 ]
Uplifting [Print] best 469955 combination Uplifting [Print] best 469947 combination
Uplifting [] best 469955 combination Uplifting [] best 469947 combination
Attempting to uplift remaining variables inzp ZP_BYTE:33 [ myprintf::bLen#36 myprintf::bLen#12 myprintf::bLen#10 myprintf::bLen#28 myprintf::bLen#7 myprintf::bLen#3 myprintf::bLen#13 myprintf::bLen#14 myprintf::bLen#1 myprintf::bLen#4 myprintf::bLen#5 myprintf::bLen#6 ] Attempting to uplift remaining variables inzp ZP_BYTE:33 [ myprintf::bLen#36 myprintf::bLen#12 myprintf::bLen#10 myprintf::bLen#28 myprintf::bLen#7 myprintf::bLen#3 myprintf::bLen#13 myprintf::bLen#14 myprintf::bLen#1 myprintf::bLen#4 myprintf::bLen#5 myprintf::bLen#6 ]
Uplifting [myprintf] best 469955 combination zp ZP_BYTE:33 [ myprintf::bLen#36 myprintf::bLen#12 myprintf::bLen#10 myprintf::bLen#28 myprintf::bLen#7 myprintf::bLen#3 myprintf::bLen#13 myprintf::bLen#14 myprintf::bLen#1 myprintf::bLen#4 myprintf::bLen#5 myprintf::bLen#6 ] Uplifting [myprintf] best 469947 combination zp ZP_BYTE:33 [ myprintf::bLen#36 myprintf::bLen#12 myprintf::bLen#10 myprintf::bLen#28 myprintf::bLen#7 myprintf::bLen#3 myprintf::bLen#13 myprintf::bLen#14 myprintf::bLen#1 myprintf::bLen#4 myprintf::bLen#5 myprintf::bLen#6 ]
Attempting to uplift remaining variables inzp ZP_BYTE:32 [ myprintf::bDigits#12 myprintf::bDigits#16 myprintf::bDigits#28 myprintf::bDigits#1 myprintf::bDigits#18 myprintf::bDigits#10 myprintf::bDigits#2 myprintf::bDigits#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:32 [ myprintf::bDigits#12 myprintf::bDigits#16 myprintf::bDigits#28 myprintf::bDigits#1 myprintf::bDigits#18 myprintf::bDigits#10 myprintf::bDigits#2 myprintf::bDigits#3 ]
Uplifting [myprintf] best 469955 combination zp ZP_BYTE:32 [ myprintf::bDigits#12 myprintf::bDigits#16 myprintf::bDigits#28 myprintf::bDigits#1 myprintf::bDigits#18 myprintf::bDigits#10 myprintf::bDigits#2 myprintf::bDigits#3 ] Uplifting [myprintf] best 469947 combination zp ZP_BYTE:32 [ myprintf::bDigits#12 myprintf::bDigits#16 myprintf::bDigits#28 myprintf::bDigits#1 myprintf::bDigits#18 myprintf::bDigits#10 myprintf::bDigits#2 myprintf::bDigits#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:34 [ myprintf::digit#3 myprintf::digit#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:34 [ myprintf::digit#3 myprintf::digit#2 ]
Uplifting [myprintf] best 457955 combination reg byte x [ myprintf::digit#3 myprintf::digit#2 ] Uplifting [myprintf] best 457947 combination reg byte x [ myprintf::digit#3 myprintf::digit#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:31 [ myprintf::b#17 myprintf::b#5 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ myprintf::b#17 myprintf::b#5 ]
Uplifting [myprintf] best 457955 combination zp ZP_BYTE:31 [ myprintf::b#17 myprintf::b#5 ] Uplifting [myprintf] best 457947 combination zp ZP_BYTE:31 [ myprintf::b#17 myprintf::b#5 ]
Attempting to uplift remaining variables inzp ZP_BYTE:35 [ myprintf::$43 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ myprintf::$43 ]
Uplifting [myprintf] best 448955 combination reg byte a [ myprintf::$43 ] Uplifting [myprintf] best 448947 combination reg byte a [ myprintf::$43 ]
Attempting to uplift remaining variables inzp ZP_BYTE:36 [ myprintf::b#25 myprintf::b#1 myprintf::b#6 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ myprintf::b#25 myprintf::b#1 myprintf::b#6 ]
Uplifting [myprintf] best 445205 combination reg byte x [ myprintf::b#25 myprintf::b#1 myprintf::b#6 ] Uplifting [myprintf] best 445197 combination reg byte x [ myprintf::b#25 myprintf::b#1 myprintf::b#6 ]
Attempting to uplift remaining variables inzp ZP_BYTE:24 [ myprintf::bArg#10 myprintf::bArg#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ myprintf::bArg#10 myprintf::bArg#1 ]
Uplifting [myprintf] best 445205 combination zp ZP_BYTE:24 [ myprintf::bArg#10 myprintf::bArg#1 ] Uplifting [myprintf] best 445197 combination zp ZP_BYTE:24 [ myprintf::bArg#10 myprintf::bArg#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:74 [ myprintf::$18 ] Attempting to uplift remaining variables inzp ZP_BYTE:74 [ myprintf::$18 ]
Uplifting [myprintf] best 444605 combination reg byte a [ myprintf::$18 ] Uplifting [myprintf] best 444597 combination reg byte a [ myprintf::$18 ]
Attempting to uplift remaining variables inzp ZP_BYTE:75 [ myprintf::$19 ] Attempting to uplift remaining variables inzp ZP_BYTE:75 [ myprintf::$19 ]
Uplifting [myprintf] best 444005 combination reg byte a [ myprintf::$19 ] Uplifting [myprintf] best 443997 combination reg byte a [ myprintf::$19 ]
Attempting to uplift remaining variables inzp ZP_BYTE:77 [ myprintf::$25 ] Attempting to uplift remaining variables inzp ZP_BYTE:77 [ myprintf::$25 ]
Uplifting [myprintf] best 443405 combination reg byte a [ myprintf::$25 ] Uplifting [myprintf] best 443397 combination reg byte a [ myprintf::$25 ]
Attempting to uplift remaining variables inzp ZP_BYTE:79 [ myprintf::$26 ] Attempting to uplift remaining variables inzp ZP_BYTE:79 [ myprintf::$26 ]
Uplifting [myprintf] best 442805 combination reg byte a [ myprintf::$26 ] Uplifting [myprintf] best 442797 combination reg byte a [ myprintf::$26 ]
Attempting to uplift remaining variables inzp ZP_BYTE:81 [ myprintf::$32 ] Attempting to uplift remaining variables inzp ZP_BYTE:81 [ myprintf::$32 ]
Uplifting [myprintf] best 442205 combination reg byte a [ myprintf::$32 ] Uplifting [myprintf] best 442197 combination reg byte a [ myprintf::$32 ]
Attempting to uplift remaining variables inzp ZP_BYTE:82 [ myprintf::$50 ] Attempting to uplift remaining variables inzp ZP_BYTE:82 [ myprintf::$50 ]
Uplifting [myprintf] best 441605 combination reg byte a [ myprintf::$50 ] Uplifting [myprintf] best 441597 combination reg byte a [ myprintf::$50 ]
Attempting to uplift remaining variables inzp ZP_BYTE:29 [ myprintf::$24 ] Attempting to uplift remaining variables inzp ZP_BYTE:29 [ myprintf::$24 ]
Uplifting [myprintf] best 440705 combination reg byte a [ myprintf::$24 ] Uplifting [myprintf] best 440697 combination reg byte a [ myprintf::$24 ]
Attempting to uplift remaining variables inzp ZP_BYTE:30 [ myprintf::$31 ] Attempting to uplift remaining variables inzp ZP_BYTE:30 [ myprintf::$31 ]
Uplifting [myprintf] best 439805 combination reg byte a [ myprintf::$31 ] Uplifting [myprintf] best 439797 combination reg byte a [ myprintf::$31 ]
Attempting to uplift remaining variables inzp ZP_BYTE:76 [ myprintf::b#15 ] Attempting to uplift remaining variables inzp ZP_BYTE:76 [ myprintf::b#15 ]
Uplifting [myprintf] best 439705 combination reg byte x [ myprintf::b#15 ] Uplifting [myprintf] best 439697 combination reg byte x [ myprintf::b#15 ]
Attempting to uplift remaining variables inzp ZP_BYTE:80 [ myprintf::b#16 ] Attempting to uplift remaining variables inzp ZP_BYTE:80 [ myprintf::b#16 ]
Uplifting [myprintf] best 439605 combination reg byte x [ myprintf::b#16 ] Uplifting [myprintf] best 439597 combination reg byte x [ myprintf::b#16 ]
Attempting to uplift remaining variables inzp ZP_BYTE:23 [ myprintf::bFormat#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ myprintf::bFormat#10 ]
Uplifting [myprintf] best 439605 combination zp ZP_BYTE:23 [ myprintf::bFormat#10 ] Uplifting [myprintf] best 439597 combination zp ZP_BYTE:23 [ myprintf::bFormat#10 ]
Attempting to uplift remaining variables inzp ZP_BYTE:78 [ myprintf::bLen#11 ] Attempting to uplift remaining variables inzp ZP_BYTE:78 [ myprintf::bLen#11 ]
Uplifting [myprintf] best 438705 combination reg byte y [ myprintf::bLen#11 ] Uplifting [myprintf] best 438697 combination reg byte y [ myprintf::bLen#11 ]
Attempting to uplift remaining variables inzp ZP_BYTE:28 [ myprintf::bLeadZero#11 ] Attempting to uplift remaining variables inzp ZP_BYTE:28 [ myprintf::bLeadZero#11 ]
Uplifting [myprintf] best 438705 combination zp ZP_BYTE:28 [ myprintf::bLeadZero#11 ] Uplifting [myprintf] best 438697 combination zp ZP_BYTE:28 [ myprintf::bLeadZero#11 ]
Attempting to uplift remaining variables inzp ZP_BYTE:27 [ myprintf::bTrailing#11 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ myprintf::bTrailing#11 ]
Uplifting [myprintf] best 438705 combination zp ZP_BYTE:27 [ myprintf::bTrailing#11 ] Uplifting [myprintf] best 438697 combination zp ZP_BYTE:27 [ myprintf::bTrailing#11 ]
Coalescing zero page register [ zp ZP_WORD:38 [ utoa::value#12 utoa::value#3 utoa::value#10 utoa::value#2 utoa::value#11 utoa::value#6 utoa::value#4 utoa::value#0 utoa::value#1 ] ] with [ zp ZP_WORD:46 [ append::value#5 append::value#8 append::value#1 append::value#2 append::value#3 append::value#4 append::value#0 ] ] - score: 4 Coalescing zero page register [ zp ZP_WORD:38 [ utoa::value#12 utoa::value#3 utoa::value#10 utoa::value#2 utoa::value#11 utoa::value#6 utoa::value#4 utoa::value#0 utoa::value#1 ] ] with [ zp ZP_WORD:46 [ append::value#5 append::value#8 append::value#1 append::value#2 append::value#3 append::value#4 append::value#0 ] ] - score: 4
Coalescing zero page register [ zp ZP_WORD:40 [ utoa::dst#12 utoa::dst#4 utoa::dst#13 utoa::dst#2 utoa::dst#10 utoa::dst#16 utoa::dst#1 ] ] with [ zp ZP_WORD:42 [ append::dst#4 append::dst#1 append::dst#2 append::dst#3 ] ] - score: 3 Coalescing zero page register [ zp ZP_WORD:40 [ utoa::dst#12 utoa::dst#4 utoa::dst#13 utoa::dst#2 utoa::dst#10 utoa::dst#16 utoa::dst#1 ] ] with [ zp ZP_WORD:42 [ append::dst#4 append::dst#1 append::dst#2 append::dst#3 ] ] - score: 3
Coalescing zero page register [ zp ZP_WORD:6 [ main::v#10 main::v#12 main::v#11 main::v#13 main::v#2 main::v#1 ] ] with [ zp ZP_WORD:17 [ myprintf::w2#8 myprintf::w2#1 myprintf::w2#0 ] ] - score: 2 Coalescing zero page register [ zp ZP_WORD:6 [ main::v#10 main::v#12 main::v#11 main::v#13 main::v#2 main::v#1 ] ] with [ zp ZP_WORD:17 [ myprintf::w2#8 myprintf::w2#1 myprintf::w2#0 ] ] - score: 2
@ -7442,13 +7438,11 @@ utoa: {
jmp b15 jmp b15
// utoa::@15 // utoa::@15
b15: b15:
// [165] if((word) utoa::value#11>=(byte) $64) goto utoa::@7 -- vwuz1_ge_vwuc1_then_la1 // [165] if((word) utoa::value#11>=(byte) $64) goto utoa::@7 -- vwuz1_ge_vbuc1_then_la1
lda.z value+1 lda.z value+1
cmp #>$64
bcc !+
bne b7 bne b7
lda.z value lda.z value
cmp #<$64 cmp #$64
bcs b7 bcs b7
!: !:
// [166] phi from utoa::@15 to utoa::@3 [phi:utoa::@15->utoa::@3] // [166] phi from utoa::@15 to utoa::@3 [phi:utoa::@15->utoa::@3]
@ -7465,13 +7459,11 @@ utoa: {
jmp b16 jmp b16
// utoa::@16 // utoa::@16
b16: b16:
// [168] if((word) utoa::value#10>=(byte) $a) goto utoa::@8 -- vwuz1_ge_vwuc1_then_la1 // [168] if((word) utoa::value#10>=(byte) $a) goto utoa::@8 -- vwuz1_ge_vbuc1_then_la1
lda.z value+1 lda.z value+1
cmp #>$a
bcc !+
bne b8 bne b8
lda.z value lda.z value
cmp #<$a cmp #$a
bcs b8 bcs b8
!: !:
// [169] phi from utoa::@12 utoa::@16 to utoa::@4 [phi:utoa::@12/utoa::@16->utoa::@4] // [169] phi from utoa::@12 utoa::@16 to utoa::@4 [phi:utoa::@12/utoa::@16->utoa::@4]
@ -8403,7 +8395,7 @@ zp ZP_WORD:23 [ div10::$3 div10::val#2 myprintf::w3#8 myprintf::w3#1 myprintf::w
FINAL ASSEMBLER FINAL ASSEMBLER
Score: 361450 Score: 361442
// File Comments // File Comments
// Upstart // Upstart
@ -9409,13 +9401,11 @@ utoa: {
cpx #1 cpx #1
beq b7 beq b7
// utoa::@15 // utoa::@15
// [165] if((word) utoa::value#11>=(byte) $64) goto utoa::@7 -- vwuz1_ge_vwuc1_then_la1 // [165] if((word) utoa::value#11>=(byte) $64) goto utoa::@7 -- vwuz1_ge_vbuc1_then_la1
lda.z value+1 lda.z value+1
cmp #>$64
bcc !+
bne b7 bne b7
lda.z value lda.z value
cmp #<$64 cmp #$64
bcs b7 bcs b7
!: !:
// [166] phi from utoa::@15 to utoa::@3 [phi:utoa::@15->utoa::@3] // [166] phi from utoa::@15 to utoa::@3 [phi:utoa::@15->utoa::@3]
@ -9429,13 +9419,11 @@ utoa: {
cpx #1 cpx #1
beq b8 beq b8
// utoa::@16 // utoa::@16
// [168] if((word) utoa::value#10>=(byte) $a) goto utoa::@8 -- vwuz1_ge_vwuc1_then_la1 // [168] if((word) utoa::value#10>=(byte) $a) goto utoa::@8 -- vwuz1_ge_vbuc1_then_la1
lda.z value+1 lda.z value+1
cmp #>$a
bcc !+
bne b8 bne b8
lda.z value lda.z value
cmp #<$a cmp #$a
bcs b8 bcs b8
!: !:
// [169] phi from utoa::@12 utoa::@16 to utoa::@4 [phi:utoa::@12/utoa::@16->utoa::@4] // [169] phi from utoa::@12 utoa::@16 to utoa::@4 [phi:utoa::@12/utoa::@16->utoa::@4]