From 45302103fa817da7afbccb389550eb2b6172f496 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Thu, 1 Feb 2018 20:17:08 +0100 Subject: [PATCH] Implemented 16bit division. Added support for word arrays. (idx must be multiplied by 2 manually) --- .../asm/vwuz1=pwuc1_derefidx_vbuxx.asm | 4 + .../asm/vwuz1=pwuc1_derefidx_vbuyy.asm | 4 + .../fragment/asm/vwuz1=vwuz1_minus_vwuz2.asm | 7 + .../kickc/fragment/asm/vwuz1=vwuz1_rol_1.asm | 2 + .../kickc/passes/Pass4CodeGeneration.java | 8 +- .../dk/camelot64/kickc/test/kc/division.kc | 55 +- .../dk/camelot64/kickc/test/ref/division.asm | 315 +- .../dk/camelot64/kickc/test/ref/division.cfg | 344 +- .../dk/camelot64/kickc/test/ref/division.log | 5921 ++++++++++++----- .../dk/camelot64/kickc/test/ref/division.sym | 213 +- 10 files changed, 4936 insertions(+), 1937 deletions(-) create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=pwuc1_derefidx_vbuxx.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=pwuc1_derefidx_vbuyy.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_minus_vwuz2.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_rol_1.asm diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=pwuc1_derefidx_vbuxx.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=pwuc1_derefidx_vbuxx.asm new file mode 100644 index 000000000..0a8fdc110 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=pwuc1_derefidx_vbuxx.asm @@ -0,0 +1,4 @@ +lda {c1},x +sta {z1} +lda {c1}+1,x +sta {z1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=pwuc1_derefidx_vbuyy.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=pwuc1_derefidx_vbuyy.asm new file mode 100644 index 000000000..5c6848b8b --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=pwuc1_derefidx_vbuyy.asm @@ -0,0 +1,4 @@ +lda {c1},y +sta {z1} +lda {c1}+1,y +sta {z1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_minus_vwuz2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_minus_vwuz2.asm new file mode 100644 index 000000000..cfaea4ef8 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_minus_vwuz2.asm @@ -0,0 +1,7 @@ +lda {z1} +sec +sbc {z2} +sta {z1} +lda {z1}+1 +sbc {z2}+1 +sta {z1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_rol_1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_rol_1.asm new file mode 100644 index 000000000..2043200b5 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_rol_1.asm @@ -0,0 +1,2 @@ +asl {z1} +rol {z1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java b/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java index a1384d519..5eedbff21 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java @@ -141,6 +141,8 @@ public class Pass4CodeGeneration { asm.addDataAlignment(alignment); } if(constantVar.getValue() instanceof ConstantArrayList) { + SymbolTypeArray constTypeArray = (SymbolTypeArray) constantVar.getType(); + SymbolType elementType = constTypeArray.getElementType(); ConstantArrayList constantArrayList = (ConstantArrayList) constantVar.getValue(); String asmName = constantVar.getAsmName() == null ? constantVar.getLocalName() : constantVar.getAsmName(); if(asmName != null && !added.contains(asmName)) { @@ -149,11 +151,11 @@ public class Pass4CodeGeneration { String asmElement = AsmFormat.getAsmConstant(program, element, 99, scopeRef); asmElements.add(asmElement); } - if(SymbolType.isByte(constantArrayList.getElementType())) { + if(SymbolType.isByte(elementType) || SymbolType.isSByte(elementType)) { asm.addDataNumeric(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.BYTE, asmElements); added.add(asmName); - } else if(SymbolType.isSByte(constantArrayList.getElementType())) { - asm.addDataNumeric(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.BYTE, asmElements); + } else if(SymbolType.isWord(elementType) || SymbolType.isSWord(elementType)) { + asm.addDataNumeric(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.WORD, asmElements); added.add(asmName); } else { throw new RuntimeException("Unhandled constant array element type " + constantArrayList.toString(program)); diff --git a/src/test/java/dk/camelot64/kickc/test/kc/division.kc b/src/test/java/dk/camelot64/kickc/test/kc/division.kc index 53657f2ef..a7ae3133e 100644 --- a/src/test/java/dk/camelot64/kickc/test/kc/division.kc +++ b/src/test/java/dk/camelot64/kickc/test/kc/division.kc @@ -2,13 +2,36 @@ import "print.kc" const byte* NULL = 0; -void main() { - byte* rem = $ff; +word rem16u = 0; +void main() { + print_cls(); + test_8u(); + test_16u(); +} + +void test_16u() { + word[] dividends = { $ffff, $ffff, $ffff, $ffff, $ffff, $ffff}; + word[] divisors = { 5, 7, 11, 13, 17, 19 }; + for( byte i=0;i!=12;i=i+2) { + word dividend = dividends[i]; + word divisor = divisors[i]; + word res = div16u(dividend, divisor); + print_word(dividend); + print_str(" / @"); + print_word(divisor); + print_str(" = @"); + print_word(res); + print_str(" @"); + print_word(rem16u); + print_ln(); + } +} + +void test_8u() { + byte* rem = $ff; byte[] dividends = { 255, 255, 255, 255, 255, 255}; byte[] divisors = { 5, 7, 11, 13, 17, 19 }; - - print_cls(); for( byte i: 0..5 ) { byte dividend = dividends[i]; byte divisor = divisors[i]; @@ -45,4 +68,28 @@ byte div8u(byte dividend, byte divisor, byte* remainder) { } *remainder = rem; return quotient; +} + + +// Performs division on two 16 bit unsigned bytes +// Returns dividend/divisor. +// If remainder is non-null it will be set to the remainder. +// Implemented using simple binary division +word div16u(word dividend, word divisor) { + word rem = 0; + word quotient = 0; + for( byte i : 0..15) { + rem = rem << 1; + if( (>dividend & $80) != 0 ) { + rem++; + } + dividend = dividend << 1; + quotient = quotient << 1; + if(rem>=divisor) { + quotient++; + rem = rem - divisor; + } + } + rem16u = rem; + return quotient; } \ No newline at end of file diff --git a/src/test/java/dk/camelot64/kickc/test/ref/division.asm b/src/test/java/dk/camelot64/kickc/test/ref/division.asm index 65c0128d6..b4c9a2b44 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/division.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/division.asm @@ -1,16 +1,238 @@ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - .label char_cursor = 5 + .label char_cursor = 7 .label line_cursor = 3 + .label rem16u = 9 jsr main main: { - .label rem = $ff - .label dividend = $b - .label divisor = $c - .label res = 9 - .label i = 2 jsr print_cls + jsr test_8u + jsr test_16u + rts +} +test_16u: { + .label dividend = $d + .label divisor = $f + .label res = $11 + .label i = 2 + lda #0 + sta rem16u + sta rem16u+1 + sta i + b1: + ldy i + lda dividends,y + sta dividend + lda dividends+1,y + sta dividend+1 + lda divisors,y + sta divisor + lda divisors+1,y + sta divisor+1 + lda dividend + sta div16u.dividend + lda dividend+1 + sta div16u.dividend+1 + jsr div16u + lda div16u.return_1 + sta div16u.return + lda div16u.return_1+1 + sta div16u.return+1 + lda div16u.return + sta res + lda div16u.return+1 + sta res+1 + lda dividend + sta print_word.w + lda dividend+1 + sta print_word.w+1 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + jsr print_word + lda #str + sta print_str.str+1 + jsr print_str + lda divisor + sta print_word.w + lda divisor+1 + sta print_word.w+1 + jsr print_word + lda #str1 + sta print_str.str+1 + jsr print_str + lda res + sta print_word.w + lda res+1 + sta print_word.w+1 + jsr print_word + lda #str2 + sta print_str.str+1 + jsr print_str + lda div16u.rem + sta print_word.w + lda div16u.rem+1 + sta print_word.w+1 + jsr print_word + jsr print_ln + lda #2 + clc + adc i + sta i + cmp #$c + bne b1 + rts + str: .text " / @" + str1: .text " = @" + str2: .text " @" + dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff + divisors: .word 5, 7, $b, $d, $11, $13 +} +print_ln: { + b1: + lda line_cursor + clc + adc #$28 + sta line_cursor + bcc !+ + inc line_cursor+1 + !: + lda line_cursor+1 + cmp char_cursor+1 + bcc b1 + bne !+ + lda line_cursor + cmp char_cursor + bcc b1 + !: + rts +} +print_word: { + .label w = 5 + lda w+1 + tax + jsr print_byte + lda w + tax + jsr print_byte + rts +} +print_byte: { + txa + lsr + lsr + lsr + lsr + tay + lda hextab,y + jsr print_char + txa + and #$f + tay + lda hextab,y + jsr print_char + rts + hextab: .text "0123456789abcdef" +} +print_char: { + ldy #0 + sta (char_cursor),y + inc char_cursor + bne !+ + inc char_cursor+1 + !: + rts +} +print_str: { + .label str = 5 + b1: + ldy #0 + lda (str),y + cmp #'@' + bne b2 + rts + b2: + ldy #0 + lda (str),y + sta (char_cursor),y + inc char_cursor + bne !+ + inc char_cursor+1 + !: + inc str + bne !+ + inc str+1 + !: + jmp b1 +} +div16u: { + .label dividend = 5 + .label divisor = $f + .label return = 5 + .label rem = 9 + .label quotient = 7 + .label return_1 = 7 + ldx #0 + txa + sta quotient + sta quotient+1 + sta rem + sta rem+1 + b1: + asl rem + rol rem+1 + lda dividend+1 + and #$80 + cmp #0 + beq b2 + inc rem + bne !+ + inc rem+1 + !: + b2: + asl dividend + rol dividend+1 + asl quotient + rol quotient+1 + lda rem+1 + cmp divisor+1 + bcc b3 + bne !+ + lda rem + cmp divisor + bcc b3 + !: + inc quotient + bne !+ + inc quotient+1 + !: + lda rem + sec + sbc divisor + sta rem + lda rem+1 + sbc divisor+1 + sta rem+1 + b3: + inx + cpx #$10 + bne b1 + rts +} +test_8u: { + .label rem = $ff + .label dividend = $13 + .label divisor = $14 + .label res = $b + .label i = 2 lda #<$400 sta line_cursor lda #>$400 @@ -59,9 +281,9 @@ main: { inc i lda i cmp #6 - bne b13 + bne b12 rts - b13: + b12: lda line_cursor sta char_cursor lda line_cursor+1 @@ -73,78 +295,11 @@ main: { dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff divisors: .byte 5, 7, $b, $d, $11, $13 } -print_ln: { - b1: - lda line_cursor - clc - adc #$28 - sta line_cursor - bcc !+ - inc line_cursor+1 - !: - lda line_cursor+1 - cmp char_cursor+1 - bcc b1 - bne !+ - lda line_cursor - cmp char_cursor - bcc b1 - !: - rts -} -print_byte: { - txa - lsr - lsr - lsr - lsr - tay - lda hextab,y - jsr print_char - txa - and #$f - tay - lda hextab,y - jsr print_char - rts - hextab: .text "0123456789abcdef" -} -print_char: { - ldy #0 - sta (char_cursor),y - inc char_cursor - bne !+ - inc char_cursor+1 - !: - rts -} -print_str: { - .label str = 7 - b1: - ldy #0 - lda (str),y - cmp #'@' - bne b2 - rts - b2: - ldy #0 - lda (str),y - sta (char_cursor),y - inc char_cursor - bne !+ - inc char_cursor+1 - !: - inc str - bne !+ - inc str+1 - !: - jmp b1 -} div8u: { - .label dividend = 9 - .label divisor = $c - .label quotient = $a - .label return = $a + .label dividend = $b + .label divisor = $14 + .label quotient = $c + .label return = $c ldx #0 txa sta quotient @@ -172,7 +327,7 @@ div8u: { inx cpx #8 bne b1 - sty main.rem + sty test_8u.rem rts } print_cls: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/division.cfg b/src/test/java/dk/camelot64/kickc/test/ref/division.cfg index 480a53502..0643f7594 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/division.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/division.cfg @@ -1,167 +1,283 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@10 -@10: scope:[] from @begin + to:@13 +@13: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @10 +@end: scope:[] from @13 [3] phi() [ ] ( ) -main: scope:[main] from @10 +main: scope:[main] from @13 [4] phi() [ ] ( main:2 [ ] ) [5] call print_cls param-assignment [ ] ( main:2 [ ] ) to:main::@1 -main::@1: scope:[main] from main main::@13 - [6] (byte*) line_cursor#13 ← phi( main::@13/(byte*) line_cursor#1 main/((byte*))(word/signed word/dword/signed dword) 1024 ) [ main::i#10 char_cursor#42 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 ] ) - [6] (byte*) char_cursor#42 ← phi( main::@13/(byte*~) char_cursor#48 main/((byte*))(word/signed word/dword/signed dword) 1024 ) [ main::i#10 char_cursor#42 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 ] ) - [6] (byte) main::i#10 ← phi( main::@13/(byte) main::i#1 main/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::i#10 char_cursor#42 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 ] ) - [7] (byte) main::dividend#0 ← *((const byte[]) main::dividends#0 + (byte) main::i#10) [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 ] ) - [8] (byte) main::divisor#0 ← *((const byte[]) main::divisors#0 + (byte) main::i#10) [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 ] ) - [9] (byte) div8u::dividend#0 ← (byte) main::dividend#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 ] ) - [10] (byte) div8u::divisor#0 ← (byte) main::divisor#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ) - [11] call div8u param-assignment [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ) - [12] (byte) div8u::return#0 ← (byte) div8u::return#1 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#0 ] ) - to:main::@4 -main::@4: scope:[main] from main::@1 - [13] (byte) main::res#0 ← (byte) div8u::return#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 main::res#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 main::res#0 ] ) - [14] (byte) print_byte::b#0 ← (byte) main::dividend#0 [ main::i#10 char_cursor#42 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#0 ] ) - [15] call print_byte param-assignment [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] ) - to:main::@5 -main::@5: scope:[main] from main::@4 - [16] phi() [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] ) - [17] call print_str param-assignment [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] ) - to:main::@6 -main::@6: scope:[main] from main::@5 - [18] (byte) print_byte::b#1 ← (byte) main::divisor#0 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#1 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#1 char_cursor#2 ] ) - [19] call print_byte param-assignment [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] ) - to:main::@7 -main::@7: scope:[main] from main::@6 - [20] phi() [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] ) - [21] call print_str param-assignment [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] ) - to:main::@8 -main::@8: scope:[main] from main::@7 - [22] (byte) print_byte::b#2 ← (byte) main::res#0 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#2 ] ) - [23] call print_byte param-assignment [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - to:main::@9 -main::@9: scope:[main] from main::@8 - [24] phi() [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - [25] call print_str param-assignment [ main::i#10 line_cursor#13 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#2 ] ) - to:main::@10 -main::@10: scope:[main] from main::@9 - [26] (byte) print_byte::b#3 ← *((const byte*) main::rem#0) [ main::i#10 line_cursor#13 print_byte::b#3 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 print_byte::b#3 char_cursor#2 ] ) - [27] call print_byte param-assignment [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - to:main::@11 -main::@11: scope:[main] from main::@10 - [28] phi() [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - [29] call print_ln param-assignment [ main::i#10 line_cursor#1 ] ( main:2 [ main::i#10 line_cursor#1 ] ) - to:main::@12 -main::@12: scope:[main] from main::@11 - [30] (byte) main::i#1 ← ++ (byte) main::i#10 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) - [31] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto main::@13 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) +main::@1: scope:[main] from main + [6] phi() [ ] ( main:2 [ ] ) + [7] call test_8u param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + to:main::@2 +main::@2: scope:[main] from main::@1 + [8] phi() [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + [9] call test_16u param-assignment [ ] ( main:2 [ ] ) to:main::@return -main::@return: scope:[main] from main::@12 - [32] return [ ] ( main:2 [ ] ) +main::@return: scope:[main] from main::@2 + [10] return [ ] ( main:2 [ ] ) to:@return -main::@13: scope:[main] from main::@12 - [33] (byte*~) char_cursor#48 ← (byte*) line_cursor#1 [ main::i#1 char_cursor#48 line_cursor#1 ] ( main:2 [ main::i#1 char_cursor#48 line_cursor#1 ] ) - to:main::@1 -print_ln: scope:[print_ln] from main::@11 - [34] phi() [ line_cursor#13 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#13 char_cursor#28 ] ) +test_16u: scope:[test_16u] from main::@2 + [11] phi() [ line_cursor#1 ] ( main:2::test_16u:9 [ line_cursor#1 ] ) + to:test_16u::@1 +test_16u::@1: scope:[test_16u] from test_16u test_16u::@11 + [12] (word) rem16u#16 ← phi( test_16u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16u::@11/(word) div16u::rem#8 ) [ test_16u::i#10 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 line_cursor#1 ] ) + [12] (byte) test_16u::i#10 ← phi( test_16u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16u::@11/(byte) test_16u::i#1 ) [ test_16u::i#10 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 line_cursor#1 ] ) + [13] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) [ test_16u::i#10 test_16u::dividend#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 line_cursor#1 ] ) + [14] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 ] ) + [15] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 line_cursor#1 ] ) + [16] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 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#0 div16u::divisor#0 line_cursor#1 ] ) + [17] call div16u param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#1 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#1 line_cursor#1 ] ) + [18] (word) div16u::return#0 ← (word) div16u::return#1 [ 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 ] ) + to:test_16u::@3 +test_16u::@3: scope:[test_16u] from test_16u::@1 + [19] (word) test_16u::res#0 ← (word) div16u::return#0 [ 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 ] ) + [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 ] ) + [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 ] ) + [22] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] ) + to:test_16u::@4 +test_16u::@4: scope:[test_16u] from test_16u::@3 + [23] phi() [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] ) + [24] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] ) + to:test_16u::@5 +test_16u::@5: scope:[test_16u] from test_16u::@4 + [25] (word) print_word::w#1 ← (word) test_16u::divisor#0 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#1 char_cursor#2 ] ) + [26] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] ) + to:test_16u::@6 +test_16u::@6: scope:[test_16u] from test_16u::@5 + [27] phi() [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] ) + [28] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] ) + to:test_16u::@7 +test_16u::@7: scope:[test_16u] from test_16u::@6 + [29] (word) print_word::w#2 ← (word) test_16u::res#0 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#2 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#2 char_cursor#2 ] ) + [30] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + to:test_16u::@8 +test_16u::@8: scope:[test_16u] from test_16u::@7 + [31] phi() [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + [32] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] ) + to:test_16u::@9 +test_16u::@9: scope:[test_16u] from test_16u::@8 + [33] (word) print_word::w#3 ← (word) div16u::rem#8 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#3 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#3 char_cursor#2 ] ) + [34] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + to:test_16u::@10 +test_16u::@10: scope:[test_16u] from test_16u::@9 + [35] phi() [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + [36] call print_ln param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] ) + to:test_16u::@11 +test_16u::@11: scope:[test_16u] from test_16u::@10 + [37] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ) + [38] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ) + to:test_16u::@return +test_16u::@return: scope:[test_16u] from test_16u::@11 + [39] return [ ] ( main:2::test_16u:9 [ ] ) + to:@return +print_ln: scope:[print_ln] from test_16u::@10 test_8u::@10 + [40] (byte*) line_cursor#22 ← phi( test_16u::@10/(byte*) line_cursor#1 test_8u::@10/(byte*) line_cursor#25 ) [ line_cursor#22 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#22 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#22 char_cursor#11 ] ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - [35] (byte*) line_cursor#6 ← phi( print_ln/(byte*) line_cursor#13 print_ln::@1/(byte*) line_cursor#1 ) [ line_cursor#6 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#6 char_cursor#28 ] ) - [36] (byte*) line_cursor#1 ← (byte*) line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 char_cursor#28 ] ) - [37] if((byte*) line_cursor#1<(byte*) char_cursor#28) goto print_ln::@1 [ line_cursor#1 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 char_cursor#28 ] ) + [41] (byte*) line_cursor#11 ← phi( print_ln/(byte*) line_cursor#22 print_ln::@1/(byte*) line_cursor#1 ) [ line_cursor#11 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#11 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#11 char_cursor#11 ] ) + [42] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 char_cursor#11 ] ) + [43] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 char_cursor#11 ] ) to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 - [38] return [ line_cursor#1 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 ] ) + [44] return [ line_cursor#1 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 ] ) to:@return -print_byte: scope:[print_byte] from main::@10 main::@4 main::@6 main::@8 - [39] (byte*) char_cursor#41 ← phi( main::@10/(byte*) char_cursor#2 main::@4/(byte*) char_cursor#42 main::@6/(byte*) char_cursor#2 main::@8/(byte*) char_cursor#2 ) [ print_byte::b#4 char_cursor#41 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 ] ) - [39] (byte) print_byte::b#4 ← phi( main::@10/(byte) print_byte::b#3 main::@4/(byte) print_byte::b#0 main::@6/(byte) print_byte::b#1 main::@8/(byte) print_byte::b#2 ) [ print_byte::b#4 char_cursor#41 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 ] ) - [40] (byte~) print_byte::$0 ← (byte) print_byte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#4 char_cursor#41 print_byte::$0 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_byte::$0 ] ) - [41] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#4 char_cursor#41 print_char::ch#0 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_char::ch#0 ] ) - [42] call print_char param-assignment [ char_cursor#28 print_byte::b#4 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_byte::b#4 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_byte::b#4 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::b#4 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::b#4 ] ) +print_word: scope:[print_word] from test_16u::@3 test_16u::@5 test_16u::@7 test_16u::@9 + [45] (byte*) char_cursor#71 ← phi( test_16u::@3/(byte*~) char_cursor#84 test_16u::@5/(byte*) char_cursor#2 test_16u::@7/(byte*) char_cursor#2 test_16u::@9/(byte*) char_cursor#2 ) [ print_word::w#4 char_cursor#71 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 ] ) + [45] (word) print_word::w#4 ← phi( test_16u::@3/(word) print_word::w#0 test_16u::@5/(word) print_word::w#1 test_16u::@7/(word) print_word::w#2 test_16u::@9/(word) print_word::w#3 ) [ print_word::w#4 char_cursor#71 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 ] ) + [46] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_word::w#4 char_cursor#71 print_byte::b#0 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] ) + [47] call print_byte param-assignment [ char_cursor#11 print_word::w#4 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_word::w#4 ] ) + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [48] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#1 ] ) + [49] call print_byte param-assignment [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [50] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + to:@return +print_byte: scope:[print_byte] from print_word print_word::@1 test_8u::@3 test_8u::@5 test_8u::@7 test_8u::@9 + [51] (byte*) char_cursor#72 ← phi( print_word/(byte*) char_cursor#71 print_word::@1/(byte*) char_cursor#11 test_8u::@3/(byte*) char_cursor#75 test_8u::@5/(byte*) char_cursor#2 test_8u::@7/(byte*) char_cursor#2 test_8u::@9/(byte*) char_cursor#2 ) [ print_byte::b#6 char_cursor#72 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 ] ) + [51] (byte) print_byte::b#6 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 test_8u::@3/(byte) print_byte::b#2 test_8u::@5/(byte) print_byte::b#3 test_8u::@7/(byte) print_byte::b#4 test_8u::@9/(byte) print_byte::b#5 ) [ print_byte::b#6 char_cursor#72 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 ] ) + [52] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 char_cursor#72 print_byte::$0 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_byte::$0 ] ) + [53] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#6 char_cursor#72 print_char::ch#0 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_char::ch#0 ] ) + [54] call print_char param-assignment [ char_cursor#11 print_byte::b#6 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::b#6 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [43] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#28 print_byte::$2 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_byte::$2 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_byte::$2 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::$2 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::$2 ] ) - [44] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#28 print_char::ch#1 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_char::ch#1 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_char::ch#1 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_char::ch#1 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_char::ch#1 ] ) - [45] call print_char param-assignment [ char_cursor#28 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 ] ) + [55] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::$2 ] ) + [56] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_char::ch#1 ] ) + [57] call print_char param-assignment [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 - [46] return [ char_cursor#28 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 ] ) + [58] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) to:@return print_char: scope:[print_char] from print_byte print_byte::@1 - [47] (byte*) char_cursor#27 ← phi( print_byte/(byte*) char_cursor#41 print_byte::@1/(byte*) char_cursor#28 ) [ print_char::ch#2 char_cursor#27 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_char::ch#2 char_cursor#27 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 print_char::ch#2 char_cursor#27 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 print_char::ch#2 char_cursor#27 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 print_char::ch#2 char_cursor#27 ] ) - [47] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#27 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_char::ch#2 char_cursor#27 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 print_char::ch#2 char_cursor#27 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 print_char::ch#2 char_cursor#27 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 print_char::ch#2 char_cursor#27 ] ) - [48] *((byte*) char_cursor#27) ← (byte) print_char::ch#2 [ char_cursor#27 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#27 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#27 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#27 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#27 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#27 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#27 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#27 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#27 ] ) - [49] (byte*) char_cursor#28 ← ++ (byte*) char_cursor#27 [ char_cursor#28 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] ) + [59] (byte*) char_cursor#45 ← phi( print_byte/(byte*) char_cursor#72 print_byte::@1/(byte*) char_cursor#11 ) [ print_char::ch#2 char_cursor#45 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 print_char::ch#2 char_cursor#45 ] ) + [59] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#45 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 print_char::ch#2 char_cursor#45 ] ) + [60] *((byte*) char_cursor#45) ← (byte) print_char::ch#2 [ char_cursor#45 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#45 ] ) + [61] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#45 [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) to:print_char::@return print_char::@return: scope:[print_char] from print_char - [50] return [ char_cursor#28 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] ) + [62] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) to:@return -print_str: scope:[print_str] from main::@5 main::@7 main::@9 - [51] (byte*) print_str::str#6 ← phi( main::@5/(const string) main::str main::@7/(const string) main::str1 main::@9/(const string) main::str2 ) [ char_cursor#28 print_str::str#6 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_str::str#6 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_str::str#6 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#28 print_str::str#6 ] ) +print_str: scope:[print_str] from test_16u::@4 test_16u::@6 test_16u::@8 test_8u::@4 test_8u::@6 test_8u::@8 + [63] (byte*) print_str::str#9 ← phi( test_16u::@4/(const string) test_16u::str test_16u::@6/(const string) test_16u::str1 test_16u::@8/(const string) test_16u::str2 test_8u::@4/(const string) test_8u::str test_8u::@6/(const string) test_8u::str1 test_8u::@8/(const string) test_8u::str2 ) [ char_cursor#11 print_str::str#9 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_str::str#9 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_str::str#9 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_str::str#9 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_str::str#9 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_str::str#9 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_str::str#9 ] ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [52] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#28 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) - [52] (byte*) print_str::str#4 ← phi( print_str/(byte*) print_str::str#6 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) - [53] if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) + [64] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#11 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) + [64] (byte*) print_str::str#7 ← phi( print_str/(byte*) print_str::str#9 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) + [65] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [54] return [ char_cursor#2 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 ] ) + [66] return [ char_cursor#2 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 ] ) to:@return print_str::@2: scope:[print_str] from print_str::@1 - [55] *((byte*) char_cursor#2) ← *((byte*) print_str::str#4) [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) - [56] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#4 char_cursor#1 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_str::str#4 char_cursor#1 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 print_str::str#4 char_cursor#1 ] main:2::print_str:25 [ main::i#10 line_cursor#13 print_str::str#4 char_cursor#1 ] ) - [57] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_str::str#0 char_cursor#1 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 print_str::str#0 char_cursor#1 ] main:2::print_str:25 [ main::i#10 line_cursor#13 print_str::str#0 char_cursor#1 ] ) + [67] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) + [68] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 print_str::str#7 char_cursor#1 ] ) + [69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 print_str::str#0 char_cursor#1 ] ) to:print_str::@1 -div8u: scope:[div8u] from main::@1 - [58] phi() [ div8u::dividend#0 div8u::divisor#0 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ) +div16u: scope:[div16u] from test_16u::@1 + [70] phi() [ div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::dividend#0 div16u::divisor#0 ] ) + to:div16u::@1 +div16u::@1: scope:[div16u] from div16u div16u::@3 + [71] (byte) div16u::i#2 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div16u::@3/(byte) div16u::i#1 ) [ div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ) + [71] (word) div16u::quotient#3 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div16u::@3/(word) div16u::return#1 ) [ div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ) + [71] (word) div16u::dividend#2 ← phi( div16u/(word) div16u::dividend#0 div16u::@3/(word) div16u::dividend#1 ) [ div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ) + [71] (word) div16u::rem#4 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div16u::@3/(word) div16u::rem#8 ) [ div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ) + [72] (word) div16u::rem#1 ← (word) div16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ) + [73] (byte~) div16u::$1 ← > (word) div16u::dividend#2 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$1 ] ) + [74] (byte~) div16u::$2 ← (byte~) div16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$2 ] ) + [75] if((byte~) div16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div16u::@2 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ) + to:div16u::@4 +div16u::@4: scope:[div16u] from div16u::@1 + [76] (word) div16u::rem#2 ← ++ (word) div16u::rem#1 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#2 ] ) + to:div16u::@2 +div16u::@2: scope:[div16u] from div16u::@1 div16u::@4 + [77] (word) div16u::rem#5 ← phi( div16u::@1/(word) div16u::rem#1 div16u::@4/(word) div16u::rem#2 ) [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#5 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#5 ] ) + [78] (word) div16u::dividend#1 ← (word) div16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::quotient#3 div16u::i#2 div16u::dividend#1 div16u::rem#5 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::quotient#3 div16u::i#2 div16u::dividend#1 div16u::rem#5 ] ) + [79] (word) div16u::quotient#1 ← (word) div16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ) + [80] if((word) div16u::rem#5<(word) div16u::divisor#0) goto div16u::@3 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ) + to:div16u::@5 +div16u::@5: scope:[div16u] from div16u::@2 + [81] (word) div16u::quotient#2 ← ++ (word) div16u::quotient#1 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#2 ] ) + [82] (word) div16u::rem#3 ← (word) div16u::rem#5 - (word) div16u::divisor#0 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::quotient#2 div16u::rem#3 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::quotient#2 div16u::rem#3 ] ) + to:div16u::@3 +div16u::@3: scope:[div16u] from div16u::@2 div16u::@5 + [83] (word) div16u::return#1 ← phi( div16u::@2/(word) div16u::quotient#1 div16u::@5/(word) div16u::quotient#2 ) [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::i#2 div16u::dividend#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::i#2 div16u::dividend#1 ] ) + [83] (word) div16u::rem#8 ← phi( div16u::@2/(word) div16u::rem#5 div16u::@5/(word) div16u::rem#3 ) [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::i#2 div16u::dividend#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::i#2 div16u::dividend#1 ] ) + [84] (byte) div16u::i#1 ← ++ (byte) div16u::i#2 [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ) + [85] if((byte) div16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto div16u::@1 [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ) + to:div16u::@return +div16u::@return: scope:[div16u] from div16u::@3 + [86] return [ div16u::rem#8 div16u::return#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::return#1 ] ) + to:@return +test_8u: scope:[test_8u] from main::@1 + [87] phi() [ ] ( main:2::test_8u:7 [ ] ) + to:test_8u::@1 +test_8u::@1: scope:[test_8u] from test_8u test_8u::@12 + [88] (byte*) line_cursor#25 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) 1024 test_8u::@12/(byte*) line_cursor#1 ) [ line_cursor#25 char_cursor#75 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 ] ) + [88] (byte*) char_cursor#75 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) 1024 test_8u::@12/(byte*~) char_cursor#98 ) [ line_cursor#25 char_cursor#75 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 ] ) + [88] (byte) test_8u::i#10 ← phi( test_8u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8u::@12/(byte) test_8u::i#1 ) [ line_cursor#25 char_cursor#75 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 ] ) + [89] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 ] ) + [90] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ) + [91] (byte) div8u::dividend#0 ← (byte) test_8u::dividend#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 ] ) + [92] (byte) div8u::divisor#0 ← (byte) test_8u::divisor#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ) + [93] call div8u param-assignment [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ) + [94] (byte) div8u::return#0 ← (byte) div8u::return#1 [ line_cursor#25 char_cursor#75 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::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#0 ] ) + to:test_8u::@3 +test_8u::@3: scope:[test_8u] from test_8u::@1 + [95] (byte) test_8u::res#0 ← (byte) div8u::return#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 test_8u::res#0 ] ) + [96] (byte) print_byte::b#2 ← (byte) test_8u::dividend#0 [ line_cursor#25 print_byte::b#2 char_cursor#75 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 print_byte::b#2 char_cursor#75 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) + [97] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) + to:test_8u::@4 +test_8u::@4: scope:[test_8u] from test_8u::@3 + [98] phi() [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) + [99] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) + to:test_8u::@5 +test_8u::@5: scope:[test_8u] from test_8u::@4 + [100] (byte) print_byte::b#3 ← (byte) test_8u::divisor#0 [ line_cursor#25 char_cursor#2 print_byte::b#3 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#3 test_8u::i#10 test_8u::res#0 ] ) + [101] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] ) + to:test_8u::@6 +test_8u::@6: scope:[test_8u] from test_8u::@5 + [102] phi() [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] ) + [103] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::res#0 ] ) + to:test_8u::@7 +test_8u::@7: scope:[test_8u] from test_8u::@6 + [104] (byte) print_byte::b#4 ← (byte) test_8u::res#0 [ line_cursor#25 char_cursor#2 print_byte::b#4 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#4 test_8u::i#10 ] ) + [105] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ) + to:test_8u::@8 +test_8u::@8: scope:[test_8u] from test_8u::@7 + [106] phi() [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ) + [107] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 ] ) + to:test_8u::@9 +test_8u::@9: scope:[test_8u] from test_8u::@8 + [108] (byte) print_byte::b#5 ← *((const byte*) test_8u::rem#0) [ line_cursor#25 char_cursor#2 print_byte::b#5 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#5 test_8u::i#10 ] ) + [109] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ) + to:test_8u::@10 +test_8u::@10: scope:[test_8u] from test_8u::@9 + [110] phi() [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ) + [111] call print_ln param-assignment [ line_cursor#1 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#10 ] ) + to:test_8u::@11 +test_8u::@11: scope:[test_8u] from test_8u::@10 + [112] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 [ line_cursor#1 test_8u::i#1 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 ] ) + [113] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@12 [ line_cursor#1 test_8u::i#1 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 ] ) + to:test_8u::@return +test_8u::@return: scope:[test_8u] from test_8u::@11 + [114] return [ line_cursor#1 ] ( main:2::test_8u:7 [ line_cursor#1 ] ) + to:@return +test_8u::@12: scope:[test_8u] from test_8u::@11 + [115] (byte*~) char_cursor#98 ← (byte*) line_cursor#1 [ line_cursor#1 test_8u::i#1 char_cursor#98 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 char_cursor#98 ] ) + to:test_8u::@1 +div8u: scope:[div8u] from test_8u::@1 + [116] phi() [ div8u::dividend#0 div8u::divisor#0 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ) to:div8u::@1 div8u::@1: scope:[div8u] from div8u div8u::@3 - [59] (byte) div8u::i#2 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::i#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ) - [59] (byte) div8u::quotient#3 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::return#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ) - [59] (byte) div8u::dividend#2 ← phi( div8u/(byte) div8u::dividend#0 div8u::@3/(byte) div8u::dividend#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ) - [59] (byte) div8u::rem#4 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::rem#8 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ) - [60] (byte) div8u::rem#1 ← (byte) div8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) - [61] (byte~) div8u::$1 ← (byte) div8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ) - [62] if((byte~) div8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8u::@2 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) + [117] (byte) div8u::i#2 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::i#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ) + [117] (byte) div8u::quotient#3 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::return#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ) + [117] (byte) div8u::dividend#2 ← phi( div8u/(byte) div8u::dividend#0 div8u::@3/(byte) div8u::dividend#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ) + [117] (byte) div8u::rem#4 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::rem#8 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ) + [118] (byte) div8u::rem#1 ← (byte) div8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) + [119] (byte~) div8u::$1 ← (byte) div8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ) + [120] if((byte~) div8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8u::@2 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) to:div8u::@4 div8u::@4: scope:[div8u] from div8u::@1 - [63] (byte) div8u::rem#2 ← ++ (byte) div8u::rem#1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ) + [121] (byte) div8u::rem#2 ← ++ (byte) div8u::rem#1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ) to:div8u::@2 div8u::@2: scope:[div8u] from div8u::@1 div8u::@4 - [64] (byte) div8u::rem#5 ← phi( div8u::@1/(byte) div8u::rem#1 div8u::@4/(byte) div8u::rem#2 ) [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#5 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#5 ] ) - [65] (byte) div8u::dividend#1 ← (byte) div8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ) - [66] (byte) div8u::quotient#1 ← (byte) div8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) - [67] if((byte) div8u::rem#5<(byte) div8u::divisor#0) goto div8u::@3 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) + [122] (byte) div8u::rem#5 ← phi( div8u::@1/(byte) div8u::rem#1 div8u::@4/(byte) div8u::rem#2 ) [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#5 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#5 ] ) + [123] (byte) div8u::dividend#1 ← (byte) div8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ) + [124] (byte) div8u::quotient#1 ← (byte) div8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) + [125] if((byte) div8u::rem#5<(byte) div8u::divisor#0) goto div8u::@3 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) to:div8u::@5 div8u::@5: scope:[div8u] from div8u::@2 - [68] (byte) div8u::quotient#2 ← ++ (byte) div8u::quotient#1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ) - [69] (byte) div8u::rem#3 ← (byte) div8u::rem#5 - (byte) div8u::divisor#0 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ) + [126] (byte) div8u::quotient#2 ← ++ (byte) div8u::quotient#1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ) + [127] (byte) div8u::rem#3 ← (byte) div8u::rem#5 - (byte) div8u::divisor#0 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ) to:div8u::@3 div8u::@3: scope:[div8u] from div8u::@2 div8u::@5 - [70] (byte) div8u::return#1 ← phi( div8u::@2/(byte) div8u::quotient#1 div8u::@5/(byte) div8u::quotient#2 ) [ div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ) - [70] (byte) div8u::rem#8 ← phi( div8u::@2/(byte) div8u::rem#5 div8u::@5/(byte) div8u::rem#3 ) [ div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ) - [71] (byte) div8u::i#1 ← ++ (byte) div8u::i#2 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) - [72] if((byte) div8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto div8u::@1 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) + [128] (byte) div8u::return#1 ← phi( div8u::@2/(byte) div8u::quotient#1 div8u::@5/(byte) div8u::quotient#2 ) [ div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ) + [128] (byte) div8u::rem#8 ← phi( div8u::@2/(byte) div8u::rem#5 div8u::@5/(byte) div8u::rem#3 ) [ div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ) + [129] (byte) div8u::i#1 ← ++ (byte) div8u::i#2 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) + [130] if((byte) div8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto div8u::@1 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) to:div8u::@6 div8u::@6: scope:[div8u] from div8u::@3 - [73] *((const byte*) main::rem#0) ← (byte) div8u::rem#8 [ div8u::return#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ) + [131] *((const byte*) test_8u::rem#0) ← (byte) div8u::rem#8 [ div8u::return#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ) to:div8u::@return div8u::@return: scope:[div8u] from div8u::@6 - [74] return [ div8u::return#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ) + [132] return [ div8u::return#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ) to:@return print_cls: scope:[print_cls] from main - [75] phi() [ ] ( main:2::print_cls:5 [ ] ) + [133] phi() [ ] ( main:2::print_cls:5 [ ] ) to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [76] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) - [77] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) - [78] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) - [79] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) + [134] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) + [135] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) + [136] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) + [137] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [80] return [ ] ( main:2::print_cls:5 [ ] ) + [138] return [ ] ( main:2::print_cls:5 [ ] ) to:@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/division.log b/src/test/java/dk/camelot64/kickc/test/ref/division.log index 4c4c1b0cd..b650bf9f3 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/division.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/division.log @@ -3,13 +3,36 @@ import "print.kc" const byte* NULL = 0; -void main() { - byte* rem = $ff; +word rem16u = 0; +void main() { + print_cls(); + test_8u(); + test_16u(); +} + +void test_16u() { + word[] dividends = { $ffff, $ffff, $ffff, $ffff, $ffff, $ffff}; + word[] divisors = { 5, 7, 11, 13, 17, 19 }; + for( byte i=0;i!=12;i=i+2) { + word dividend = dividends[i]; + word divisor = divisors[i]; + word res = div16u(dividend, divisor); + print_word(dividend); + print_str(" / @"); + print_word(divisor); + print_str(" = @"); + print_word(res); + print_str(" @"); + print_word(rem16u); + print_ln(); + } +} + +void test_8u() { + byte* rem = $ff; byte[] dividends = { 255, 255, 255, 255, 255, 255}; byte[] divisors = { 5, 7, 11, 13, 17, 19 }; - - print_cls(); for( byte i: 0..5 ) { byte dividend = dividends[i]; byte divisor = divisors[i]; @@ -47,6 +70,30 @@ byte div8u(byte dividend, byte divisor, byte* remainder) { *remainder = rem; return quotient; } + + +// Performs division on two 16 bit unsigned bytes +// Returns dividend/divisor. +// If remainder is non-null it will be set to the remainder. +// Implemented using simple binary division +word div16u(word dividend, word divisor) { + word rem = 0; + word quotient = 0; + for( byte i : 0..15) { + rem = rem << 1; + if( (>dividend & $80) != 0 ) { + rem++; + } + dividend = dividend << 1; + quotient = quotient << 1; + if(rem>=divisor) { + quotient++; + rem = rem - divisor; + } + } + rem16u = rem; + return quotient; +} Importing print.kc PARSING src/test/java/dk/camelot64/kickc/test/kc/print.kc @@ -120,6 +167,8 @@ Adding pre/post-modifier (byte*) char_cursor ← ++ (byte*) char_cursor Adding pre/post-modifier (byte*) print_cls::sc ← ++ (byte*) print_cls::sc Adding pre/post-modifier (byte) div8u::rem ← ++ (byte) div8u::rem Adding pre/post-modifier (byte) div8u::quotient ← ++ (byte) div8u::quotient +Adding pre/post-modifier (word) div16u::rem ← ++ (word) div16u::rem +Adding pre/post-modifier (word) div16u::quotient ← ++ (word) div16u::quotient STATEMENTS (byte*) line_cursor ← (word/signed word/dword/signed dword) 1024 @@ -209,31 +258,62 @@ print_cls::@return: return endproc // print_cls() (byte*) NULL ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) rem16u ← (byte/signed byte/word/signed word/dword/signed dword) 0 proc (void()) main() - (byte*) main::rem ← (byte/word/signed word/dword/signed dword) 255 - (byte[]) main::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[]) main::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 } (void~) main::$0 ← call print_cls - (byte) main::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 -main::@1: - (byte) main::dividend ← *((byte[]) main::dividends + (byte) main::i) - (byte) main::divisor ← *((byte[]) main::divisors + (byte) main::i) - (byte~) main::$1 ← call div8u (byte) main::dividend (byte) main::divisor (byte*) main::rem - (byte) main::res ← (byte~) main::$1 - (void~) main::$2 ← call print_byte (byte) main::dividend - (void~) main::$3 ← call print_str (string) " / @" - (void~) main::$4 ← call print_byte (byte) main::divisor - (void~) main::$5 ← call print_str (string) " = @" - (void~) main::$6 ← call print_byte (byte) main::res - (void~) main::$7 ← call print_str (string) " @" - (void~) main::$8 ← call print_byte *((byte*) main::rem) - (void~) main::$9 ← call print_ln - (byte) main::i ← ++ (byte) main::i - (boolean~) main::$10 ← (byte) main::i != (byte/signed byte/word/signed word/dword/signed dword) 6 - if((boolean~) main::$10) goto main::@1 + (void~) main::$1 ← call test_8u + (void~) main::$2 ← call test_16u main::@return: return endproc // main() +proc (void()) test_16u() + (word[]) test_16u::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::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/signed byte/word/signed word/dword/signed dword) 0 +test_16u::@1: + (word) test_16u::dividend ← *((word[]) test_16u::dividends + (byte) test_16u::i) + (word) test_16u::divisor ← *((word[]) test_16u::divisors + (byte) test_16u::i) + (word~) test_16u::$0 ← call div16u (word) test_16u::dividend (word) test_16u::divisor + (word) test_16u::res ← (word~) test_16u::$0 + (void~) test_16u::$1 ← call print_word (word) test_16u::dividend + (void~) test_16u::$2 ← call print_str (string) " / @" + (void~) test_16u::$3 ← call print_word (word) test_16u::divisor + (void~) test_16u::$4 ← call print_str (string) " = @" + (void~) test_16u::$5 ← call print_word (word) test_16u::res + (void~) test_16u::$6 ← call print_str (string) " @" + (void~) test_16u::$7 ← call print_word (word) rem16u + (void~) test_16u::$8 ← call print_ln + (byte/word~) test_16u::$9 ← (byte) test_16u::i + (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) test_16u::i ← (byte/word~) test_16u::$9 + (boolean~) test_16u::$10 ← (byte) test_16u::i != (byte/signed byte/word/signed word/dword/signed dword) 12 + if((boolean~) test_16u::$10) goto test_16u::@1 +test_16u::@return: + return +endproc // test_16u() +proc (void()) test_8u() + (byte*) test_8u::rem ← (byte/word/signed word/dword/signed dword) 255 + (byte[]) test_8u::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::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/signed byte/word/signed word/dword/signed dword) 0 +test_8u::@1: + (byte) test_8u::dividend ← *((byte[]) test_8u::dividends + (byte) test_8u::i) + (byte) test_8u::divisor ← *((byte[]) test_8u::divisors + (byte) test_8u::i) + (byte~) test_8u::$0 ← call div8u (byte) test_8u::dividend (byte) test_8u::divisor (byte*) test_8u::rem + (byte) test_8u::res ← (byte~) test_8u::$0 + (void~) test_8u::$1 ← call print_byte (byte) test_8u::dividend + (void~) test_8u::$2 ← call print_str (string) " / @" + (void~) test_8u::$3 ← call print_byte (byte) test_8u::divisor + (void~) test_8u::$4 ← call print_str (string) " = @" + (void~) test_8u::$5 ← call print_byte (byte) test_8u::res + (void~) test_8u::$6 ← call print_str (string) " @" + (void~) test_8u::$7 ← call print_byte *((byte*) test_8u::rem) + (void~) test_8u::$8 ← call print_ln + (byte) test_8u::i ← ++ (byte) test_8u::i + (boolean~) test_8u::$9 ← (byte) test_8u::i != (byte/signed byte/word/signed word/dword/signed dword) 6 + if((boolean~) test_8u::$9) goto test_8u::@1 +test_8u::@return: + return +endproc // test_8u() proc (byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor , (byte*) div8u::remainder) (byte) div8u::rem ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) div8u::quotient ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -268,11 +348,68 @@ div8u::@return: (byte) div8u::return ← (byte) div8u::return return (byte) div8u::return endproc // div8u() +proc (word()) div16u((word) div16u::dividend , (word) div16u::divisor) + (word) div16u::rem ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) div16u::quotient ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) div16u::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 +div16u::@1: + (word~) div16u::$0 ← (word) div16u::rem << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) div16u::rem ← (word~) div16u::$0 + (byte~) div16u::$1 ← > (word) div16u::dividend + (byte~) div16u::$2 ← (byte~) div16u::$1 & (byte/word/signed word/dword/signed dword) 128 + (boolean~) div16u::$3 ← (byte~) div16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div16u::$4 ← ! (boolean~) div16u::$3 + if((boolean~) div16u::$4) goto div16u::@2 + (word) div16u::rem ← ++ (word) div16u::rem +div16u::@2: + (word~) div16u::$5 ← (word) div16u::dividend << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) div16u::dividend ← (word~) div16u::$5 + (word~) div16u::$6 ← (word) div16u::quotient << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) div16u::quotient ← (word~) div16u::$6 + (boolean~) div16u::$7 ← (word) div16u::rem >= (word) div16u::divisor + (boolean~) div16u::$8 ← ! (boolean~) div16u::$7 + if((boolean~) div16u::$8) goto div16u::@3 + (word) div16u::quotient ← ++ (word) div16u::quotient + (word~) div16u::$9 ← (word) div16u::rem - (word) div16u::divisor + (word) div16u::rem ← (word~) div16u::$9 +div16u::@3: + (byte) div16u::i ← ++ (byte) div16u::i + (boolean~) div16u::$10 ← (byte) div16u::i != (byte/signed byte/word/signed word/dword/signed dword) 16 + if((boolean~) div16u::$10) goto div16u::@1 + (word) rem16u ← (word) div16u::rem + (word) div16u::return ← (word) div16u::quotient + goto div16u::@return +div16u::@return: + (word) div16u::return ← (word) div16u::return + return (word) div16u::return +endproc // div16u() call main SYMBOLS (byte*) NULL (byte*) char_cursor +(word()) div16u((word) div16u::dividend , (word) div16u::divisor) +(word~) div16u::$0 +(byte~) div16u::$1 +(boolean~) div16u::$10 +(byte~) div16u::$2 +(boolean~) div16u::$3 +(boolean~) div16u::$4 +(word~) div16u::$5 +(word~) div16u::$6 +(boolean~) div16u::$7 +(boolean~) div16u::$8 +(word~) div16u::$9 +(label) div16u::@1 +(label) div16u::@2 +(label) div16u::@3 +(label) div16u::@return +(word) div16u::dividend +(word) div16u::divisor +(byte) div16u::i +(word) div16u::quotient +(word) div16u::rem +(word) div16u::return (byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor , (byte*) div8u::remainder) (byte~) div8u::$0 (byte~) div8u::$1 @@ -298,25 +435,9 @@ SYMBOLS (byte*) line_cursor (void()) main() (void~) main::$0 -(byte~) main::$1 -(boolean~) main::$10 +(void~) main::$1 (void~) main::$2 -(void~) main::$3 -(void~) main::$4 -(void~) main::$5 -(void~) main::$6 -(void~) main::$7 -(void~) main::$8 -(void~) main::$9 -(label) main::@1 (label) main::@return -(byte) main::dividend -(byte[]) main::dividends -(byte) main::divisor -(byte[]) main::divisors -(byte) main::i -(byte*) main::rem -(byte) main::res (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 (void~) print_byte::$1 @@ -373,11 +494,52 @@ SYMBOLS (void~) print_word::$3 (label) print_word::@return (word) print_word::w +(word) rem16u +(void()) test_16u() +(word~) test_16u::$0 +(void~) test_16u::$1 +(boolean~) test_16u::$10 +(void~) test_16u::$2 +(void~) test_16u::$3 +(void~) test_16u::$4 +(void~) test_16u::$5 +(void~) test_16u::$6 +(void~) test_16u::$7 +(void~) test_16u::$8 +(byte/word~) test_16u::$9 +(label) test_16u::@1 +(label) test_16u::@return +(word) test_16u::dividend +(word[]) test_16u::dividends +(word) test_16u::divisor +(word[]) test_16u::divisors +(byte) test_16u::i +(word) test_16u::res +(void()) test_8u() +(byte~) test_8u::$0 +(void~) test_8u::$1 +(void~) test_8u::$2 +(void~) test_8u::$3 +(void~) test_8u::$4 +(void~) test_8u::$5 +(void~) test_8u::$6 +(void~) test_8u::$7 +(void~) test_8u::$8 +(boolean~) test_8u::$9 +(label) test_8u::@1 +(label) test_8u::@return +(byte) test_8u::dividend +(byte[]) test_8u::dividends +(byte) test_8u::divisor +(byte[]) test_8u::divisors +(byte) test_8u::i +(byte*) test_8u::rem +(byte) test_8u::res Promoting word/signed word/dword/signed dword to byte* in line_cursor ← ((byte*)) 1024 Promoting word/signed word/dword/signed dword to byte* in print_cls::sc ← ((byte*)) 1024 Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in NULL ← ((byte*)) 0 -Promoting byte/word/signed word/dword/signed dword to byte* in main::rem ← ((byte*)) 255 +Promoting byte/word/signed word/dword/signed dword to byte* in test_8u::rem ← ((byte*)) 255 INITIAL CONTROL FLOW GRAPH @begin: scope:[] from (byte*) line_cursor ← ((byte*)) (word/signed word/dword/signed dword) 1024 @@ -510,38 +672,78 @@ print_cls::@return: scope:[print_cls] from print_cls::@2 to:@return @8: scope:[] from @7 (byte*) NULL ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) rem16u ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@9 main: scope:[main] from - (byte*) main::rem ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 - (byte[]) main::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[]) main::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 } (void~) main::$0 ← call print_cls - (byte) main::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:main::@1 -main::@1: scope:[main] from main main::@1 - (byte) main::dividend ← *((byte[]) main::dividends + (byte) main::i) - (byte) main::divisor ← *((byte[]) main::divisors + (byte) main::i) - (byte~) main::$1 ← call div8u (byte) main::dividend (byte) main::divisor (byte*) main::rem - (byte) main::res ← (byte~) main::$1 - (void~) main::$2 ← call print_byte (byte) main::dividend - (void~) main::$3 ← call print_str (string) " / @" - (void~) main::$4 ← call print_byte (byte) main::divisor - (void~) main::$5 ← call print_str (string) " = @" - (void~) main::$6 ← call print_byte (byte) main::res - (void~) main::$7 ← call print_str (string) " @" - (void~) main::$8 ← call print_byte *((byte*) main::rem) - (void~) main::$9 ← call print_ln - (byte) main::i ← ++ (byte) main::i - (boolean~) main::$10 ← (byte) main::i != (byte/signed byte/word/signed word/dword/signed dword) 6 - if((boolean~) main::$10) goto main::@1 - to:main::@2 -main::@2: scope:[main] from main::@1 + (void~) main::$1 ← call test_8u + (void~) main::$2 ← call test_16u to:main::@return -main::@return: scope:[main] from main::@2 +main::@return: scope:[main] from main return to:@return @9: scope:[] from @8 to:@10 +test_16u: scope:[test_16u] from + (word[]) test_16u::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::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/signed byte/word/signed word/dword/signed dword) 0 + to:test_16u::@1 +test_16u::@1: scope:[test_16u] from test_16u test_16u::@1 + (word) test_16u::dividend ← *((word[]) test_16u::dividends + (byte) test_16u::i) + (word) test_16u::divisor ← *((word[]) test_16u::divisors + (byte) test_16u::i) + (word~) test_16u::$0 ← call div16u (word) test_16u::dividend (word) test_16u::divisor + (word) test_16u::res ← (word~) test_16u::$0 + (void~) test_16u::$1 ← call print_word (word) test_16u::dividend + (void~) test_16u::$2 ← call print_str (string) " / @" + (void~) test_16u::$3 ← call print_word (word) test_16u::divisor + (void~) test_16u::$4 ← call print_str (string) " = @" + (void~) test_16u::$5 ← call print_word (word) test_16u::res + (void~) test_16u::$6 ← call print_str (string) " @" + (void~) test_16u::$7 ← call print_word (word) rem16u + (void~) test_16u::$8 ← call print_ln + (byte/word~) test_16u::$9 ← (byte) test_16u::i + (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) test_16u::i ← (byte/word~) test_16u::$9 + (boolean~) test_16u::$10 ← (byte) test_16u::i != (byte/signed byte/word/signed word/dword/signed dword) 12 + if((boolean~) test_16u::$10) goto test_16u::@1 + to:test_16u::@2 +test_16u::@2: scope:[test_16u] from test_16u::@1 + to:test_16u::@return +test_16u::@return: scope:[test_16u] from test_16u::@2 + return + to:@return +@10: scope:[] from @9 + to:@11 +test_8u: scope:[test_8u] from + (byte*) test_8u::rem ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 + (byte[]) test_8u::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::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/signed byte/word/signed word/dword/signed dword) 0 + to:test_8u::@1 +test_8u::@1: scope:[test_8u] from test_8u test_8u::@1 + (byte) test_8u::dividend ← *((byte[]) test_8u::dividends + (byte) test_8u::i) + (byte) test_8u::divisor ← *((byte[]) test_8u::divisors + (byte) test_8u::i) + (byte~) test_8u::$0 ← call div8u (byte) test_8u::dividend (byte) test_8u::divisor (byte*) test_8u::rem + (byte) test_8u::res ← (byte~) test_8u::$0 + (void~) test_8u::$1 ← call print_byte (byte) test_8u::dividend + (void~) test_8u::$2 ← call print_str (string) " / @" + (void~) test_8u::$3 ← call print_byte (byte) test_8u::divisor + (void~) test_8u::$4 ← call print_str (string) " = @" + (void~) test_8u::$5 ← call print_byte (byte) test_8u::res + (void~) test_8u::$6 ← call print_str (string) " @" + (void~) test_8u::$7 ← call print_byte *((byte*) test_8u::rem) + (void~) test_8u::$8 ← call print_ln + (byte) test_8u::i ← ++ (byte) test_8u::i + (boolean~) test_8u::$9 ← (byte) test_8u::i != (byte/signed byte/word/signed word/dword/signed dword) 6 + if((boolean~) test_8u::$9) goto test_8u::@1 + to:test_8u::@2 +test_8u::@2: scope:[test_8u] from test_8u::@1 + to:test_8u::@return +test_8u::@return: scope:[test_8u] from test_8u::@2 + return + to:@return +@11: scope:[] from @10 + to:@12 div8u: scope:[div8u] from (byte) div8u::rem ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) div8u::quotient ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -587,30 +789,92 @@ div8u::@return: scope:[div8u] from div8u::@6 div8u::@7 to:@return div8u::@7: scope:[div8u] from to:div8u::@return -@10: scope:[] from @9 +@12: scope:[] from @11 + to:@13 +div16u: scope:[div16u] from + (word) div16u::rem ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) div16u::quotient ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) div16u::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:div16u::@1 +div16u::@1: scope:[div16u] from div16u div16u::@3 + (word~) div16u::$0 ← (word) div16u::rem << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) div16u::rem ← (word~) div16u::$0 + (byte~) div16u::$1 ← > (word) div16u::dividend + (byte~) div16u::$2 ← (byte~) div16u::$1 & (byte/word/signed word/dword/signed dword) 128 + (boolean~) div16u::$3 ← (byte~) div16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div16u::$4 ← ! (boolean~) div16u::$3 + if((boolean~) div16u::$4) goto div16u::@2 + to:div16u::@4 +div16u::@2: scope:[div16u] from div16u::@1 div16u::@4 + (word~) div16u::$5 ← (word) div16u::dividend << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) div16u::dividend ← (word~) div16u::$5 + (word~) div16u::$6 ← (word) div16u::quotient << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) div16u::quotient ← (word~) div16u::$6 + (boolean~) div16u::$7 ← (word) div16u::rem >= (word) div16u::divisor + (boolean~) div16u::$8 ← ! (boolean~) div16u::$7 + if((boolean~) div16u::$8) goto div16u::@3 + to:div16u::@5 +div16u::@4: scope:[div16u] from div16u::@1 + (word) div16u::rem ← ++ (word) div16u::rem + to:div16u::@2 +div16u::@3: scope:[div16u] from div16u::@2 div16u::@5 + (byte) div16u::i ← ++ (byte) div16u::i + (boolean~) div16u::$10 ← (byte) div16u::i != (byte/signed byte/word/signed word/dword/signed dword) 16 + if((boolean~) div16u::$10) goto div16u::@1 + to:div16u::@6 +div16u::@5: scope:[div16u] from div16u::@2 + (word) div16u::quotient ← ++ (word) div16u::quotient + (word~) div16u::$9 ← (word) div16u::rem - (word) div16u::divisor + (word) div16u::rem ← (word~) div16u::$9 + to:div16u::@3 +div16u::@6: scope:[div16u] from div16u::@3 + (word) rem16u ← (word) div16u::rem + (word) div16u::return ← (word) div16u::quotient + to:div16u::@return +div16u::@return: scope:[div16u] from div16u::@6 div16u::@7 + (word) div16u::return ← (word) div16u::return + return (word) div16u::return + to:@return +div16u::@7: scope:[div16u] from + to:div16u::@return +@13: scope:[] from @12 call main to:@end -@end: scope:[] from @10 +@end: scope:[] from @13 Removing unused procedure print_sword Removing unused procedure print_sbyte -Removing unused procedure print_word +Eliminating unused variable - keeping the call (void~) print_word::$1 +Eliminating unused variable - keeping the call (void~) print_word::$3 Eliminating unused variable - keeping the call (void~) print_byte::$1 Eliminating unused variable - keeping the call (void~) print_byte::$3 -Eliminating unused variable (byte*) NULL and assignment [30] (byte*) NULL ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 +Eliminating unused variable (byte*) NULL and assignment [35] (byte*) NULL ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 Eliminating unused variable - keeping the call (void~) main::$0 +Eliminating unused variable - keeping the call (void~) main::$1 Eliminating unused variable - keeping the call (void~) main::$2 -Eliminating unused variable - keeping the call (void~) main::$3 -Eliminating unused variable - keeping the call (void~) main::$4 -Eliminating unused variable - keeping the call (void~) main::$5 -Eliminating unused variable - keeping the call (void~) main::$6 -Eliminating unused variable - keeping the call (void~) main::$7 -Eliminating unused variable - keeping the call (void~) main::$8 -Eliminating unused variable - keeping the call (void~) main::$9 +Eliminating unused variable - keeping the call (void~) test_16u::$1 +Eliminating unused variable - keeping the call (void~) test_16u::$2 +Eliminating unused variable - keeping the call (void~) test_16u::$3 +Eliminating unused variable - keeping the call (void~) test_16u::$4 +Eliminating unused variable - keeping the call (void~) test_16u::$5 +Eliminating unused variable - keeping the call (void~) test_16u::$6 +Eliminating unused variable - keeping the call (void~) test_16u::$7 +Eliminating unused variable - keeping the call (void~) test_16u::$8 +Eliminating unused variable - keeping the call (void~) test_8u::$1 +Eliminating unused variable - keeping the call (void~) test_8u::$2 +Eliminating unused variable - keeping the call (void~) test_8u::$3 +Eliminating unused variable - keeping the call (void~) test_8u::$4 +Eliminating unused variable - keeping the call (void~) test_8u::$5 +Eliminating unused variable - keeping the call (void~) test_8u::$6 +Eliminating unused variable - keeping the call (void~) test_8u::$7 +Eliminating unused variable - keeping the call (void~) test_8u::$8 Creating constant string variable for inline (const string) print_byte::$4 "0123456789abcdef" -Creating constant string variable for inline (const string) main::str " / @" -Creating constant string variable for inline (const string) main::str1 " = @" -Creating constant string variable for inline (const string) main::str2 " @" +Creating constant string variable for inline (const string) test_16u::str " / @" +Creating constant string variable for inline (const string) test_16u::str1 " = @" +Creating constant string variable for inline (const string) test_16u::str2 " @" +Creating constant string variable for inline (const string) test_8u::str " / @" +Creating constant string variable for inline (const string) test_8u::str1 " = @" +Creating constant string variable for inline (const string) test_8u::str2 " @" Removing empty block print_str::@4 Removing empty block print_str::@3 Removing empty block print_str::@5 @@ -623,18 +887,30 @@ Removing empty block @5 Removing empty block @6 Removing empty block @7 Removing empty block print_cls::@2 -Removing empty block @8 -Removing empty block main::@2 Removing empty block @9 +Removing empty block test_16u::@2 +Removing empty block @10 +Removing empty block test_8u::@2 +Removing empty block @11 Removing empty block div8u::@7 +Removing empty block @12 +Removing empty block div16u::@7 PROCEDURE MODIFY VARIABLE ANALYSIS print_str modifies char_cursor print_ln modifies line_cursor print_ln modifies char_cursor +print_word modifies char_cursor print_byte modifies char_cursor print_char modifies char_cursor main modifies char_cursor main modifies line_cursor +main modifies rem16u +test_16u modifies rem16u +test_16u modifies char_cursor +test_16u modifies line_cursor +test_8u modifies char_cursor +test_8u modifies line_cursor +div16u modifies rem16u Completing Phi functions... Completing Phi functions... @@ -647,92 +923,115 @@ Completing Phi functions... Completing Phi functions... Completing Phi functions... Completing Phi functions... -Completing Phi functions... CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from (byte*) line_cursor#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) char_cursor#0 ← (byte*) line_cursor#0 - to:@10 -print_str: scope:[print_str] from main::@5 main::@7 main::@9 - (byte*) char_cursor#44 ← phi( main::@5/(byte*) char_cursor#10 main::@7/(byte*) char_cursor#12 main::@9/(byte*) char_cursor#14 ) - (byte*) print_str::str#6 ← phi( main::@5/(byte*) print_str::str#1 main::@7/(byte*) print_str::str#2 main::@9/(byte*) print_str::str#3 ) + to:@8 +print_str: scope:[print_str] from test_16u::@4 test_16u::@6 test_16u::@8 test_8u::@4 test_8u::@6 test_8u::@8 + (byte*) char_cursor#77 ← phi( test_16u::@4/(byte*) char_cursor#16 test_16u::@6/(byte*) char_cursor#18 test_16u::@8/(byte*) char_cursor#20 test_8u::@4/(byte*) char_cursor#25 test_8u::@6/(byte*) char_cursor#27 test_8u::@8/(byte*) char_cursor#29 ) + (byte*) print_str::str#9 ← phi( test_16u::@4/(byte*) print_str::str#1 test_16u::@6/(byte*) print_str::str#2 test_16u::@8/(byte*) print_str::str#3 test_8u::@4/(byte*) print_str::str#4 test_8u::@6/(byte*) print_str::str#5 test_8u::@8/(byte*) print_str::str#6 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - (byte*) char_cursor#39 ← phi( print_str/(byte*) char_cursor#44 print_str::@2/(byte*) char_cursor#1 ) - (byte*) print_str::str#4 ← phi( print_str/(byte*) print_str::str#6 print_str::@2/(byte*) print_str::str#0 ) - (boolean~) print_str::$0 ← *((byte*) print_str::str#4) != (byte) '@' + (byte*) char_cursor#69 ← phi( print_str/(byte*) char_cursor#77 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#7 ← phi( print_str/(byte*) print_str::str#9 print_str::@2/(byte*) print_str::str#0 ) + (boolean~) print_str::$0 ← *((byte*) print_str::str#7) != (byte) '@' if((boolean~) print_str::$0) goto print_str::@2 to:print_str::@return print_str::@2: scope:[print_str] from print_str::@1 - (byte*) char_cursor#20 ← phi( print_str::@1/(byte*) char_cursor#39 ) - (byte*) print_str::str#5 ← phi( print_str::@1/(byte*) print_str::str#4 ) - *((byte*) char_cursor#20) ← *((byte*) print_str::str#5) - (byte*) char_cursor#1 ← ++ (byte*) char_cursor#20 - (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5 + (byte*) char_cursor#35 ← phi( print_str::@1/(byte*) char_cursor#69 ) + (byte*) print_str::str#8 ← phi( print_str::@1/(byte*) print_str::str#7 ) + *((byte*) char_cursor#35) ← *((byte*) print_str::str#8) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#35 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#8 to:print_str::@1 print_str::@return: scope:[print_str] from print_str::@1 - (byte*) char_cursor#21 ← phi( print_str::@1/(byte*) char_cursor#39 ) - (byte*) char_cursor#2 ← (byte*) char_cursor#21 + (byte*) char_cursor#36 ← phi( print_str::@1/(byte*) char_cursor#69 ) + (byte*) char_cursor#2 ← (byte*) char_cursor#36 return to:@return -print_ln: scope:[print_ln] from main::@11 - (byte*) char_cursor#40 ← phi( main::@11/(byte*) char_cursor#16 ) - (byte*) line_cursor#12 ← phi( main::@11/(byte*) line_cursor#13 ) +print_ln: scope:[print_ln] from test_16u::@10 test_8u::@10 + (byte*) char_cursor#70 ← phi( test_16u::@10/(byte*) char_cursor#22 test_8u::@10/(byte*) char_cursor#31 ) + (byte*) line_cursor#22 ← phi( test_16u::@10/(byte*) line_cursor#24 test_8u::@10/(byte*) line_cursor#25 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - (byte*) char_cursor#22 ← phi( print_ln/(byte*) char_cursor#40 print_ln::@1/(byte*) char_cursor#22 ) - (byte*) line_cursor#6 ← phi( print_ln/(byte*) line_cursor#12 print_ln::@1/(byte*) line_cursor#1 ) - (byte*~) print_ln::$0 ← (byte*) line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte*) char_cursor#37 ← phi( print_ln/(byte*) char_cursor#70 print_ln::@1/(byte*) char_cursor#37 ) + (byte*) line_cursor#11 ← phi( print_ln/(byte*) line_cursor#22 print_ln::@1/(byte*) line_cursor#1 ) + (byte*~) print_ln::$0 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 (byte*) line_cursor#1 ← (byte*~) print_ln::$0 - (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#22 + (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#37 if((boolean~) print_ln::$1) goto print_ln::@1 to:print_ln::@2 print_ln::@2: scope:[print_ln] from print_ln::@1 - (byte*) line_cursor#7 ← phi( print_ln::@1/(byte*) line_cursor#1 ) - (byte*) char_cursor#3 ← (byte*) line_cursor#7 + (byte*) line_cursor#12 ← phi( print_ln::@1/(byte*) line_cursor#1 ) + (byte*) char_cursor#3 ← (byte*) line_cursor#12 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@2 - (byte*) char_cursor#23 ← phi( print_ln::@2/(byte*) char_cursor#3 ) - (byte*) line_cursor#8 ← phi( print_ln::@2/(byte*) line_cursor#7 ) - (byte*) line_cursor#2 ← (byte*) line_cursor#8 - (byte*) char_cursor#4 ← (byte*) char_cursor#23 + (byte*) char_cursor#38 ← phi( print_ln::@2/(byte*) char_cursor#3 ) + (byte*) line_cursor#13 ← phi( print_ln::@2/(byte*) line_cursor#12 ) + (byte*) line_cursor#2 ← (byte*) line_cursor#13 + (byte*) char_cursor#4 ← (byte*) char_cursor#38 return to:@return -print_byte: scope:[print_byte] from main::@10 main::@4 main::@6 main::@8 - (byte*) char_cursor#41 ← phi( main::@10/(byte*) char_cursor#15 main::@4/(byte*) char_cursor#42 main::@6/(byte*) char_cursor#11 main::@8/(byte*) char_cursor#13 ) - (byte) print_byte::b#4 ← phi( main::@10/(byte) print_byte::b#3 main::@4/(byte) print_byte::b#0 main::@6/(byte) print_byte::b#1 main::@8/(byte) print_byte::b#2 ) +print_word: scope:[print_word] from test_16u::@3 test_16u::@5 test_16u::@7 test_16u::@9 + (byte*) char_cursor#71 ← phi( test_16u::@3/(byte*) char_cursor#74 test_16u::@5/(byte*) char_cursor#17 test_16u::@7/(byte*) char_cursor#19 test_16u::@9/(byte*) char_cursor#21 ) + (word) print_word::w#4 ← phi( test_16u::@3/(word) print_word::w#0 test_16u::@5/(word) print_word::w#1 test_16u::@7/(word) print_word::w#2 test_16u::@9/(word) print_word::w#3 ) + (byte~) print_word::$0 ← > (word) print_word::w#4 + (byte) print_byte::b#0 ← (byte~) print_word::$0 + call print_byte param-assignment + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + (word) print_word::w#5 ← phi( print_word/(word) print_word::w#4 ) + (byte*) char_cursor#39 ← phi( print_word/(byte*) char_cursor#10 ) + (byte*) char_cursor#5 ← (byte*) char_cursor#39 + (byte~) print_word::$2 ← < (word) print_word::w#5 + (byte) print_byte::b#1 ← (byte~) print_word::$2 + call print_byte param-assignment + to:print_word::@2 +print_word::@2: scope:[print_word] from print_word::@1 + (byte*) char_cursor#40 ← phi( print_word::@1/(byte*) char_cursor#10 ) + (byte*) char_cursor#6 ← (byte*) char_cursor#40 + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@2 + (byte*) char_cursor#41 ← phi( print_word::@2/(byte*) char_cursor#6 ) + (byte*) char_cursor#7 ← (byte*) char_cursor#41 + return + to:@return +print_byte: scope:[print_byte] from print_word print_word::@1 test_8u::@3 test_8u::@5 test_8u::@7 test_8u::@9 + (byte*) char_cursor#72 ← phi( print_word/(byte*) char_cursor#71 print_word::@1/(byte*) char_cursor#5 test_8u::@3/(byte*) char_cursor#75 test_8u::@5/(byte*) char_cursor#26 test_8u::@7/(byte*) char_cursor#28 test_8u::@9/(byte*) char_cursor#30 ) + (byte) print_byte::b#6 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 test_8u::@3/(byte) print_byte::b#2 test_8u::@5/(byte) print_byte::b#3 test_8u::@7/(byte) print_byte::b#4 test_8u::@9/(byte) print_byte::b#5 ) (byte[]) print_byte::hextab#0 ← (const string) print_byte::$4 - (byte~) print_byte::$0 ← (byte) print_byte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) print_char::ch#0 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) call print_char param-assignment to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - (byte) print_byte::b#5 ← phi( print_byte/(byte) print_byte::b#4 ) - (byte*) char_cursor#24 ← phi( print_byte/(byte*) char_cursor#9 ) - (byte*) char_cursor#5 ← (byte*) char_cursor#24 - (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte) print_byte::b#7 ← phi( print_byte/(byte) print_byte::b#6 ) + (byte*) char_cursor#42 ← phi( print_byte/(byte*) char_cursor#12 ) + (byte*) char_cursor#8 ← (byte*) char_cursor#42 + (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 (byte) print_char::ch#1 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) call print_char param-assignment to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) char_cursor#25 ← phi( print_byte::@1/(byte*) char_cursor#9 ) - (byte*) char_cursor#6 ← (byte*) char_cursor#25 + (byte*) char_cursor#43 ← phi( print_byte::@1/(byte*) char_cursor#12 ) + (byte*) char_cursor#9 ← (byte*) char_cursor#43 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) char_cursor#26 ← phi( print_byte::@2/(byte*) char_cursor#6 ) - (byte*) char_cursor#7 ← (byte*) char_cursor#26 + (byte*) char_cursor#44 ← phi( print_byte::@2/(byte*) char_cursor#9 ) + (byte*) char_cursor#10 ← (byte*) char_cursor#44 return to:@return print_char: scope:[print_char] from print_byte print_byte::@1 - (byte*) char_cursor#27 ← phi( print_byte/(byte*) char_cursor#41 print_byte::@1/(byte*) char_cursor#5 ) + (byte*) char_cursor#45 ← phi( print_byte/(byte*) char_cursor#72 print_byte::@1/(byte*) char_cursor#8 ) (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) - *((byte*) char_cursor#27) ← (byte) print_char::ch#2 - (byte*) char_cursor#8 ← ++ (byte*) char_cursor#27 + *((byte*) char_cursor#45) ← (byte) print_char::ch#2 + (byte*) char_cursor#11 ← ++ (byte*) char_cursor#45 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) char_cursor#28 ← phi( print_char/(byte*) char_cursor#8 ) - (byte*) char_cursor#9 ← (byte*) char_cursor#28 + (byte*) char_cursor#46 ← phi( print_char/(byte*) char_cursor#11 ) + (byte*) char_cursor#12 ← (byte*) char_cursor#46 return to:@return print_cls: scope:[print_cls] from main @@ -749,136 +1048,295 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 print_cls::@return: scope:[print_cls] from print_cls::@1 return to:@return -main: scope:[main] from @10 - (byte*) line_cursor#24 ← phi( @10/(byte*) line_cursor#14 ) - (byte*) char_cursor#47 ← phi( @10/(byte*) char_cursor#43 ) - (byte*) main::rem#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 - (byte[]) main::dividends#0 ← { (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[]) main::divisors#0 ← { (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 } +@8: scope:[] from @begin + (byte*) line_cursor#30 ← phi( @begin/(byte*) line_cursor#0 ) + (byte*) char_cursor#81 ← phi( @begin/(byte*) char_cursor#0 ) + (word) rem16u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@13 +main: scope:[main] from @13 + (word) rem16u#24 ← phi( @13/(word) rem16u#19 ) + (byte*) line_cursor#27 ← phi( @13/(byte*) line_cursor#26 ) + (byte*) char_cursor#78 ← phi( @13/(byte*) char_cursor#76 ) call print_cls param-assignment - to:main::@3 -main::@3: scope:[main] from main - (byte*) line_cursor#23 ← phi( main/(byte*) line_cursor#24 ) - (byte*) char_cursor#46 ← phi( main/(byte*) char_cursor#47 ) - (byte*) main::rem#4 ← phi( main/(byte*) main::rem#0 ) - (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:main::@1 -main::@1: scope:[main] from main::@12 main::@3 - (byte*) line_cursor#22 ← phi( main::@12/(byte*) line_cursor#3 main::@3/(byte*) line_cursor#23 ) - (byte*) char_cursor#45 ← phi( main::@12/(byte*) char_cursor#17 main::@3/(byte*) char_cursor#46 ) - (byte*) main::rem#1 ← phi( main::@12/(byte*) main::rem#3 main::@3/(byte*) main::rem#4 ) - (byte) main::i#2 ← phi( main::@12/(byte) main::i#1 main::@3/(byte) main::i#0 ) - (byte) main::dividend#0 ← *((byte[]) main::dividends#0 + (byte) main::i#2) - (byte) main::divisor#0 ← *((byte[]) main::divisors#0 + (byte) main::i#2) - (byte) div8u::dividend#0 ← (byte) main::dividend#0 - (byte) div8u::divisor#0 ← (byte) main::divisor#0 - (byte*) div8u::remainder#0 ← (byte*) main::rem#1 - call div8u param-assignment - (byte) div8u::return#0 ← (byte) div8u::return#2 - to:main::@4 -main::@4: scope:[main] from main::@1 - (byte) main::i#11 ← phi( main::@1/(byte) main::i#2 ) - (byte*) line_cursor#21 ← phi( main::@1/(byte*) line_cursor#22 ) - (byte*) main::rem#11 ← phi( main::@1/(byte*) main::rem#1 ) - (byte) main::divisor#3 ← phi( main::@1/(byte) main::divisor#0 ) - (byte*) char_cursor#42 ← phi( main::@1/(byte*) char_cursor#45 ) - (byte) main::dividend#1 ← phi( main::@1/(byte) main::dividend#0 ) - (byte) div8u::return#3 ← phi( main::@1/(byte) div8u::return#0 ) - (byte~) main::$1 ← (byte) div8u::return#3 - (byte) main::res#0 ← (byte~) main::$1 - (byte) print_byte::b#0 ← (byte) main::dividend#1 - call print_byte param-assignment - to:main::@5 -main::@5: scope:[main] from main::@4 - (byte) main::i#10 ← phi( main::@4/(byte) main::i#11 ) - (byte*) line_cursor#20 ← phi( main::@4/(byte*) line_cursor#21 ) - (byte*) main::rem#10 ← phi( main::@4/(byte*) main::rem#11 ) - (byte) main::res#4 ← phi( main::@4/(byte) main::res#0 ) - (byte) main::divisor#2 ← phi( main::@4/(byte) main::divisor#3 ) - (byte*) char_cursor#29 ← phi( main::@4/(byte*) char_cursor#7 ) - (byte*) char_cursor#10 ← (byte*) char_cursor#29 - (byte*) print_str::str#1 ← (const string) main::str - call print_str param-assignment - to:main::@6 -main::@6: scope:[main] from main::@5 - (byte) main::i#9 ← phi( main::@5/(byte) main::i#10 ) - (byte*) line_cursor#19 ← phi( main::@5/(byte*) line_cursor#20 ) - (byte*) main::rem#9 ← phi( main::@5/(byte*) main::rem#10 ) - (byte) main::res#3 ← phi( main::@5/(byte) main::res#4 ) - (byte) main::divisor#1 ← phi( main::@5/(byte) main::divisor#2 ) - (byte*) char_cursor#30 ← phi( main::@5/(byte*) char_cursor#2 ) - (byte*) char_cursor#11 ← (byte*) char_cursor#30 - (byte) print_byte::b#1 ← (byte) main::divisor#1 - call print_byte param-assignment - to:main::@7 -main::@7: scope:[main] from main::@6 - (byte) main::i#8 ← phi( main::@6/(byte) main::i#9 ) - (byte*) line_cursor#18 ← phi( main::@6/(byte*) line_cursor#19 ) - (byte*) main::rem#8 ← phi( main::@6/(byte*) main::rem#9 ) - (byte) main::res#2 ← phi( main::@6/(byte) main::res#3 ) - (byte*) char_cursor#31 ← phi( main::@6/(byte*) char_cursor#7 ) - (byte*) char_cursor#12 ← (byte*) char_cursor#31 - (byte*) print_str::str#2 ← (const string) main::str1 - call print_str param-assignment - to:main::@8 -main::@8: scope:[main] from main::@7 - (byte) main::i#7 ← phi( main::@7/(byte) main::i#8 ) - (byte*) line_cursor#17 ← phi( main::@7/(byte*) line_cursor#18 ) - (byte*) main::rem#6 ← phi( main::@7/(byte*) main::rem#8 ) - (byte) main::res#1 ← phi( main::@7/(byte) main::res#2 ) - (byte*) char_cursor#32 ← phi( main::@7/(byte*) char_cursor#2 ) - (byte*) char_cursor#13 ← (byte*) char_cursor#32 - (byte) print_byte::b#2 ← (byte) main::res#1 - call print_byte param-assignment - to:main::@9 -main::@9: scope:[main] from main::@8 - (byte) main::i#6 ← phi( main::@8/(byte) main::i#7 ) - (byte*) line_cursor#16 ← phi( main::@8/(byte*) line_cursor#17 ) - (byte*) main::rem#5 ← phi( main::@8/(byte*) main::rem#6 ) - (byte*) char_cursor#33 ← phi( main::@8/(byte*) char_cursor#7 ) - (byte*) char_cursor#14 ← (byte*) char_cursor#33 - (byte*) print_str::str#3 ← (const string) main::str2 - call print_str param-assignment - to:main::@10 -main::@10: scope:[main] from main::@9 - (byte) main::i#5 ← phi( main::@9/(byte) main::i#6 ) - (byte*) line_cursor#15 ← phi( main::@9/(byte*) line_cursor#16 ) - (byte*) main::rem#2 ← phi( main::@9/(byte*) main::rem#5 ) - (byte*) char_cursor#34 ← phi( main::@9/(byte*) char_cursor#2 ) - (byte*) char_cursor#15 ← (byte*) char_cursor#34 - (byte) print_byte::b#3 ← *((byte*) main::rem#2) - call print_byte param-assignment - to:main::@11 -main::@11: scope:[main] from main::@10 - (byte*) main::rem#7 ← phi( main::@10/(byte*) main::rem#2 ) - (byte) main::i#4 ← phi( main::@10/(byte) main::i#5 ) - (byte*) line_cursor#13 ← phi( main::@10/(byte*) line_cursor#15 ) - (byte*) char_cursor#35 ← phi( main::@10/(byte*) char_cursor#7 ) - (byte*) char_cursor#16 ← (byte*) char_cursor#35 - call print_ln param-assignment - to:main::@12 -main::@12: scope:[main] from main::@11 - (byte*) main::rem#3 ← phi( main::@11/(byte*) main::rem#7 ) - (byte) main::i#3 ← phi( main::@11/(byte) main::i#4 ) - (byte*) char_cursor#36 ← phi( main::@11/(byte*) char_cursor#4 ) - (byte*) line_cursor#9 ← phi( main::@11/(byte*) line_cursor#2 ) - (byte*) line_cursor#3 ← (byte*) line_cursor#9 - (byte*) char_cursor#17 ← (byte*) char_cursor#36 - (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$10 ← (byte) main::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 6 - if((boolean~) main::$10) goto main::@1 +main::@1: scope:[main] from main + (word) rem16u#20 ← phi( main/(word) rem16u#24 ) + (byte*) line_cursor#23 ← phi( main/(byte*) line_cursor#27 ) + (byte*) char_cursor#73 ← phi( main/(byte*) char_cursor#78 ) + call test_8u param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + (word) rem16u#15 ← phi( main::@1/(word) rem16u#20 ) + (byte*) line_cursor#14 ← phi( main::@1/(byte*) line_cursor#9 ) + (byte*) char_cursor#47 ← phi( main::@1/(byte*) char_cursor#33 ) + (byte*) char_cursor#13 ← (byte*) char_cursor#47 + (byte*) line_cursor#3 ← (byte*) line_cursor#14 + call test_16u param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + (byte*) line_cursor#15 ← phi( main::@2/(byte*) line_cursor#7 ) + (byte*) char_cursor#48 ← phi( main::@2/(byte*) char_cursor#24 ) + (word) rem16u#8 ← phi( main::@2/(word) rem16u#4 ) + (word) rem16u#1 ← (word) rem16u#8 + (byte*) char_cursor#14 ← (byte*) char_cursor#48 + (byte*) line_cursor#4 ← (byte*) line_cursor#15 to:main::@return -main::@return: scope:[main] from main::@12 - (byte*) line_cursor#10 ← phi( main::@12/(byte*) line_cursor#3 ) - (byte*) char_cursor#37 ← phi( main::@12/(byte*) char_cursor#17 ) - (byte*) char_cursor#18 ← (byte*) char_cursor#37 - (byte*) line_cursor#4 ← (byte*) line_cursor#10 +main::@return: scope:[main] from main::@3 + (word) rem16u#9 ← phi( main::@3/(word) rem16u#1 ) + (byte*) line_cursor#16 ← phi( main::@3/(byte*) line_cursor#4 ) + (byte*) char_cursor#49 ← phi( main::@3/(byte*) char_cursor#14 ) + (byte*) char_cursor#15 ← (byte*) char_cursor#49 + (byte*) line_cursor#5 ← (byte*) line_cursor#16 + (word) rem16u#2 ← (word) rem16u#9 return to:@return -div8u: scope:[div8u] from main::@1 - (byte*) div8u::remainder#7 ← phi( main::@1/(byte*) div8u::remainder#0 ) - (byte) div8u::divisor#5 ← phi( main::@1/(byte) div8u::divisor#0 ) - (byte) div8u::dividend#4 ← phi( main::@1/(byte) div8u::dividend#0 ) +test_16u: scope:[test_16u] from main::@2 + (byte*) line_cursor#45 ← phi( main::@2/(byte*) line_cursor#3 ) + (byte*) char_cursor#82 ← phi( main::@2/(byte*) char_cursor#13 ) + (word) rem16u#21 ← phi( main::@2/(word) rem16u#15 ) + (word[]) test_16u::dividends#0 ← { (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::divisors#0 ← { (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#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:test_16u::@1 +test_16u::@1: scope:[test_16u] from test_16u test_16u::@11 + (byte*) line_cursor#43 ← phi( test_16u/(byte*) line_cursor#45 test_16u::@11/(byte*) line_cursor#6 ) + (byte*) char_cursor#79 ← phi( test_16u/(byte*) char_cursor#82 test_16u::@11/(byte*) char_cursor#23 ) + (word) rem16u#16 ← phi( test_16u/(word) rem16u#21 test_16u::@11/(word) rem16u#18 ) + (byte) test_16u::i#2 ← phi( test_16u/(byte) test_16u::i#0 test_16u::@11/(byte) test_16u::i#1 ) + (word) test_16u::dividend#0 ← *((word[]) test_16u::dividends#0 + (byte) test_16u::i#2) + (word) test_16u::divisor#0 ← *((word[]) test_16u::divisors#0 + (byte) test_16u::i#2) + (word) div16u::dividend#0 ← (word) test_16u::dividend#0 + (word) div16u::divisor#0 ← (word) test_16u::divisor#0 + call div16u param-assignment + (word) div16u::return#0 ← (word) div16u::return#2 + to:test_16u::@3 +test_16u::@3: scope:[test_16u] from test_16u::@1 + (byte) test_16u::i#11 ← phi( test_16u::@1/(byte) test_16u::i#2 ) + (byte*) line_cursor#41 ← phi( test_16u::@1/(byte*) line_cursor#43 ) + (word) test_16u::divisor#3 ← phi( test_16u::@1/(word) test_16u::divisor#0 ) + (byte*) char_cursor#74 ← phi( test_16u::@1/(byte*) char_cursor#79 ) + (word) test_16u::dividend#1 ← phi( test_16u::@1/(word) test_16u::dividend#0 ) + (word) rem16u#10 ← phi( test_16u::@1/(word) rem16u#6 ) + (word) div16u::return#3 ← phi( test_16u::@1/(word) div16u::return#0 ) + (word~) test_16u::$0 ← (word) div16u::return#3 + (word) rem16u#3 ← (word) rem16u#10 + (word) test_16u::res#0 ← (word~) test_16u::$0 + (word) print_word::w#0 ← (word) test_16u::dividend#1 + call print_word param-assignment + to:test_16u::@4 +test_16u::@4: scope:[test_16u] from test_16u::@3 + (byte) test_16u::i#10 ← phi( test_16u::@3/(byte) test_16u::i#11 ) + (byte*) line_cursor#39 ← phi( test_16u::@3/(byte*) line_cursor#41 ) + (word) rem16u#27 ← phi( test_16u::@3/(word) rem16u#3 ) + (word) test_16u::res#4 ← phi( test_16u::@3/(word) test_16u::res#0 ) + (word) test_16u::divisor#2 ← phi( test_16u::@3/(word) test_16u::divisor#3 ) + (byte*) char_cursor#50 ← phi( test_16u::@3/(byte*) char_cursor#7 ) + (byte*) char_cursor#16 ← (byte*) char_cursor#50 + (byte*) print_str::str#1 ← (const string) test_16u::str + call print_str param-assignment + to:test_16u::@5 +test_16u::@5: scope:[test_16u] from test_16u::@4 + (byte) test_16u::i#9 ← phi( test_16u::@4/(byte) test_16u::i#10 ) + (byte*) line_cursor#37 ← phi( test_16u::@4/(byte*) line_cursor#39 ) + (word) rem16u#26 ← phi( test_16u::@4/(word) rem16u#27 ) + (word) test_16u::res#3 ← phi( test_16u::@4/(word) test_16u::res#4 ) + (word) test_16u::divisor#1 ← phi( test_16u::@4/(word) test_16u::divisor#2 ) + (byte*) char_cursor#51 ← phi( test_16u::@4/(byte*) char_cursor#2 ) + (byte*) char_cursor#17 ← (byte*) char_cursor#51 + (word) print_word::w#1 ← (word) test_16u::divisor#1 + call print_word param-assignment + to:test_16u::@6 +test_16u::@6: scope:[test_16u] from test_16u::@5 + (byte) test_16u::i#8 ← phi( test_16u::@5/(byte) test_16u::i#9 ) + (byte*) line_cursor#35 ← phi( test_16u::@5/(byte*) line_cursor#37 ) + (word) rem16u#25 ← phi( test_16u::@5/(word) rem16u#26 ) + (word) test_16u::res#2 ← phi( test_16u::@5/(word) test_16u::res#3 ) + (byte*) char_cursor#52 ← phi( test_16u::@5/(byte*) char_cursor#7 ) + (byte*) char_cursor#18 ← (byte*) char_cursor#52 + (byte*) print_str::str#2 ← (const string) test_16u::str1 + call print_str param-assignment + to:test_16u::@7 +test_16u::@7: scope:[test_16u] from test_16u::@6 + (byte) test_16u::i#7 ← phi( test_16u::@6/(byte) test_16u::i#8 ) + (byte*) line_cursor#33 ← phi( test_16u::@6/(byte*) line_cursor#35 ) + (word) rem16u#22 ← phi( test_16u::@6/(word) rem16u#25 ) + (word) test_16u::res#1 ← phi( test_16u::@6/(word) test_16u::res#2 ) + (byte*) char_cursor#53 ← phi( test_16u::@6/(byte*) char_cursor#2 ) + (byte*) char_cursor#19 ← (byte*) char_cursor#53 + (word) print_word::w#2 ← (word) test_16u::res#1 + call print_word param-assignment + to:test_16u::@8 +test_16u::@8: scope:[test_16u] from test_16u::@7 + (byte) test_16u::i#6 ← phi( test_16u::@7/(byte) test_16u::i#7 ) + (byte*) line_cursor#31 ← phi( test_16u::@7/(byte*) line_cursor#33 ) + (word) rem16u#17 ← phi( test_16u::@7/(word) rem16u#22 ) + (byte*) char_cursor#54 ← phi( test_16u::@7/(byte*) char_cursor#7 ) + (byte*) char_cursor#20 ← (byte*) char_cursor#54 + (byte*) print_str::str#3 ← (const string) test_16u::str2 + call print_str param-assignment + to:test_16u::@9 +test_16u::@9: scope:[test_16u] from test_16u::@8 + (byte) test_16u::i#5 ← phi( test_16u::@8/(byte) test_16u::i#6 ) + (byte*) line_cursor#28 ← phi( test_16u::@8/(byte*) line_cursor#31 ) + (word) rem16u#11 ← phi( test_16u::@8/(word) rem16u#17 ) + (byte*) char_cursor#55 ← phi( test_16u::@8/(byte*) char_cursor#2 ) + (byte*) char_cursor#21 ← (byte*) char_cursor#55 + (word) print_word::w#3 ← (word) rem16u#11 + call print_word param-assignment + to:test_16u::@10 +test_16u::@10: scope:[test_16u] from test_16u::@9 + (word) rem16u#23 ← phi( test_16u::@9/(word) rem16u#11 ) + (byte) test_16u::i#4 ← phi( test_16u::@9/(byte) test_16u::i#5 ) + (byte*) line_cursor#24 ← phi( test_16u::@9/(byte*) line_cursor#28 ) + (byte*) char_cursor#56 ← phi( test_16u::@9/(byte*) char_cursor#7 ) + (byte*) char_cursor#22 ← (byte*) char_cursor#56 + call print_ln param-assignment + to:test_16u::@11 +test_16u::@11: scope:[test_16u] from test_16u::@10 + (word) rem16u#18 ← phi( test_16u::@10/(word) rem16u#23 ) + (byte) test_16u::i#3 ← phi( test_16u::@10/(byte) test_16u::i#4 ) + (byte*) char_cursor#57 ← phi( test_16u::@10/(byte*) char_cursor#4 ) + (byte*) line_cursor#17 ← phi( test_16u::@10/(byte*) line_cursor#2 ) + (byte*) line_cursor#6 ← (byte*) line_cursor#17 + (byte*) char_cursor#23 ← (byte*) char_cursor#57 + (byte/word~) test_16u::$9 ← (byte) test_16u::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) test_16u::i#1 ← (byte/word~) test_16u::$9 + (boolean~) test_16u::$10 ← (byte) test_16u::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 12 + if((boolean~) test_16u::$10) goto test_16u::@1 + to:test_16u::@return +test_16u::@return: scope:[test_16u] from test_16u::@11 + (byte*) line_cursor#18 ← phi( test_16u::@11/(byte*) line_cursor#6 ) + (byte*) char_cursor#58 ← phi( test_16u::@11/(byte*) char_cursor#23 ) + (word) rem16u#12 ← phi( test_16u::@11/(word) rem16u#18 ) + (word) rem16u#4 ← (word) rem16u#12 + (byte*) char_cursor#24 ← (byte*) char_cursor#58 + (byte*) line_cursor#7 ← (byte*) line_cursor#18 + return + to:@return +test_8u: scope:[test_8u] from main::@1 + (byte*) line_cursor#46 ← phi( main::@1/(byte*) line_cursor#23 ) + (byte*) char_cursor#83 ← phi( main::@1/(byte*) char_cursor#73 ) + (byte*) test_8u::rem#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 + (byte[]) test_8u::dividends#0 ← { (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::divisors#0 ← { (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#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:test_8u::@1 +test_8u::@1: scope:[test_8u] from test_8u test_8u::@11 + (byte*) line_cursor#44 ← phi( test_8u/(byte*) line_cursor#46 test_8u::@11/(byte*) line_cursor#8 ) + (byte*) char_cursor#80 ← phi( test_8u/(byte*) char_cursor#83 test_8u::@11/(byte*) char_cursor#32 ) + (byte*) test_8u::rem#1 ← phi( test_8u/(byte*) test_8u::rem#0 test_8u::@11/(byte*) test_8u::rem#3 ) + (byte) test_8u::i#2 ← phi( test_8u/(byte) test_8u::i#0 test_8u::@11/(byte) test_8u::i#1 ) + (byte) test_8u::dividend#0 ← *((byte[]) test_8u::dividends#0 + (byte) test_8u::i#2) + (byte) test_8u::divisor#0 ← *((byte[]) test_8u::divisors#0 + (byte) test_8u::i#2) + (byte) div8u::dividend#0 ← (byte) test_8u::dividend#0 + (byte) div8u::divisor#0 ← (byte) test_8u::divisor#0 + (byte*) div8u::remainder#0 ← (byte*) test_8u::rem#1 + call div8u param-assignment + (byte) div8u::return#0 ← (byte) div8u::return#2 + to:test_8u::@3 +test_8u::@3: scope:[test_8u] from test_8u::@1 + (byte) test_8u::i#11 ← phi( test_8u::@1/(byte) test_8u::i#2 ) + (byte*) line_cursor#42 ← phi( test_8u::@1/(byte*) line_cursor#44 ) + (byte*) test_8u::rem#10 ← phi( test_8u::@1/(byte*) test_8u::rem#1 ) + (byte) test_8u::divisor#3 ← phi( test_8u::@1/(byte) test_8u::divisor#0 ) + (byte*) char_cursor#75 ← phi( test_8u::@1/(byte*) char_cursor#80 ) + (byte) test_8u::dividend#1 ← phi( test_8u::@1/(byte) test_8u::dividend#0 ) + (byte) div8u::return#3 ← phi( test_8u::@1/(byte) div8u::return#0 ) + (byte~) test_8u::$0 ← (byte) div8u::return#3 + (byte) test_8u::res#0 ← (byte~) test_8u::$0 + (byte) print_byte::b#2 ← (byte) test_8u::dividend#1 + call print_byte param-assignment + to:test_8u::@4 +test_8u::@4: scope:[test_8u] from test_8u::@3 + (byte) test_8u::i#10 ← phi( test_8u::@3/(byte) test_8u::i#11 ) + (byte*) line_cursor#40 ← phi( test_8u::@3/(byte*) line_cursor#42 ) + (byte*) test_8u::rem#9 ← phi( test_8u::@3/(byte*) test_8u::rem#10 ) + (byte) test_8u::res#4 ← phi( test_8u::@3/(byte) test_8u::res#0 ) + (byte) test_8u::divisor#2 ← phi( test_8u::@3/(byte) test_8u::divisor#3 ) + (byte*) char_cursor#59 ← phi( test_8u::@3/(byte*) char_cursor#10 ) + (byte*) char_cursor#25 ← (byte*) char_cursor#59 + (byte*) print_str::str#4 ← (const string) test_8u::str + call print_str param-assignment + to:test_8u::@5 +test_8u::@5: scope:[test_8u] from test_8u::@4 + (byte) test_8u::i#9 ← phi( test_8u::@4/(byte) test_8u::i#10 ) + (byte*) line_cursor#38 ← phi( test_8u::@4/(byte*) line_cursor#40 ) + (byte*) test_8u::rem#8 ← phi( test_8u::@4/(byte*) test_8u::rem#9 ) + (byte) test_8u::res#3 ← phi( test_8u::@4/(byte) test_8u::res#4 ) + (byte) test_8u::divisor#1 ← phi( test_8u::@4/(byte) test_8u::divisor#2 ) + (byte*) char_cursor#60 ← phi( test_8u::@4/(byte*) char_cursor#2 ) + (byte*) char_cursor#26 ← (byte*) char_cursor#60 + (byte) print_byte::b#3 ← (byte) test_8u::divisor#1 + call print_byte param-assignment + to:test_8u::@6 +test_8u::@6: scope:[test_8u] from test_8u::@5 + (byte) test_8u::i#8 ← phi( test_8u::@5/(byte) test_8u::i#9 ) + (byte*) line_cursor#36 ← phi( test_8u::@5/(byte*) line_cursor#38 ) + (byte*) test_8u::rem#7 ← phi( test_8u::@5/(byte*) test_8u::rem#8 ) + (byte) test_8u::res#2 ← phi( test_8u::@5/(byte) test_8u::res#3 ) + (byte*) char_cursor#61 ← phi( test_8u::@5/(byte*) char_cursor#10 ) + (byte*) char_cursor#27 ← (byte*) char_cursor#61 + (byte*) print_str::str#5 ← (const string) test_8u::str1 + call print_str param-assignment + to:test_8u::@7 +test_8u::@7: scope:[test_8u] from test_8u::@6 + (byte) test_8u::i#7 ← phi( test_8u::@6/(byte) test_8u::i#8 ) + (byte*) line_cursor#34 ← phi( test_8u::@6/(byte*) line_cursor#36 ) + (byte*) test_8u::rem#5 ← phi( test_8u::@6/(byte*) test_8u::rem#7 ) + (byte) test_8u::res#1 ← phi( test_8u::@6/(byte) test_8u::res#2 ) + (byte*) char_cursor#62 ← phi( test_8u::@6/(byte*) char_cursor#2 ) + (byte*) char_cursor#28 ← (byte*) char_cursor#62 + (byte) print_byte::b#4 ← (byte) test_8u::res#1 + call print_byte param-assignment + to:test_8u::@8 +test_8u::@8: scope:[test_8u] from test_8u::@7 + (byte) test_8u::i#6 ← phi( test_8u::@7/(byte) test_8u::i#7 ) + (byte*) line_cursor#32 ← phi( test_8u::@7/(byte*) line_cursor#34 ) + (byte*) test_8u::rem#4 ← phi( test_8u::@7/(byte*) test_8u::rem#5 ) + (byte*) char_cursor#63 ← phi( test_8u::@7/(byte*) char_cursor#10 ) + (byte*) char_cursor#29 ← (byte*) char_cursor#63 + (byte*) print_str::str#6 ← (const string) test_8u::str2 + call print_str param-assignment + to:test_8u::@9 +test_8u::@9: scope:[test_8u] from test_8u::@8 + (byte) test_8u::i#5 ← phi( test_8u::@8/(byte) test_8u::i#6 ) + (byte*) line_cursor#29 ← phi( test_8u::@8/(byte*) line_cursor#32 ) + (byte*) test_8u::rem#2 ← phi( test_8u::@8/(byte*) test_8u::rem#4 ) + (byte*) char_cursor#64 ← phi( test_8u::@8/(byte*) char_cursor#2 ) + (byte*) char_cursor#30 ← (byte*) char_cursor#64 + (byte) print_byte::b#5 ← *((byte*) test_8u::rem#2) + call print_byte param-assignment + to:test_8u::@10 +test_8u::@10: scope:[test_8u] from test_8u::@9 + (byte*) test_8u::rem#6 ← phi( test_8u::@9/(byte*) test_8u::rem#2 ) + (byte) test_8u::i#4 ← phi( test_8u::@9/(byte) test_8u::i#5 ) + (byte*) line_cursor#25 ← phi( test_8u::@9/(byte*) line_cursor#29 ) + (byte*) char_cursor#65 ← phi( test_8u::@9/(byte*) char_cursor#10 ) + (byte*) char_cursor#31 ← (byte*) char_cursor#65 + call print_ln param-assignment + to:test_8u::@11 +test_8u::@11: scope:[test_8u] from test_8u::@10 + (byte*) test_8u::rem#3 ← phi( test_8u::@10/(byte*) test_8u::rem#6 ) + (byte) test_8u::i#3 ← phi( test_8u::@10/(byte) test_8u::i#4 ) + (byte*) char_cursor#66 ← phi( test_8u::@10/(byte*) char_cursor#4 ) + (byte*) line_cursor#19 ← phi( test_8u::@10/(byte*) line_cursor#2 ) + (byte*) line_cursor#8 ← (byte*) line_cursor#19 + (byte*) char_cursor#32 ← (byte*) char_cursor#66 + (byte) test_8u::i#1 ← ++ (byte) test_8u::i#3 + (boolean~) test_8u::$9 ← (byte) test_8u::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 6 + if((boolean~) test_8u::$9) goto test_8u::@1 + to:test_8u::@return +test_8u::@return: scope:[test_8u] from test_8u::@11 + (byte*) line_cursor#20 ← phi( test_8u::@11/(byte*) line_cursor#8 ) + (byte*) char_cursor#67 ← phi( test_8u::@11/(byte*) char_cursor#32 ) + (byte*) char_cursor#33 ← (byte*) char_cursor#67 + (byte*) line_cursor#9 ← (byte*) line_cursor#20 + return + to:@return +div8u: scope:[div8u] from test_8u::@1 + (byte*) div8u::remainder#7 ← phi( test_8u::@1/(byte*) div8u::remainder#0 ) + (byte) div8u::divisor#5 ← phi( test_8u::@1/(byte) div8u::divisor#0 ) + (byte) div8u::dividend#4 ← phi( test_8u::@1/(byte) div8u::dividend#0 ) (byte) div8u::rem#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) div8u::quotient#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) div8u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -955,22 +1413,102 @@ div8u::@return: scope:[div8u] from div8u::@6 (byte) div8u::return#2 ← (byte) div8u::return#4 return to:@return -@10: scope:[] from @begin - (byte*) line_cursor#14 ← phi( @begin/(byte*) line_cursor#0 ) - (byte*) char_cursor#43 ← phi( @begin/(byte*) char_cursor#0 ) +div16u: scope:[div16u] from test_16u::@1 + (word) div16u::divisor#5 ← phi( test_16u::@1/(word) div16u::divisor#0 ) + (word) div16u::dividend#4 ← phi( test_16u::@1/(word) div16u::dividend#0 ) + (word) div16u::rem#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) div16u::quotient#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) div16u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:div16u::@1 +div16u::@1: scope:[div16u] from div16u div16u::@3 + (byte) div16u::i#5 ← phi( div16u/(byte) div16u::i#0 div16u::@3/(byte) div16u::i#1 ) + (word) div16u::divisor#3 ← phi( div16u/(word) div16u::divisor#5 div16u::@3/(word) div16u::divisor#6 ) + (word) div16u::quotient#6 ← phi( div16u/(word) div16u::quotient#0 div16u::@3/(word) div16u::quotient#8 ) + (word) div16u::dividend#2 ← phi( div16u/(word) div16u::dividend#4 div16u::@3/(word) div16u::dividend#5 ) + (word) div16u::rem#4 ← phi( div16u/(word) div16u::rem#0 div16u::@3/(word) div16u::rem#9 ) + (word~) div16u::$0 ← (word) div16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) div16u::rem#1 ← (word~) div16u::$0 + (byte~) div16u::$1 ← > (word) div16u::dividend#2 + (byte~) div16u::$2 ← (byte~) div16u::$1 & (byte/word/signed word/dword/signed dword) 128 + (boolean~) div16u::$3 ← (byte~) div16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div16u::$4 ← ! (boolean~) div16u::$3 + if((boolean~) div16u::$4) goto div16u::@2 + to:div16u::@4 +div16u::@2: scope:[div16u] from div16u::@1 div16u::@4 + (byte) div16u::i#3 ← phi( div16u::@1/(byte) div16u::i#5 div16u::@4/(byte) div16u::i#6 ) + (word) div16u::divisor#1 ← phi( div16u::@1/(word) div16u::divisor#3 div16u::@4/(word) div16u::divisor#4 ) + (word) div16u::rem#5 ← phi( div16u::@1/(word) div16u::rem#1 div16u::@4/(word) div16u::rem#2 ) + (word) div16u::quotient#3 ← phi( div16u::@1/(word) div16u::quotient#6 div16u::@4/(word) div16u::quotient#7 ) + (word) div16u::dividend#3 ← phi( div16u::@1/(word) div16u::dividend#2 div16u::@4/(word) div16u::dividend#6 ) + (word~) div16u::$5 ← (word) div16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) div16u::dividend#1 ← (word~) div16u::$5 + (word~) div16u::$6 ← (word) div16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) div16u::quotient#1 ← (word~) div16u::$6 + (boolean~) div16u::$7 ← (word) div16u::rem#5 >= (word) div16u::divisor#1 + (boolean~) div16u::$8 ← ! (boolean~) div16u::$7 + if((boolean~) div16u::$8) goto div16u::@3 + to:div16u::@5 +div16u::@4: scope:[div16u] from div16u::@1 + (byte) div16u::i#6 ← phi( div16u::@1/(byte) div16u::i#5 ) + (word) div16u::divisor#4 ← phi( div16u::@1/(word) div16u::divisor#3 ) + (word) div16u::quotient#7 ← phi( div16u::@1/(word) div16u::quotient#6 ) + (word) div16u::dividend#6 ← phi( div16u::@1/(word) div16u::dividend#2 ) + (word) div16u::rem#6 ← phi( div16u::@1/(word) div16u::rem#1 ) + (word) div16u::rem#2 ← ++ (word) div16u::rem#6 + to:div16u::@2 +div16u::@3: scope:[div16u] from div16u::@2 div16u::@5 + (word) div16u::divisor#6 ← phi( div16u::@2/(word) div16u::divisor#1 div16u::@5/(word) div16u::divisor#2 ) + (word) div16u::quotient#8 ← phi( div16u::@2/(word) div16u::quotient#1 div16u::@5/(word) div16u::quotient#2 ) + (word) div16u::dividend#5 ← phi( div16u::@2/(word) div16u::dividend#1 div16u::@5/(word) div16u::dividend#7 ) + (word) div16u::rem#9 ← phi( div16u::@2/(word) div16u::rem#5 div16u::@5/(word) div16u::rem#3 ) + (byte) div16u::i#2 ← phi( div16u::@2/(byte) div16u::i#3 div16u::@5/(byte) div16u::i#4 ) + (byte) div16u::i#1 ← ++ (byte) div16u::i#2 + (boolean~) div16u::$10 ← (byte) div16u::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 16 + if((boolean~) div16u::$10) goto div16u::@1 + to:div16u::@6 +div16u::@5: scope:[div16u] from div16u::@2 + (word) div16u::dividend#7 ← phi( div16u::@2/(word) div16u::dividend#1 ) + (byte) div16u::i#4 ← phi( div16u::@2/(byte) div16u::i#3 ) + (word) div16u::divisor#2 ← phi( div16u::@2/(word) div16u::divisor#1 ) + (word) div16u::rem#7 ← phi( div16u::@2/(word) div16u::rem#5 ) + (word) div16u::quotient#4 ← phi( div16u::@2/(word) div16u::quotient#1 ) + (word) div16u::quotient#2 ← ++ (word) div16u::quotient#4 + (word~) div16u::$9 ← (word) div16u::rem#7 - (word) div16u::divisor#2 + (word) div16u::rem#3 ← (word~) div16u::$9 + to:div16u::@3 +div16u::@6: scope:[div16u] from div16u::@3 + (word) div16u::quotient#5 ← phi( div16u::@3/(word) div16u::quotient#8 ) + (word) div16u::rem#8 ← phi( div16u::@3/(word) div16u::rem#9 ) + (word) rem16u#5 ← (word) div16u::rem#8 + (word) div16u::return#1 ← (word) div16u::quotient#5 + to:div16u::@return +div16u::@return: scope:[div16u] from div16u::@6 + (word) rem16u#13 ← phi( div16u::@6/(word) rem16u#5 ) + (word) div16u::return#4 ← phi( div16u::@6/(word) div16u::return#1 ) + (word) div16u::return#2 ← (word) div16u::return#4 + (word) rem16u#6 ← (word) rem16u#13 + return + to:@return +@13: scope:[] from @8 + (word) rem16u#19 ← phi( @8/(word) rem16u#0 ) + (byte*) line_cursor#26 ← phi( @8/(byte*) line_cursor#30 ) + (byte*) char_cursor#76 ← phi( @8/(byte*) char_cursor#81 ) call main param-assignment - to:@11 -@11: scope:[] from @10 - (byte*) line_cursor#11 ← phi( @10/(byte*) line_cursor#4 ) - (byte*) char_cursor#38 ← phi( @10/(byte*) char_cursor#18 ) - (byte*) char_cursor#19 ← (byte*) char_cursor#38 - (byte*) line_cursor#5 ← (byte*) line_cursor#11 + to:@14 +@14: scope:[] from @13 + (word) rem16u#14 ← phi( @13/(word) rem16u#2 ) + (byte*) line_cursor#21 ← phi( @13/(byte*) line_cursor#5 ) + (byte*) char_cursor#68 ← phi( @13/(byte*) char_cursor#15 ) + (byte*) char_cursor#34 ← (byte*) char_cursor#68 + (byte*) line_cursor#10 ← (byte*) line_cursor#21 + (word) rem16u#7 ← (word) rem16u#14 to:@end -@end: scope:[] from @11 +@end: scope:[] from @14 SYMBOL TABLE SSA -(label) @10 -(label) @11 +(label) @13 +(label) @14 +(label) @8 (label) @begin (label) @end (byte*) char_cursor @@ -1017,11 +1555,118 @@ SYMBOL TABLE SSA (byte*) char_cursor#45 (byte*) char_cursor#46 (byte*) char_cursor#47 +(byte*) char_cursor#48 +(byte*) char_cursor#49 (byte*) char_cursor#5 +(byte*) char_cursor#50 +(byte*) char_cursor#51 +(byte*) char_cursor#52 +(byte*) char_cursor#53 +(byte*) char_cursor#54 +(byte*) char_cursor#55 +(byte*) char_cursor#56 +(byte*) char_cursor#57 +(byte*) char_cursor#58 +(byte*) char_cursor#59 (byte*) char_cursor#6 +(byte*) char_cursor#60 +(byte*) char_cursor#61 +(byte*) char_cursor#62 +(byte*) char_cursor#63 +(byte*) char_cursor#64 +(byte*) char_cursor#65 +(byte*) char_cursor#66 +(byte*) char_cursor#67 +(byte*) char_cursor#68 +(byte*) char_cursor#69 (byte*) char_cursor#7 +(byte*) char_cursor#70 +(byte*) char_cursor#71 +(byte*) char_cursor#72 +(byte*) char_cursor#73 +(byte*) char_cursor#74 +(byte*) char_cursor#75 +(byte*) char_cursor#76 +(byte*) char_cursor#77 +(byte*) char_cursor#78 +(byte*) char_cursor#79 (byte*) char_cursor#8 +(byte*) char_cursor#80 +(byte*) char_cursor#81 +(byte*) char_cursor#82 +(byte*) char_cursor#83 (byte*) char_cursor#9 +(word()) div16u((word) div16u::dividend , (word) div16u::divisor) +(word~) div16u::$0 +(byte~) div16u::$1 +(boolean~) div16u::$10 +(byte~) div16u::$2 +(boolean~) div16u::$3 +(boolean~) div16u::$4 +(word~) div16u::$5 +(word~) div16u::$6 +(boolean~) div16u::$7 +(boolean~) div16u::$8 +(word~) div16u::$9 +(label) div16u::@1 +(label) div16u::@2 +(label) div16u::@3 +(label) div16u::@4 +(label) div16u::@5 +(label) div16u::@6 +(label) div16u::@return +(word) div16u::dividend +(word) div16u::dividend#0 +(word) div16u::dividend#1 +(word) div16u::dividend#2 +(word) div16u::dividend#3 +(word) div16u::dividend#4 +(word) div16u::dividend#5 +(word) div16u::dividend#6 +(word) div16u::dividend#7 +(word) div16u::divisor +(word) div16u::divisor#0 +(word) div16u::divisor#1 +(word) div16u::divisor#2 +(word) div16u::divisor#3 +(word) div16u::divisor#4 +(word) div16u::divisor#5 +(word) div16u::divisor#6 +(byte) div16u::i +(byte) div16u::i#0 +(byte) div16u::i#1 +(byte) div16u::i#2 +(byte) div16u::i#3 +(byte) div16u::i#4 +(byte) div16u::i#5 +(byte) div16u::i#6 +(word) div16u::quotient +(word) div16u::quotient#0 +(word) div16u::quotient#1 +(word) div16u::quotient#2 +(word) div16u::quotient#3 +(word) div16u::quotient#4 +(word) div16u::quotient#5 +(word) div16u::quotient#6 +(word) div16u::quotient#7 +(word) div16u::quotient#8 +(word) div16u::rem +(word) div16u::rem#0 +(word) div16u::rem#1 +(word) div16u::rem#2 +(word) div16u::rem#3 +(word) div16u::rem#4 +(word) div16u::rem#5 +(word) div16u::rem#6 +(word) div16u::rem#7 +(word) div16u::rem#8 +(word) div16u::rem#9 +(word) div16u::return +(word) div16u::return#0 +(word) div16u::return#1 +(word) div16u::return#2 +(word) div16u::return#3 +(word) div16u::return#4 (byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor , (byte*) div8u::remainder) (byte~) div8u::$0 (byte~) div8u::$1 @@ -1120,75 +1765,40 @@ SYMBOL TABLE SSA (byte*) line_cursor#22 (byte*) line_cursor#23 (byte*) line_cursor#24 +(byte*) line_cursor#25 +(byte*) line_cursor#26 +(byte*) line_cursor#27 +(byte*) line_cursor#28 +(byte*) line_cursor#29 (byte*) line_cursor#3 +(byte*) line_cursor#30 +(byte*) line_cursor#31 +(byte*) line_cursor#32 +(byte*) line_cursor#33 +(byte*) line_cursor#34 +(byte*) line_cursor#35 +(byte*) line_cursor#36 +(byte*) line_cursor#37 +(byte*) line_cursor#38 +(byte*) line_cursor#39 (byte*) line_cursor#4 +(byte*) line_cursor#40 +(byte*) line_cursor#41 +(byte*) line_cursor#42 +(byte*) line_cursor#43 +(byte*) line_cursor#44 +(byte*) line_cursor#45 +(byte*) line_cursor#46 (byte*) line_cursor#5 (byte*) line_cursor#6 (byte*) line_cursor#7 (byte*) line_cursor#8 (byte*) line_cursor#9 (void()) main() -(byte~) main::$1 -(boolean~) main::$10 (label) main::@1 -(label) main::@10 -(label) main::@11 -(label) main::@12 +(label) main::@2 (label) main::@3 -(label) main::@4 -(label) main::@5 -(label) main::@6 -(label) main::@7 -(label) main::@8 -(label) main::@9 (label) main::@return -(byte) main::dividend -(byte) main::dividend#0 -(byte) main::dividend#1 -(byte[]) main::dividends -(byte[]) main::dividends#0 -(byte) main::divisor -(byte) main::divisor#0 -(byte) main::divisor#1 -(byte) main::divisor#2 -(byte) main::divisor#3 -(byte[]) main::divisors -(byte[]) main::divisors#0 -(byte) main::i -(byte) main::i#0 -(byte) main::i#1 -(byte) main::i#10 -(byte) main::i#11 -(byte) main::i#2 -(byte) main::i#3 -(byte) main::i#4 -(byte) main::i#5 -(byte) main::i#6 -(byte) main::i#7 -(byte) main::i#8 -(byte) main::i#9 -(byte*) main::rem -(byte*) main::rem#0 -(byte*) main::rem#1 -(byte*) main::rem#10 -(byte*) main::rem#11 -(byte*) main::rem#2 -(byte*) main::rem#3 -(byte*) main::rem#4 -(byte*) main::rem#5 -(byte*) main::rem#6 -(byte*) main::rem#7 -(byte*) main::rem#8 -(byte*) main::rem#9 -(byte) main::res -(byte) main::res#0 -(byte) main::res#1 -(byte) main::res#2 -(byte) main::res#3 -(byte) main::res#4 -(const string) main::str = (string) " / @" -(const string) main::str1 = (string) " = @" -(const string) main::str2 = (string) " @" (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 (byte~) print_byte::$2 @@ -1203,6 +1813,8 @@ SYMBOL TABLE SSA (byte) print_byte::b#3 (byte) print_byte::b#4 (byte) print_byte::b#5 +(byte) print_byte::b#6 +(byte) print_byte::b#7 (byte[]) print_byte::hextab (byte[]) print_byte::hextab#0 (void()) print_char((byte) print_char::ch) @@ -1239,73 +1851,294 @@ SYMBOL TABLE SSA (byte*) print_str::str#4 (byte*) print_str::str#5 (byte*) print_str::str#6 +(byte*) print_str::str#7 +(byte*) print_str::str#8 +(byte*) print_str::str#9 +(void()) print_word((word) print_word::w) +(byte~) print_word::$0 +(byte~) print_word::$2 +(label) print_word::@1 +(label) print_word::@2 +(label) print_word::@return +(word) print_word::w +(word) print_word::w#0 +(word) print_word::w#1 +(word) print_word::w#2 +(word) print_word::w#3 +(word) print_word::w#4 +(word) print_word::w#5 +(word) rem16u +(word) rem16u#0 +(word) rem16u#1 +(word) rem16u#10 +(word) rem16u#11 +(word) rem16u#12 +(word) rem16u#13 +(word) rem16u#14 +(word) rem16u#15 +(word) rem16u#16 +(word) rem16u#17 +(word) rem16u#18 +(word) rem16u#19 +(word) rem16u#2 +(word) rem16u#20 +(word) rem16u#21 +(word) rem16u#22 +(word) rem16u#23 +(word) rem16u#24 +(word) rem16u#25 +(word) rem16u#26 +(word) rem16u#27 +(word) rem16u#3 +(word) rem16u#4 +(word) rem16u#5 +(word) rem16u#6 +(word) rem16u#7 +(word) rem16u#8 +(word) rem16u#9 +(void()) test_16u() +(word~) test_16u::$0 +(boolean~) test_16u::$10 +(byte/word~) test_16u::$9 +(label) test_16u::@1 +(label) test_16u::@10 +(label) test_16u::@11 +(label) test_16u::@3 +(label) test_16u::@4 +(label) test_16u::@5 +(label) test_16u::@6 +(label) test_16u::@7 +(label) test_16u::@8 +(label) test_16u::@9 +(label) test_16u::@return +(word) test_16u::dividend +(word) test_16u::dividend#0 +(word) test_16u::dividend#1 +(word[]) test_16u::dividends +(word[]) test_16u::dividends#0 +(word) test_16u::divisor +(word) test_16u::divisor#0 +(word) test_16u::divisor#1 +(word) test_16u::divisor#2 +(word) test_16u::divisor#3 +(word[]) test_16u::divisors +(word[]) test_16u::divisors#0 +(byte) test_16u::i +(byte) test_16u::i#0 +(byte) test_16u::i#1 +(byte) test_16u::i#10 +(byte) test_16u::i#11 +(byte) test_16u::i#2 +(byte) test_16u::i#3 +(byte) test_16u::i#4 +(byte) test_16u::i#5 +(byte) test_16u::i#6 +(byte) test_16u::i#7 +(byte) test_16u::i#8 +(byte) test_16u::i#9 +(word) test_16u::res +(word) test_16u::res#0 +(word) test_16u::res#1 +(word) test_16u::res#2 +(word) test_16u::res#3 +(word) test_16u::res#4 +(const string) test_16u::str = (string) " / @" +(const string) test_16u::str1 = (string) " = @" +(const string) test_16u::str2 = (string) " @" +(void()) test_8u() +(byte~) test_8u::$0 +(boolean~) test_8u::$9 +(label) test_8u::@1 +(label) test_8u::@10 +(label) test_8u::@11 +(label) test_8u::@3 +(label) test_8u::@4 +(label) test_8u::@5 +(label) test_8u::@6 +(label) test_8u::@7 +(label) test_8u::@8 +(label) test_8u::@9 +(label) test_8u::@return +(byte) test_8u::dividend +(byte) test_8u::dividend#0 +(byte) test_8u::dividend#1 +(byte[]) test_8u::dividends +(byte[]) test_8u::dividends#0 +(byte) test_8u::divisor +(byte) test_8u::divisor#0 +(byte) test_8u::divisor#1 +(byte) test_8u::divisor#2 +(byte) test_8u::divisor#3 +(byte[]) test_8u::divisors +(byte[]) test_8u::divisors#0 +(byte) test_8u::i +(byte) test_8u::i#0 +(byte) test_8u::i#1 +(byte) test_8u::i#10 +(byte) test_8u::i#11 +(byte) test_8u::i#2 +(byte) test_8u::i#3 +(byte) test_8u::i#4 +(byte) test_8u::i#5 +(byte) test_8u::i#6 +(byte) test_8u::i#7 +(byte) test_8u::i#8 +(byte) test_8u::i#9 +(byte*) test_8u::rem +(byte*) test_8u::rem#0 +(byte*) test_8u::rem#1 +(byte*) test_8u::rem#10 +(byte*) test_8u::rem#2 +(byte*) test_8u::rem#3 +(byte*) test_8u::rem#4 +(byte*) test_8u::rem#5 +(byte*) test_8u::rem#6 +(byte*) test_8u::rem#7 +(byte*) test_8u::rem#8 +(byte*) test_8u::rem#9 +(byte) test_8u::res +(byte) test_8u::res#0 +(byte) test_8u::res#1 +(byte) test_8u::res#2 +(byte) test_8u::res#3 +(byte) test_8u::res#4 +(const string) test_8u::str = (string) " / @" +(const string) test_8u::str1 = (string) " = @" +(const string) test_8u::str2 = (string) " @" OPTIMIZING CONTROL FLOW GRAPH Inversing boolean not (boolean~) div8u::$3 ← (byte~) div8u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) div8u::$2 ← (byte~) div8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (boolean~) div8u::$7 ← (byte) div8u::rem#5 < (byte) div8u::divisor#1 from (boolean~) div8u::$6 ← (byte) div8u::rem#5 >= (byte) div8u::divisor#1 +Inversing boolean not (boolean~) div16u::$4 ← (byte~) div16u::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) div16u::$3 ← (byte~) div16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (boolean~) div16u::$8 ← (word) div16u::rem#5 < (word) div16u::divisor#1 from (boolean~) div16u::$7 ← (word) div16u::rem#5 >= (word) div16u::divisor#1 Succesful SSA optimization Pass2UnaryNotSimplification -Not aliassing across scopes: print_str::str#6 print_str::str#1 -Not aliassing across scopes: char_cursor#44 char_cursor#10 -Not aliassing across scopes: line_cursor#12 line_cursor#13 -Not aliassing across scopes: char_cursor#40 char_cursor#16 -Not aliassing across scopes: print_byte::b#4 print_byte::b#3 -Not aliassing across scopes: char_cursor#41 char_cursor#15 -Not aliassing across scopes: char_cursor#24 char_cursor#9 -Not aliassing across scopes: char_cursor#25 char_cursor#9 +Not aliassing across scopes: print_str::str#9 print_str::str#1 +Not aliassing across scopes: char_cursor#77 char_cursor#16 +Not aliassing across scopes: line_cursor#22 line_cursor#24 +Not aliassing across scopes: char_cursor#70 char_cursor#22 +Not aliassing across scopes: print_word::w#4 print_word::w#0 +Not aliassing across scopes: char_cursor#71 char_cursor#74 +Not aliassing across scopes: char_cursor#39 char_cursor#10 +Not aliassing across scopes: char_cursor#40 char_cursor#10 +Not aliassing across scopes: print_byte::b#6 print_byte::b#0 +Not aliassing across scopes: char_cursor#72 char_cursor#71 +Not aliassing across scopes: char_cursor#42 char_cursor#12 +Not aliassing across scopes: char_cursor#43 char_cursor#12 Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#27 char_cursor#41 -Not aliassing across scopes: char_cursor#47 char_cursor#43 -Not aliassing across scopes: line_cursor#24 line_cursor#14 -Not aliassing across scopes: div8u::dividend#0 main::dividend#0 -Not aliassing across scopes: div8u::divisor#0 main::divisor#0 -Not aliassing across scopes: div8u::remainder#0 main::rem#1 +Not aliassing across scopes: char_cursor#45 char_cursor#72 +Not aliassing across scopes: char_cursor#78 char_cursor#76 +Not aliassing across scopes: line_cursor#27 line_cursor#26 +Not aliassing across scopes: rem16u#24 rem16u#19 +Not aliassing across scopes: char_cursor#47 char_cursor#33 +Not aliassing across scopes: line_cursor#14 line_cursor#9 +Not aliassing across scopes: rem16u#8 rem16u#4 +Not aliassing across scopes: char_cursor#48 char_cursor#24 +Not aliassing across scopes: line_cursor#15 line_cursor#7 +Not aliassing across scopes: rem16u#21 rem16u#15 +Not aliassing across scopes: char_cursor#82 char_cursor#13 +Not aliassing across scopes: line_cursor#45 line_cursor#3 +Not aliassing across scopes: div16u::dividend#0 test_16u::dividend#0 +Not aliassing across scopes: div16u::divisor#0 test_16u::divisor#0 +Not aliassing across scopes: div16u::return#0 div16u::return#2 +Not aliassing across scopes: rem16u#10 rem16u#6 +Not aliassing across scopes: test_16u::$0 div16u::return#3 +Not aliassing across scopes: print_word::w#0 test_16u::dividend#1 +Not aliassing across scopes: char_cursor#50 char_cursor#7 +Not aliassing across scopes: char_cursor#51 char_cursor#2 +Not aliassing across scopes: print_word::w#1 test_16u::divisor#1 +Not aliassing across scopes: char_cursor#52 char_cursor#7 +Not aliassing across scopes: char_cursor#53 char_cursor#2 +Not aliassing across scopes: print_word::w#2 test_16u::res#1 +Not aliassing across scopes: char_cursor#54 char_cursor#7 +Not aliassing across scopes: char_cursor#55 char_cursor#2 +Not aliassing across scopes: print_word::w#3 rem16u#11 +Not aliassing across scopes: char_cursor#56 char_cursor#7 +Not aliassing across scopes: line_cursor#17 line_cursor#2 +Not aliassing across scopes: char_cursor#57 char_cursor#4 +Not aliassing across scopes: char_cursor#83 char_cursor#73 +Not aliassing across scopes: line_cursor#46 line_cursor#23 +Not aliassing across scopes: div8u::dividend#0 test_8u::dividend#0 +Not aliassing across scopes: div8u::divisor#0 test_8u::divisor#0 +Not aliassing across scopes: div8u::remainder#0 test_8u::rem#1 Not aliassing across scopes: div8u::return#0 div8u::return#2 -Not aliassing across scopes: main::$1 div8u::return#3 -Not aliassing across scopes: print_byte::b#0 main::dividend#1 -Not aliassing across scopes: char_cursor#29 char_cursor#7 -Not aliassing across scopes: char_cursor#30 char_cursor#2 -Not aliassing across scopes: print_byte::b#1 main::divisor#1 -Not aliassing across scopes: char_cursor#31 char_cursor#7 -Not aliassing across scopes: char_cursor#32 char_cursor#2 -Not aliassing across scopes: print_byte::b#2 main::res#1 -Not aliassing across scopes: char_cursor#33 char_cursor#7 -Not aliassing across scopes: char_cursor#34 char_cursor#2 -Not aliassing across scopes: char_cursor#35 char_cursor#7 -Not aliassing across scopes: line_cursor#9 line_cursor#2 -Not aliassing across scopes: char_cursor#36 char_cursor#4 +Not aliassing across scopes: test_8u::$0 div8u::return#3 +Not aliassing across scopes: print_byte::b#2 test_8u::dividend#1 +Not aliassing across scopes: char_cursor#59 char_cursor#10 +Not aliassing across scopes: char_cursor#60 char_cursor#2 +Not aliassing across scopes: print_byte::b#3 test_8u::divisor#1 +Not aliassing across scopes: char_cursor#61 char_cursor#10 +Not aliassing across scopes: char_cursor#62 char_cursor#2 +Not aliassing across scopes: print_byte::b#4 test_8u::res#1 +Not aliassing across scopes: char_cursor#63 char_cursor#10 +Not aliassing across scopes: char_cursor#64 char_cursor#2 +Not aliassing across scopes: char_cursor#65 char_cursor#10 +Not aliassing across scopes: line_cursor#19 line_cursor#2 +Not aliassing across scopes: char_cursor#66 char_cursor#4 Not aliassing across scopes: div8u::dividend#4 div8u::dividend#0 Not aliassing across scopes: div8u::divisor#5 div8u::divisor#0 Not aliassing across scopes: div8u::remainder#7 div8u::remainder#0 -Not aliassing across scopes: char_cursor#38 char_cursor#18 -Not aliassing across scopes: line_cursor#11 line_cursor#4 -Alias (byte*) char_cursor#0 = (byte*) line_cursor#0 (byte*) char_cursor#43 (byte*) line_cursor#14 -Alias (byte*) print_str::str#4 = (byte*) print_str::str#5 -Alias (byte*) char_cursor#2 = (byte*) char_cursor#20 (byte*) char_cursor#39 (byte*) char_cursor#21 -Alias (byte*) line_cursor#1 = (byte*~) print_ln::$0 (byte*) line_cursor#7 (byte*) char_cursor#3 (byte*) line_cursor#8 (byte*) char_cursor#23 (byte*) line_cursor#2 (byte*) char_cursor#4 -Alias (byte) print_byte::b#4 = (byte) print_byte::b#5 -Alias (byte*) char_cursor#24 = (byte*) char_cursor#5 -Alias (byte*) char_cursor#25 = (byte*) char_cursor#6 (byte*) char_cursor#26 (byte*) char_cursor#7 -Alias (byte*) char_cursor#28 = (byte*) char_cursor#8 (byte*) char_cursor#9 -Alias (byte*) main::rem#0 = (byte*) main::rem#4 -Alias (byte*) char_cursor#46 = (byte*) char_cursor#47 -Alias (byte*) line_cursor#23 = (byte*) line_cursor#24 +Not aliassing across scopes: div16u::dividend#4 div16u::dividend#0 +Not aliassing across scopes: div16u::divisor#5 div16u::divisor#0 +Not aliassing across scopes: rem16u#5 div16u::rem#8 +Not aliassing across scopes: char_cursor#68 char_cursor#15 +Not aliassing across scopes: line_cursor#21 line_cursor#5 +Not aliassing across scopes: rem16u#14 rem16u#2 +Alias (byte*) char_cursor#0 = (byte*) line_cursor#0 (byte*) char_cursor#81 (byte*) line_cursor#30 (byte*) char_cursor#76 (byte*) line_cursor#26 +Alias (byte*) print_str::str#7 = (byte*) print_str::str#8 +Alias (byte*) char_cursor#2 = (byte*) char_cursor#35 (byte*) char_cursor#69 (byte*) char_cursor#36 +Alias (byte*) line_cursor#1 = (byte*~) print_ln::$0 (byte*) line_cursor#12 (byte*) char_cursor#3 (byte*) line_cursor#13 (byte*) char_cursor#38 (byte*) line_cursor#2 (byte*) char_cursor#4 +Alias (byte) print_byte::b#0 = (byte~) print_word::$0 +Alias (word) print_word::w#4 = (word) print_word::w#5 +Alias (byte*) char_cursor#39 = (byte*) char_cursor#5 +Alias (byte) print_byte::b#1 = (byte~) print_word::$2 +Alias (byte*) char_cursor#40 = (byte*) char_cursor#6 (byte*) char_cursor#41 (byte*) char_cursor#7 +Alias (byte) print_byte::b#6 = (byte) print_byte::b#7 +Alias (byte*) char_cursor#42 = (byte*) char_cursor#8 +Alias (byte*) char_cursor#10 = (byte*) char_cursor#9 (byte*) char_cursor#43 (byte*) char_cursor#44 +Alias (byte*) char_cursor#11 = (byte*) char_cursor#46 (byte*) char_cursor#12 +Alias (byte*) char_cursor#73 = (byte*) char_cursor#78 +Alias (byte*) line_cursor#23 = (byte*) line_cursor#27 +Alias (word) rem16u#15 = (word) rem16u#20 (word) rem16u#24 +Alias (byte*) char_cursor#13 = (byte*) char_cursor#47 +Alias (byte*) line_cursor#14 = (byte*) line_cursor#3 +Alias (word) rem16u#1 = (word) rem16u#8 (word) rem16u#9 (word) rem16u#2 +Alias (byte*) char_cursor#14 = (byte*) char_cursor#48 (byte*) char_cursor#49 (byte*) char_cursor#15 +Alias (byte*) line_cursor#15 = (byte*) line_cursor#4 (byte*) line_cursor#16 (byte*) line_cursor#5 +Alias (word) div16u::return#0 = (word) div16u::return#3 +Alias (word) test_16u::dividend#0 = (word) test_16u::dividend#1 +Alias (byte*) char_cursor#74 = (byte*) char_cursor#79 +Alias (word) test_16u::divisor#0 = (word) test_16u::divisor#3 (word) test_16u::divisor#2 (word) test_16u::divisor#1 +Alias (byte*) line_cursor#24 = (byte*) line_cursor#41 (byte*) line_cursor#43 (byte*) line_cursor#39 (byte*) line_cursor#37 (byte*) line_cursor#35 (byte*) line_cursor#33 (byte*) line_cursor#31 (byte*) line_cursor#28 +Alias (byte) test_16u::i#10 = (byte) test_16u::i#11 (byte) test_16u::i#2 (byte) test_16u::i#9 (byte) test_16u::i#8 (byte) test_16u::i#7 (byte) test_16u::i#6 (byte) test_16u::i#5 (byte) test_16u::i#4 (byte) test_16u::i#3 +Alias (word) rem16u#10 = (word) rem16u#3 (word) rem16u#27 (word) rem16u#26 (word) rem16u#25 (word) rem16u#22 (word) rem16u#17 (word) rem16u#11 (word) rem16u#23 (word) rem16u#18 (word) rem16u#12 (word) rem16u#4 +Alias (word) test_16u::res#0 = (word~) test_16u::$0 (word) test_16u::res#4 (word) test_16u::res#3 (word) test_16u::res#2 (word) test_16u::res#1 +Alias (byte*) char_cursor#16 = (byte*) char_cursor#50 +Alias (byte*) char_cursor#17 = (byte*) char_cursor#51 +Alias (byte*) char_cursor#18 = (byte*) char_cursor#52 +Alias (byte*) char_cursor#19 = (byte*) char_cursor#53 +Alias (byte*) char_cursor#20 = (byte*) char_cursor#54 +Alias (byte*) char_cursor#21 = (byte*) char_cursor#55 +Alias (byte*) char_cursor#22 = (byte*) char_cursor#56 +Alias (byte*) line_cursor#17 = (byte*) line_cursor#6 (byte*) line_cursor#18 (byte*) line_cursor#7 +Alias (byte*) char_cursor#23 = (byte*) char_cursor#57 (byte*) char_cursor#58 (byte*) char_cursor#24 +Alias (byte) test_16u::i#1 = (byte/word~) test_16u::$9 Alias (byte) div8u::return#0 = (byte) div8u::return#3 -Alias (byte) main::dividend#0 = (byte) main::dividend#1 -Alias (byte*) char_cursor#42 = (byte*) char_cursor#45 -Alias (byte) main::divisor#0 = (byte) main::divisor#3 (byte) main::divisor#2 (byte) main::divisor#1 -Alias (byte*) main::rem#1 = (byte*) main::rem#11 (byte*) main::rem#10 (byte*) main::rem#9 (byte*) main::rem#8 (byte*) main::rem#6 (byte*) main::rem#5 (byte*) main::rem#2 (byte*) main::rem#7 (byte*) main::rem#3 -Alias (byte*) line_cursor#13 = (byte*) line_cursor#21 (byte*) line_cursor#22 (byte*) line_cursor#20 (byte*) line_cursor#19 (byte*) line_cursor#18 (byte*) line_cursor#17 (byte*) line_cursor#16 (byte*) line_cursor#15 -Alias (byte) main::i#10 = (byte) main::i#11 (byte) main::i#2 (byte) main::i#9 (byte) main::i#8 (byte) main::i#7 (byte) main::i#6 (byte) main::i#5 (byte) main::i#4 (byte) main::i#3 -Alias (byte) main::res#0 = (byte~) main::$1 (byte) main::res#4 (byte) main::res#3 (byte) main::res#2 (byte) main::res#1 -Alias (byte*) char_cursor#10 = (byte*) char_cursor#29 -Alias (byte*) char_cursor#11 = (byte*) char_cursor#30 -Alias (byte*) char_cursor#12 = (byte*) char_cursor#31 -Alias (byte*) char_cursor#13 = (byte*) char_cursor#32 -Alias (byte*) char_cursor#14 = (byte*) char_cursor#33 -Alias (byte*) char_cursor#15 = (byte*) char_cursor#34 -Alias (byte*) char_cursor#16 = (byte*) char_cursor#35 -Alias (byte*) line_cursor#10 = (byte*) line_cursor#3 (byte*) line_cursor#9 (byte*) line_cursor#4 -Alias (byte*) char_cursor#17 = (byte*) char_cursor#36 (byte*) char_cursor#37 (byte*) char_cursor#18 +Alias (byte) test_8u::dividend#0 = (byte) test_8u::dividend#1 +Alias (byte*) char_cursor#75 = (byte*) char_cursor#80 +Alias (byte) test_8u::divisor#0 = (byte) test_8u::divisor#3 (byte) test_8u::divisor#2 (byte) test_8u::divisor#1 +Alias (byte*) test_8u::rem#1 = (byte*) test_8u::rem#10 (byte*) test_8u::rem#9 (byte*) test_8u::rem#8 (byte*) test_8u::rem#7 (byte*) test_8u::rem#5 (byte*) test_8u::rem#4 (byte*) test_8u::rem#2 (byte*) test_8u::rem#6 (byte*) test_8u::rem#3 +Alias (byte*) line_cursor#25 = (byte*) line_cursor#42 (byte*) line_cursor#44 (byte*) line_cursor#40 (byte*) line_cursor#38 (byte*) line_cursor#36 (byte*) line_cursor#34 (byte*) line_cursor#32 (byte*) line_cursor#29 +Alias (byte) test_8u::i#10 = (byte) test_8u::i#11 (byte) test_8u::i#2 (byte) test_8u::i#9 (byte) test_8u::i#8 (byte) test_8u::i#7 (byte) test_8u::i#6 (byte) test_8u::i#5 (byte) test_8u::i#4 (byte) test_8u::i#3 +Alias (byte) test_8u::res#0 = (byte~) test_8u::$0 (byte) test_8u::res#4 (byte) test_8u::res#3 (byte) test_8u::res#2 (byte) test_8u::res#1 +Alias (byte*) char_cursor#25 = (byte*) char_cursor#59 +Alias (byte*) char_cursor#26 = (byte*) char_cursor#60 +Alias (byte*) char_cursor#27 = (byte*) char_cursor#61 +Alias (byte*) char_cursor#28 = (byte*) char_cursor#62 +Alias (byte*) char_cursor#29 = (byte*) char_cursor#63 +Alias (byte*) char_cursor#30 = (byte*) char_cursor#64 +Alias (byte*) char_cursor#31 = (byte*) char_cursor#65 +Alias (byte*) line_cursor#19 = (byte*) line_cursor#8 (byte*) line_cursor#20 (byte*) line_cursor#9 +Alias (byte*) char_cursor#32 = (byte*) char_cursor#66 (byte*) char_cursor#67 (byte*) char_cursor#33 Alias (byte) div8u::rem#1 = (byte~) div8u::$0 (byte) div8u::rem#6 Alias (byte) div8u::dividend#1 = (byte~) div8u::$4 (byte) div8u::dividend#7 Alias (byte) div8u::quotient#1 = (byte~) div8u::$5 (byte) div8u::quotient#4 @@ -1322,180 +2155,336 @@ Alias (byte) div8u::rem#3 = (byte/signed byte/word/signed word/dword/signed dwor Alias (byte) div8u::rem#8 = (byte) div8u::rem#9 Alias (byte*) div8u::remainder#1 = (byte*) div8u::remainder#2 Alias (byte) div8u::return#1 = (byte) div8u::quotient#5 (byte) div8u::quotient#8 (byte) div8u::return#4 (byte) div8u::return#2 -Alias (byte*) char_cursor#19 = (byte*) char_cursor#38 -Alias (byte*) line_cursor#11 = (byte*) line_cursor#5 +Alias (word) div16u::rem#1 = (word~) div16u::$0 (word) div16u::rem#6 +Alias (word) div16u::dividend#1 = (word~) div16u::$5 (word) div16u::dividend#7 +Alias (word) div16u::quotient#1 = (word~) div16u::$6 (word) div16u::quotient#4 +Alias (word) div16u::dividend#2 = (word) div16u::dividend#6 +Alias (word) div16u::quotient#6 = (word) div16u::quotient#7 +Alias (word) div16u::divisor#3 = (word) div16u::divisor#4 +Alias (byte) div16u::i#5 = (byte) div16u::i#6 +Alias (word) div16u::rem#5 = (word) div16u::rem#7 +Alias (word) div16u::divisor#1 = (word) div16u::divisor#2 +Alias (byte) div16u::i#3 = (byte) div16u::i#4 +Alias (word) div16u::rem#3 = (word~) div16u::$9 +Alias (word) div16u::rem#8 = (word) div16u::rem#9 +Alias (word) div16u::return#1 = (word) div16u::quotient#5 (word) div16u::quotient#8 (word) div16u::return#4 (word) div16u::return#2 +Alias (word) rem16u#13 = (word) rem16u#5 (word) rem16u#6 +Alias (word) rem16u#0 = (word) rem16u#19 +Alias (byte*) char_cursor#34 = (byte*) char_cursor#68 +Alias (byte*) line_cursor#10 = (byte*) line_cursor#21 +Alias (word) rem16u#14 = (word) rem16u#7 Succesful SSA optimization Pass2AliasElimination -Not aliassing across scopes: print_str::str#6 print_str::str#1 -Not aliassing across scopes: char_cursor#44 char_cursor#10 -Not aliassing across scopes: line_cursor#12 line_cursor#13 -Not aliassing across scopes: char_cursor#40 char_cursor#16 -Not aliassing across scopes: print_byte::b#4 print_byte::b#3 -Not aliassing across scopes: char_cursor#41 char_cursor#15 -Not aliassing across scopes: char_cursor#24 char_cursor#28 -Not aliassing across scopes: char_cursor#25 char_cursor#28 +Not aliassing across scopes: print_str::str#9 print_str::str#1 +Not aliassing across scopes: char_cursor#77 char_cursor#16 +Not aliassing across scopes: line_cursor#22 line_cursor#24 +Not aliassing across scopes: char_cursor#70 char_cursor#22 +Not aliassing across scopes: print_word::w#4 print_word::w#0 +Not aliassing across scopes: char_cursor#71 char_cursor#74 +Not aliassing across scopes: char_cursor#39 char_cursor#10 +Not aliassing across scopes: char_cursor#40 char_cursor#10 +Not aliassing across scopes: print_byte::b#6 print_byte::b#0 +Not aliassing across scopes: char_cursor#72 char_cursor#71 +Not aliassing across scopes: char_cursor#42 char_cursor#11 +Not aliassing across scopes: char_cursor#10 char_cursor#11 Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#27 char_cursor#41 -Not aliassing across scopes: char_cursor#46 char_cursor#0 +Not aliassing across scopes: char_cursor#45 char_cursor#72 +Not aliassing across scopes: char_cursor#73 char_cursor#0 Not aliassing across scopes: line_cursor#23 char_cursor#0 -Not aliassing identity: main::rem#1 main::rem#1 -Not aliassing across scopes: div8u::dividend#0 main::dividend#0 -Not aliassing across scopes: div8u::divisor#0 main::divisor#0 -Not aliassing across scopes: div8u::remainder#0 main::rem#1 +Not aliassing across scopes: rem16u#15 rem16u#0 +Not aliassing across scopes: char_cursor#13 char_cursor#32 +Not aliassing across scopes: line_cursor#14 line_cursor#19 +Not aliassing across scopes: rem16u#1 rem16u#10 +Not aliassing across scopes: char_cursor#14 char_cursor#23 +Not aliassing across scopes: line_cursor#15 line_cursor#17 +Not aliassing across scopes: rem16u#21 rem16u#15 +Not aliassing across scopes: char_cursor#82 char_cursor#13 +Not aliassing across scopes: line_cursor#45 line_cursor#14 +Not aliassing across scopes: div16u::dividend#0 test_16u::dividend#0 +Not aliassing across scopes: div16u::divisor#0 test_16u::divisor#0 +Not aliassing across scopes: div16u::return#0 div16u::return#1 +Not aliassing across scopes: rem16u#10 rem16u#13 +Not aliassing across scopes: test_16u::res#0 div16u::return#0 +Not aliassing across scopes: print_word::w#0 test_16u::dividend#0 +Not aliassing across scopes: char_cursor#16 char_cursor#40 +Not aliassing across scopes: char_cursor#17 char_cursor#2 +Not aliassing across scopes: print_word::w#1 test_16u::divisor#0 +Not aliassing across scopes: char_cursor#18 char_cursor#40 +Not aliassing across scopes: char_cursor#19 char_cursor#2 +Not aliassing across scopes: print_word::w#2 test_16u::res#0 +Not aliassing across scopes: char_cursor#20 char_cursor#40 +Not aliassing across scopes: char_cursor#21 char_cursor#2 +Not aliassing across scopes: print_word::w#3 rem16u#10 +Not aliassing across scopes: char_cursor#22 char_cursor#40 +Not aliassing across scopes: line_cursor#17 line_cursor#1 +Not aliassing across scopes: char_cursor#23 line_cursor#1 +Not aliassing across scopes: char_cursor#83 char_cursor#73 +Not aliassing across scopes: line_cursor#46 line_cursor#23 +Not aliassing across scopes: div8u::dividend#0 test_8u::dividend#0 +Not aliassing across scopes: div8u::divisor#0 test_8u::divisor#0 +Not aliassing across scopes: div8u::remainder#0 test_8u::rem#1 Not aliassing across scopes: div8u::return#0 div8u::return#1 -Not aliassing across scopes: main::res#0 div8u::return#0 -Not aliassing across scopes: print_byte::b#0 main::dividend#0 -Not aliassing across scopes: char_cursor#10 char_cursor#25 -Not aliassing across scopes: char_cursor#11 char_cursor#2 -Not aliassing across scopes: print_byte::b#1 main::divisor#0 -Not aliassing across scopes: char_cursor#12 char_cursor#25 -Not aliassing across scopes: char_cursor#13 char_cursor#2 -Not aliassing across scopes: print_byte::b#2 main::res#0 -Not aliassing across scopes: char_cursor#14 char_cursor#25 -Not aliassing across scopes: char_cursor#15 char_cursor#2 -Not aliassing across scopes: char_cursor#16 char_cursor#25 -Not aliassing across scopes: line_cursor#10 line_cursor#1 -Not aliassing across scopes: char_cursor#17 line_cursor#1 +Not aliassing across scopes: test_8u::res#0 div8u::return#0 +Not aliassing across scopes: print_byte::b#2 test_8u::dividend#0 +Not aliassing across scopes: char_cursor#25 char_cursor#10 +Not aliassing across scopes: char_cursor#26 char_cursor#2 +Not aliassing across scopes: print_byte::b#3 test_8u::divisor#0 +Not aliassing across scopes: char_cursor#27 char_cursor#10 +Not aliassing across scopes: char_cursor#28 char_cursor#2 +Not aliassing across scopes: print_byte::b#4 test_8u::res#0 +Not aliassing across scopes: char_cursor#29 char_cursor#10 +Not aliassing across scopes: char_cursor#30 char_cursor#2 +Not aliassing across scopes: char_cursor#31 char_cursor#10 +Not aliassing across scopes: line_cursor#19 line_cursor#1 +Not aliassing across scopes: char_cursor#32 line_cursor#1 Not aliassing across scopes: div8u::dividend#4 div8u::dividend#0 Not aliassing across scopes: div8u::divisor#5 div8u::divisor#0 Not aliassing across scopes: div8u::remainder#7 div8u::remainder#0 -Not aliassing across scopes: char_cursor#19 char_cursor#17 -Not aliassing across scopes: line_cursor#11 line_cursor#10 +Not aliassing across scopes: div16u::dividend#4 div16u::dividend#0 +Not aliassing across scopes: div16u::divisor#5 div16u::divisor#0 +Not aliassing across scopes: rem16u#13 div16u::rem#8 +Not aliassing across scopes: char_cursor#34 char_cursor#14 +Not aliassing across scopes: line_cursor#10 line_cursor#15 +Not aliassing across scopes: rem16u#14 rem16u#1 Alias (byte) div8u::dividend#2 = (byte) div8u::dividend#3 Alias (byte) div8u::quotient#3 = (byte) div8u::quotient#6 Alias (byte) div8u::divisor#1 = (byte) div8u::divisor#3 (byte) div8u::divisor#6 Alias (byte) div8u::i#2 = (byte) div8u::i#3 (byte) div8u::i#5 Alias (byte*) div8u::remainder#1 = (byte*) div8u::remainder#3 (byte*) div8u::remainder#5 Alias (byte) div8u::dividend#1 = (byte) div8u::dividend#5 +Alias (word) div16u::dividend#2 = (word) div16u::dividend#3 +Alias (word) div16u::quotient#3 = (word) div16u::quotient#6 +Alias (word) div16u::divisor#1 = (word) div16u::divisor#3 (word) div16u::divisor#6 +Alias (byte) div16u::i#2 = (byte) div16u::i#3 (byte) div16u::i#5 +Alias (word) div16u::dividend#1 = (word) div16u::dividend#5 Succesful SSA optimization Pass2AliasElimination -Not aliassing across scopes: print_str::str#6 print_str::str#1 -Not aliassing across scopes: char_cursor#44 char_cursor#10 -Not aliassing across scopes: line_cursor#12 line_cursor#13 -Not aliassing across scopes: char_cursor#40 char_cursor#16 -Not aliassing across scopes: print_byte::b#4 print_byte::b#3 -Not aliassing across scopes: char_cursor#41 char_cursor#15 -Not aliassing across scopes: char_cursor#24 char_cursor#28 -Not aliassing across scopes: char_cursor#25 char_cursor#28 +Not aliassing across scopes: print_str::str#9 print_str::str#1 +Not aliassing across scopes: char_cursor#77 char_cursor#16 +Not aliassing across scopes: line_cursor#22 line_cursor#24 +Not aliassing across scopes: char_cursor#70 char_cursor#22 +Not aliassing across scopes: print_word::w#4 print_word::w#0 +Not aliassing across scopes: char_cursor#71 char_cursor#74 +Not aliassing across scopes: char_cursor#39 char_cursor#10 +Not aliassing across scopes: char_cursor#40 char_cursor#10 +Not aliassing across scopes: print_byte::b#6 print_byte::b#0 +Not aliassing across scopes: char_cursor#72 char_cursor#71 +Not aliassing across scopes: char_cursor#42 char_cursor#11 +Not aliassing across scopes: char_cursor#10 char_cursor#11 Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#27 char_cursor#41 -Not aliassing across scopes: char_cursor#46 char_cursor#0 +Not aliassing across scopes: char_cursor#45 char_cursor#72 +Not aliassing across scopes: char_cursor#73 char_cursor#0 Not aliassing across scopes: line_cursor#23 char_cursor#0 -Not aliassing identity: main::rem#1 main::rem#1 -Not aliassing across scopes: div8u::dividend#0 main::dividend#0 -Not aliassing across scopes: div8u::divisor#0 main::divisor#0 -Not aliassing across scopes: div8u::remainder#0 main::rem#1 +Not aliassing across scopes: rem16u#15 rem16u#0 +Not aliassing across scopes: char_cursor#13 char_cursor#32 +Not aliassing across scopes: line_cursor#14 line_cursor#19 +Not aliassing across scopes: rem16u#1 rem16u#10 +Not aliassing across scopes: char_cursor#14 char_cursor#23 +Not aliassing across scopes: line_cursor#15 line_cursor#17 +Not aliassing across scopes: rem16u#21 rem16u#15 +Not aliassing across scopes: char_cursor#82 char_cursor#13 +Not aliassing across scopes: line_cursor#45 line_cursor#14 +Not aliassing across scopes: div16u::dividend#0 test_16u::dividend#0 +Not aliassing across scopes: div16u::divisor#0 test_16u::divisor#0 +Not aliassing across scopes: div16u::return#0 div16u::return#1 +Not aliassing across scopes: rem16u#10 rem16u#13 +Not aliassing across scopes: test_16u::res#0 div16u::return#0 +Not aliassing across scopes: print_word::w#0 test_16u::dividend#0 +Not aliassing across scopes: char_cursor#16 char_cursor#40 +Not aliassing across scopes: char_cursor#17 char_cursor#2 +Not aliassing across scopes: print_word::w#1 test_16u::divisor#0 +Not aliassing across scopes: char_cursor#18 char_cursor#40 +Not aliassing across scopes: char_cursor#19 char_cursor#2 +Not aliassing across scopes: print_word::w#2 test_16u::res#0 +Not aliassing across scopes: char_cursor#20 char_cursor#40 +Not aliassing across scopes: char_cursor#21 char_cursor#2 +Not aliassing across scopes: print_word::w#3 rem16u#10 +Not aliassing across scopes: char_cursor#22 char_cursor#40 +Not aliassing across scopes: line_cursor#17 line_cursor#1 +Not aliassing across scopes: char_cursor#23 line_cursor#1 +Not aliassing across scopes: char_cursor#83 char_cursor#73 +Not aliassing across scopes: line_cursor#46 line_cursor#23 +Not aliassing across scopes: div8u::dividend#0 test_8u::dividend#0 +Not aliassing across scopes: div8u::divisor#0 test_8u::divisor#0 +Not aliassing across scopes: div8u::remainder#0 test_8u::rem#1 Not aliassing across scopes: div8u::return#0 div8u::return#1 -Not aliassing across scopes: main::res#0 div8u::return#0 -Not aliassing across scopes: print_byte::b#0 main::dividend#0 -Not aliassing across scopes: char_cursor#10 char_cursor#25 -Not aliassing across scopes: char_cursor#11 char_cursor#2 -Not aliassing across scopes: print_byte::b#1 main::divisor#0 -Not aliassing across scopes: char_cursor#12 char_cursor#25 -Not aliassing across scopes: char_cursor#13 char_cursor#2 -Not aliassing across scopes: print_byte::b#2 main::res#0 -Not aliassing across scopes: char_cursor#14 char_cursor#25 -Not aliassing across scopes: char_cursor#15 char_cursor#2 -Not aliassing across scopes: char_cursor#16 char_cursor#25 -Not aliassing across scopes: line_cursor#10 line_cursor#1 -Not aliassing across scopes: char_cursor#17 line_cursor#1 +Not aliassing across scopes: test_8u::res#0 div8u::return#0 +Not aliassing across scopes: print_byte::b#2 test_8u::dividend#0 +Not aliassing across scopes: char_cursor#25 char_cursor#10 +Not aliassing across scopes: char_cursor#26 char_cursor#2 +Not aliassing across scopes: print_byte::b#3 test_8u::divisor#0 +Not aliassing across scopes: char_cursor#27 char_cursor#10 +Not aliassing across scopes: char_cursor#28 char_cursor#2 +Not aliassing across scopes: print_byte::b#4 test_8u::res#0 +Not aliassing across scopes: char_cursor#29 char_cursor#10 +Not aliassing across scopes: char_cursor#30 char_cursor#2 +Not aliassing across scopes: char_cursor#31 char_cursor#10 +Not aliassing across scopes: line_cursor#19 line_cursor#1 +Not aliassing across scopes: char_cursor#32 line_cursor#1 Not aliassing across scopes: div8u::dividend#4 div8u::dividend#0 Not aliassing across scopes: div8u::divisor#5 div8u::divisor#0 Not aliassing across scopes: div8u::remainder#7 div8u::remainder#0 -Not aliassing across scopes: char_cursor#19 char_cursor#17 -Not aliassing across scopes: line_cursor#11 line_cursor#10 -Self Phi Eliminated (byte*) char_cursor#22 -Self Phi Eliminated (byte*) main::rem#1 +Not aliassing across scopes: div16u::dividend#4 div16u::dividend#0 +Not aliassing across scopes: div16u::divisor#5 div16u::divisor#0 +Not aliassing across scopes: rem16u#13 div16u::rem#8 +Not aliassing across scopes: char_cursor#34 char_cursor#14 +Not aliassing across scopes: line_cursor#10 line_cursor#15 +Not aliassing across scopes: rem16u#14 rem16u#1 +Self Phi Eliminated (byte*) char_cursor#37 +Self Phi Eliminated (byte*) test_8u::rem#1 Self Phi Eliminated (byte) div8u::divisor#1 Self Phi Eliminated (byte*) div8u::remainder#1 +Self Phi Eliminated (word) div16u::divisor#1 Succesful SSA optimization Pass2SelfPhiElimination -Redundant Phi (byte*) line_cursor#12 (byte*) line_cursor#13 -Redundant Phi (byte*) char_cursor#40 (byte*) char_cursor#16 -Redundant Phi (byte*) char_cursor#22 (byte*) char_cursor#40 -Redundant Phi (byte*) char_cursor#24 (byte*) char_cursor#28 -Redundant Phi (byte*) char_cursor#25 (byte*) char_cursor#28 -Redundant Phi (byte*) char_cursor#46 (byte*) char_cursor#0 +Redundant Phi (byte*) char_cursor#37 (byte*) char_cursor#70 +Redundant Phi (byte*) char_cursor#39 (byte*) char_cursor#10 +Redundant Phi (byte*) char_cursor#40 (byte*) char_cursor#10 +Redundant Phi (byte*) char_cursor#42 (byte*) char_cursor#11 +Redundant Phi (byte*) char_cursor#10 (byte*) char_cursor#11 +Redundant Phi (byte*) char_cursor#73 (byte*) char_cursor#0 Redundant Phi (byte*) line_cursor#23 (byte*) char_cursor#0 -Redundant Phi (byte*) main::rem#1 (byte*) main::rem#0 -Redundant Phi (byte*) char_cursor#10 (byte*) char_cursor#25 -Redundant Phi (byte*) char_cursor#11 (byte*) char_cursor#2 -Redundant Phi (byte*) char_cursor#12 (byte*) char_cursor#25 -Redundant Phi (byte*) char_cursor#13 (byte*) char_cursor#2 -Redundant Phi (byte*) char_cursor#14 (byte*) char_cursor#25 -Redundant Phi (byte*) char_cursor#15 (byte*) char_cursor#2 -Redundant Phi (byte*) char_cursor#16 (byte*) char_cursor#25 -Redundant Phi (byte*) line_cursor#10 (byte*) line_cursor#1 -Redundant Phi (byte*) char_cursor#17 (byte*) line_cursor#1 +Redundant Phi (word) rem16u#15 (word) rem16u#0 +Redundant Phi (byte*) char_cursor#13 (byte*) char_cursor#32 +Redundant Phi (byte*) line_cursor#14 (byte*) line_cursor#19 +Redundant Phi (word) rem16u#1 (word) rem16u#10 +Redundant Phi (byte*) char_cursor#14 (byte*) char_cursor#23 +Redundant Phi (byte*) line_cursor#15 (byte*) line_cursor#17 +Redundant Phi (word) rem16u#21 (word) rem16u#15 +Redundant Phi (byte*) char_cursor#82 (byte*) char_cursor#13 +Redundant Phi (byte*) line_cursor#45 (byte*) line_cursor#14 +Redundant Phi (word) rem16u#10 (word) rem16u#13 +Redundant Phi (byte*) char_cursor#16 (byte*) char_cursor#40 +Redundant Phi (byte*) char_cursor#17 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#18 (byte*) char_cursor#40 +Redundant Phi (byte*) char_cursor#19 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#20 (byte*) char_cursor#40 +Redundant Phi (byte*) char_cursor#21 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#22 (byte*) char_cursor#40 +Redundant Phi (byte*) line_cursor#17 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#23 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#83 (byte*) char_cursor#73 +Redundant Phi (byte*) line_cursor#46 (byte*) line_cursor#23 +Redundant Phi (byte*) test_8u::rem#1 (byte*) test_8u::rem#0 +Redundant Phi (byte*) char_cursor#25 (byte*) char_cursor#10 +Redundant Phi (byte*) char_cursor#26 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#27 (byte*) char_cursor#10 +Redundant Phi (byte*) char_cursor#28 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#29 (byte*) char_cursor#10 +Redundant Phi (byte*) char_cursor#30 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#31 (byte*) char_cursor#10 +Redundant Phi (byte*) line_cursor#19 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#32 (byte*) line_cursor#1 Redundant Phi (byte) div8u::dividend#4 (byte) div8u::dividend#0 Redundant Phi (byte) div8u::divisor#5 (byte) div8u::divisor#0 Redundant Phi (byte*) div8u::remainder#7 (byte*) div8u::remainder#0 Redundant Phi (byte) div8u::divisor#1 (byte) div8u::divisor#5 Redundant Phi (byte*) div8u::remainder#1 (byte*) div8u::remainder#7 -Redundant Phi (byte*) char_cursor#19 (byte*) char_cursor#17 -Redundant Phi (byte*) line_cursor#11 (byte*) line_cursor#10 +Redundant Phi (word) div16u::dividend#4 (word) div16u::dividend#0 +Redundant Phi (word) div16u::divisor#5 (word) div16u::divisor#0 +Redundant Phi (word) div16u::divisor#1 (word) div16u::divisor#5 +Redundant Phi (byte*) char_cursor#34 (byte*) char_cursor#14 +Redundant Phi (byte*) line_cursor#10 (byte*) line_cursor#15 +Redundant Phi (word) rem16u#14 (word) rem16u#1 Succesful SSA optimization Pass2RedundantPhiElimination -Redundant Phi (byte*) char_cursor#44 (byte*) char_cursor#28 +Redundant Phi (byte*) char_cursor#77 (byte*) char_cursor#11 +Redundant Phi (byte*) char_cursor#70 (byte*) char_cursor#11 +Redundant Phi (byte*) char_cursor#74 (byte*) line_cursor#1 +Redundant Phi (byte*) line_cursor#24 (byte*) line_cursor#1 Succesful SSA optimization Pass2RedundantPhiElimination -Simple Condition (boolean~) print_str::$0 if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 -Simple Condition (boolean~) print_ln::$1 if((byte*) line_cursor#1<(byte*) char_cursor#28) goto print_ln::@1 +Simple Condition (boolean~) print_str::$0 if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 +Simple Condition (boolean~) print_ln::$1 if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 Simple Condition (boolean~) print_cls::$1 if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword~) print_cls::$0) goto print_cls::@1 -Simple Condition (boolean~) main::$10 if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto main::@1 +Simple Condition (boolean~) test_16u::$10 if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1 +Simple Condition (boolean~) test_8u::$9 if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@1 Simple Condition (boolean~) div8u::$3 if((byte~) div8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8u::@2 Simple Condition (boolean~) div8u::$7 if((byte) div8u::rem#5<(byte) div8u::divisor#0) goto div8u::@3 Simple Condition (boolean~) div8u::$9 if((byte) div8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto div8u::@1 +Simple Condition (boolean~) div16u::$4 if((byte~) div16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div16u::@2 +Simple Condition (boolean~) div16u::$8 if((word) div16u::rem#5<(word) div16u::divisor#0) goto div16u::@3 +Simple Condition (boolean~) div16u::$10 if((byte) div16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto div16u::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) char_cursor#0 = ((byte*))1024 Constant (const string) print_byte::hextab#0 = print_byte::$4 Constant (const byte*) print_cls::sc#0 = ((byte*))1024 Constant (const word/signed word/dword/signed dword) print_cls::$0 = 1024+1000 -Constant (const byte*) main::rem#0 = ((byte*))255 -Constant (const byte[]) main::dividends#0 = { 255, 255, 255, 255, 255, 255 } -Constant (const byte[]) main::divisors#0 = { 5, 7, 11, 13, 17, 19 } -Constant (const byte) main::i#0 = 0 -Constant (const string) print_str::str#1 = main::str -Constant (const string) print_str::str#2 = main::str1 -Constant (const string) print_str::str#3 = main::str2 +Constant (const word) rem16u#0 = 0 +Constant (const word[]) test_16u::dividends#0 = { 65535, 65535, 65535, 65535, 65535, 65535 } +Constant (const word[]) test_16u::divisors#0 = { 5, 7, 11, 13, 17, 19 } +Constant (const byte) test_16u::i#0 = 0 +Constant (const string) print_str::str#1 = test_16u::str +Constant (const string) print_str::str#2 = test_16u::str1 +Constant (const string) print_str::str#3 = test_16u::str2 +Constant (const byte*) test_8u::rem#0 = ((byte*))255 +Constant (const byte[]) test_8u::dividends#0 = { 255, 255, 255, 255, 255, 255 } +Constant (const byte[]) test_8u::divisors#0 = { 5, 7, 11, 13, 17, 19 } +Constant (const byte) test_8u::i#0 = 0 +Constant (const string) print_str::str#4 = test_8u::str +Constant (const string) print_str::str#5 = test_8u::str1 +Constant (const string) print_str::str#6 = test_8u::str2 Constant (const byte) div8u::rem#0 = 0 Constant (const byte) div8u::quotient#0 = 0 Constant (const byte) div8u::i#0 = 0 +Constant (const word) div16u::rem#0 = 0 +Constant (const word) div16u::quotient#0 = 0 +Constant (const byte) div16u::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification -Constant (const byte*) div8u::remainder#0 = main::rem#0 +Constant (const byte*) div8u::remainder#0 = test_8u::rem#0 Succesful SSA optimization Pass2ConstantIdentification Culled Empty Block (label) print_ln::@2 +Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 +Culled Empty Block (label) @8 Culled Empty Block (label) main::@3 -Culled Empty Block (label) @11 +Culled Empty Block (label) @14 Succesful SSA optimization Pass2CullEmptyBlocks -Not aliassing across scopes: char_cursor#2 char_cursor#28 -Not aliassing across scopes: line_cursor#6 line_cursor#13 -Not aliassing across scopes: print_byte::b#4 print_byte::b#3 -Not aliassing across scopes: char_cursor#41 char_cursor#2 +Not aliassing across scopes: char_cursor#2 char_cursor#11 +Not aliassing across scopes: print_word::w#4 print_word::w#0 +Not aliassing across scopes: char_cursor#71 line_cursor#1 +Not aliassing across scopes: print_byte::b#6 print_byte::b#0 +Not aliassing across scopes: char_cursor#72 char_cursor#71 Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#27 char_cursor#41 -Not aliassing across scopes: char_cursor#42 line_cursor#1 -Not aliassing across scopes: line_cursor#13 line_cursor#1 -Not aliassing across scopes: div8u::dividend#0 main::dividend#0 -Not aliassing across scopes: div8u::divisor#0 main::divisor#0 +Not aliassing across scopes: char_cursor#45 char_cursor#72 +Not aliassing across scopes: div16u::dividend#0 test_16u::dividend#0 +Not aliassing across scopes: div16u::divisor#0 test_16u::divisor#0 +Not aliassing across scopes: div16u::return#0 div16u::return#1 +Not aliassing across scopes: test_16u::res#0 div16u::return#0 +Not aliassing across scopes: print_word::w#0 test_16u::dividend#0 +Not aliassing across scopes: print_word::w#1 test_16u::divisor#0 +Not aliassing across scopes: print_word::w#2 test_16u::res#0 +Not aliassing across scopes: print_word::w#3 rem16u#13 +Not aliassing across scopes: div8u::dividend#0 test_8u::dividend#0 +Not aliassing across scopes: div8u::divisor#0 test_8u::divisor#0 Not aliassing across scopes: div8u::return#0 div8u::return#1 -Not aliassing across scopes: main::res#0 div8u::return#0 -Not aliassing across scopes: print_byte::b#0 main::dividend#0 -Not aliassing across scopes: print_byte::b#1 main::divisor#0 -Not aliassing across scopes: print_byte::b#2 main::res#0 +Not aliassing across scopes: test_8u::res#0 div8u::return#0 +Not aliassing across scopes: print_byte::b#2 test_8u::dividend#0 +Not aliassing across scopes: print_byte::b#3 test_8u::divisor#0 +Not aliassing across scopes: print_byte::b#4 test_8u::res#0 Not aliassing across scopes: div8u::dividend#2 div8u::dividend#0 -Not aliassing across scopes: char_cursor#2 char_cursor#28 -Not aliassing across scopes: line_cursor#6 line_cursor#13 -Not aliassing across scopes: print_byte::b#4 print_byte::b#3 -Not aliassing across scopes: char_cursor#41 char_cursor#2 +Not aliassing across scopes: div16u::dividend#2 div16u::dividend#0 +Not aliassing across scopes: rem16u#13 div16u::rem#8 +Not aliassing across scopes: char_cursor#2 char_cursor#11 +Not aliassing across scopes: print_word::w#4 print_word::w#0 +Not aliassing across scopes: char_cursor#71 line_cursor#1 +Not aliassing across scopes: print_byte::b#6 print_byte::b#0 +Not aliassing across scopes: char_cursor#72 char_cursor#71 Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#27 char_cursor#41 -Not aliassing across scopes: char_cursor#42 line_cursor#1 -Not aliassing across scopes: line_cursor#13 line_cursor#1 -Not aliassing across scopes: div8u::dividend#0 main::dividend#0 -Not aliassing across scopes: div8u::divisor#0 main::divisor#0 +Not aliassing across scopes: char_cursor#45 char_cursor#72 +Not aliassing across scopes: div16u::dividend#0 test_16u::dividend#0 +Not aliassing across scopes: div16u::divisor#0 test_16u::divisor#0 +Not aliassing across scopes: div16u::return#0 div16u::return#1 +Not aliassing across scopes: test_16u::res#0 div16u::return#0 +Not aliassing across scopes: print_word::w#0 test_16u::dividend#0 +Not aliassing across scopes: print_word::w#1 test_16u::divisor#0 +Not aliassing across scopes: print_word::w#2 test_16u::res#0 +Not aliassing across scopes: print_word::w#3 rem16u#13 +Not aliassing across scopes: div8u::dividend#0 test_8u::dividend#0 +Not aliassing across scopes: div8u::divisor#0 test_8u::divisor#0 Not aliassing across scopes: div8u::return#0 div8u::return#1 -Not aliassing across scopes: main::res#0 div8u::return#0 -Not aliassing across scopes: print_byte::b#0 main::dividend#0 -Not aliassing across scopes: print_byte::b#1 main::divisor#0 -Not aliassing across scopes: print_byte::b#2 main::res#0 +Not aliassing across scopes: test_8u::res#0 div8u::return#0 +Not aliassing across scopes: print_byte::b#2 test_8u::dividend#0 +Not aliassing across scopes: print_byte::b#3 test_8u::divisor#0 +Not aliassing across scopes: print_byte::b#4 test_8u::res#0 Not aliassing across scopes: div8u::dividend#2 div8u::dividend#0 +Not aliassing across scopes: div16u::dividend#2 div16u::dividend#0 +Not aliassing across scopes: rem16u#13 div16u::rem#8 OPTIMIZING CONTROL FLOW GRAPH Inlining constant with var siblings (const string) print_str::str#1 Inlining constant with var siblings (const string) print_str::str#1 @@ -1506,10 +2495,21 @@ Inlining constant with var siblings (const string) print_str::str#2 Inlining constant with var siblings (const string) print_str::str#3 Inlining constant with var siblings (const string) print_str::str#3 Inlining constant with var siblings (const string) print_str::str#3 +Inlining constant with var siblings (const string) print_str::str#4 +Inlining constant with var siblings (const string) print_str::str#4 +Inlining constant with var siblings (const string) print_str::str#4 +Inlining constant with var siblings (const string) print_str::str#5 +Inlining constant with var siblings (const string) print_str::str#5 +Inlining constant with var siblings (const string) print_str::str#5 +Inlining constant with var siblings (const string) print_str::str#6 +Inlining constant with var siblings (const string) print_str::str#6 +Inlining constant with var siblings (const string) print_str::str#6 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte*) print_cls::sc#0 -Inlining constant with var siblings (const byte) main::i#0 -Inlining constant with var siblings (const byte) main::i#0 +Inlining constant with var siblings (const byte) test_16u::i#0 +Inlining constant with var siblings (const byte) test_16u::i#0 +Inlining constant with var siblings (const byte) test_8u::i#0 +Inlining constant with var siblings (const byte) test_8u::i#0 Inlining constant with var siblings (const byte) div8u::rem#0 Inlining constant with var siblings (const byte) div8u::rem#0 Inlining constant with var siblings (const byte) div8u::rem#0 @@ -1521,46 +2521,81 @@ Inlining constant with var siblings (const byte) div8u::quotient#0 Inlining constant with var siblings (const byte) div8u::quotient#0 Inlining constant with var siblings (const byte) div8u::i#0 Inlining constant with var siblings (const byte) div8u::i#0 +Inlining constant with var siblings (const word) div16u::rem#0 +Inlining constant with var siblings (const word) div16u::rem#0 +Inlining constant with var siblings (const word) div16u::rem#0 +Inlining constant with var siblings (const word) div16u::rem#0 +Inlining constant with var siblings (const word) div16u::rem#0 +Inlining constant with var siblings (const word) div16u::rem#0 +Inlining constant with var siblings (const word) div16u::quotient#0 +Inlining constant with var siblings (const word) div16u::quotient#0 +Inlining constant with var siblings (const word) div16u::quotient#0 +Inlining constant with var siblings (const byte) div16u::i#0 +Inlining constant with var siblings (const byte) div16u::i#0 Inlining constant with var siblings (const byte*) char_cursor#0 Inlining constant with var siblings (const byte*) char_cursor#0 Inlining constant with var siblings (const byte*) char_cursor#0 Inlining constant with var siblings (const byte*) char_cursor#0 Inlining constant with var siblings (const byte*) char_cursor#0 Inlining constant with var siblings (const byte*) char_cursor#0 +Inlining constant with var siblings (const byte*) char_cursor#0 +Inlining constant with var siblings (const word) rem16u#0 +Inlining constant with var siblings (const word) rem16u#0 +Constant inlined div16u::quotient#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined print_cls::$0 = (word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000 -Constant inlined div8u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined div8u::quotient#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined print_str::str#3 = (const string) main::str2 -Constant inlined print_str::str#2 = (const string) main::str1 -Constant inlined char_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024 -Constant inlined print_str::str#1 = (const string) main::str -Constant inlined print_byte::$4 = (const string) print_byte::hextab#0 +Constant inlined div16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined rem16u#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined print_cls::sc#0 = ((byte*))(word/signed word/dword/signed dword) 1024 -Constant inlined div8u::remainder#0 = (const byte*) main::rem#0 +Constant inlined div8u::remainder#0 = (const byte*) test_8u::rem#0 +Constant inlined test_16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined div8u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined test_8u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined print_str::str#4 = (const string) test_8u::str +Constant inlined div8u::quotient#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined print_str::str#3 = (const string) test_16u::str2 +Constant inlined print_str::str#2 = (const string) test_16u::str1 +Constant inlined char_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024 +Constant inlined print_str::str#1 = (const string) test_16u::str +Constant inlined print_byte::$4 = (const string) print_byte::hextab#0 +Constant inlined div16u::rem#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined print_str::str#6 = (const string) test_8u::str2 +Constant inlined print_str::str#5 = (const string) test_8u::str1 Constant inlined div8u::rem#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @10 @end main main::@1 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@return print_ln print_ln::@1 print_ln::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 div8u div8u::@1 div8u::@4 div8u::@2 div8u::@5 div8u::@3 div8u::@6 div8u::@return print_cls print_cls::@1 print_cls::@return -Added new block during phi lifting main::@13(between main::@12 and main::@1) +Block Sequence Planned @begin @13 @end main main::@1 main::@2 main::@return test_16u test_16u::@1 test_16u::@3 test_16u::@4 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@9 test_16u::@10 test_16u::@11 test_16u::@return print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 div16u div16u::@1 div16u::@4 div16u::@2 div16u::@5 div16u::@3 div16u::@6 div16u::@return test_8u test_8u::@1 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@11 test_8u::@return div8u div8u::@1 div8u::@4 div8u::@2 div8u::@5 div8u::@3 div8u::@6 div8u::@return print_cls print_cls::@1 print_cls::@return +Added new block during phi lifting test_16u::@12(between test_16u::@11 and test_16u::@1) Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) +Added new block during phi lifting div16u::@8(between div16u::@3 and div16u::@1) +Added new block during phi lifting div16u::@9(between div16u::@1 and div16u::@2) +Added new block during phi lifting div16u::@10(between div16u::@2 and div16u::@3) +Added new block during phi lifting test_8u::@12(between test_8u::@11 and test_8u::@1) Added new block during phi lifting div8u::@8(between div8u::@3 and div8u::@1) Added new block during phi lifting div8u::@9(between div8u::@1 and div8u::@2) Added new block during phi lifting div8u::@10(between div8u::@2 and div8u::@3) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) -Block Sequence Planned @begin @10 @end main main::@1 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@return main::@13 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 div8u div8u::@1 div8u::@4 div8u::@2 div8u::@5 div8u::@3 div8u::@6 div8u::@return div8u::@8 div8u::@10 div8u::@9 print_cls print_cls::@1 print_cls::@return print_cls::@3 +Block Sequence Planned @begin @13 @end main main::@1 main::@2 main::@return test_16u test_16u::@1 test_16u::@3 test_16u::@4 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@9 test_16u::@10 test_16u::@11 test_16u::@return test_16u::@12 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 div16u div16u::@1 div16u::@4 div16u::@2 div16u::@5 div16u::@3 div16u::@6 div16u::@return div16u::@8 div16u::@10 div16u::@9 test_8u test_8u::@1 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@11 test_8u::@return test_8u::@12 div8u div8u::@1 div8u::@4 div8u::@2 div8u::@5 div8u::@3 div8u::@6 div8u::@return div8u::@8 div8u::@10 div8u::@9 print_cls print_cls::@1 print_cls::@return print_cls::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @10 +Adding NOP phi() at start of @13 Adding NOP phi() at start of @end Adding NOP phi() at start of main -Adding NOP phi() at start of main::@5 -Adding NOP phi() at start of main::@7 -Adding NOP phi() at start of main::@9 -Adding NOP phi() at start of main::@11 +Adding NOP phi() at start of main::@1 +Adding NOP phi() at start of main::@2 +Adding NOP phi() at start of test_16u +Adding NOP phi() at start of test_16u::@4 +Adding NOP phi() at start of test_16u::@6 +Adding NOP phi() at start of test_16u::@8 +Adding NOP phi() at start of test_8u +Adding NOP phi() at start of test_8u::@4 +Adding NOP phi() at start of test_8u::@6 +Adding NOP phi() at start of test_8u::@8 Adding NOP phi() at start of print_cls CALL GRAPH Calls in [] to main:2 -Calls in [main] to print_cls:5 div8u:11 print_byte:17 print_str:19 print_byte:23 print_str:25 print_byte:29 print_str:31 print_byte:35 print_ln:37 -Calls in [print_byte] to print_char:55 print_char:60 +Calls in [main] to print_cls:5 test_8u:7 test_16u:9 +Calls in [test_16u] to div16u:17 print_word:23 print_str:25 print_word:29 print_str:31 print_word:35 print_str:37 print_word:41 print_ln:43 +Calls in [print_word] to print_byte:60 print_byte:64 +Calls in [print_byte] to print_char:71 print_char:76 +Calls in [test_8u] to div8u:127 print_byte:133 print_str:135 print_byte:139 print_str:141 print_byte:145 print_str:147 print_byte:151 print_ln:153 Propagating live ranges... Propagating live ranges... @@ -1593,57 +2628,97 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... -Propagating live ranges... -Created 19 initial phi equivalence classes -Coalesced [15] print_byte::b#7 ← print_byte::b#0 -Coalesced [16] char_cursor#50 ← char_cursor#42 -Coalesced [21] print_byte::b#8 ← print_byte::b#1 -Coalesced [22] char_cursor#51 ← char_cursor#2 -Coalesced [27] print_byte::b#9 ← print_byte::b#2 -Coalesced (already) [28] char_cursor#52 ← char_cursor#2 -Coalesced [33] print_byte::b#6 ← print_byte::b#3 -Coalesced (already) [34] char_cursor#49 ← char_cursor#2 -Coalesced [41] main::i#12 ← main::i#1 -Not coalescing [42] char_cursor#48 ← line_cursor#1 -Coalesced [43] line_cursor#25 ← line_cursor#1 -Coalesced [44] line_cursor#26 ← line_cursor#13 -Coalesced (already) [49] line_cursor#27 ← line_cursor#1 -Coalesced [53] print_char::ch#3 ← print_char::ch#0 -Coalesced [54] char_cursor#53 ← char_cursor#41 -Coalesced [58] print_char::ch#4 ← print_char::ch#1 -Coalesced [59] char_cursor#54 ← char_cursor#28 -Coalesced [67] print_str::str#7 ← print_str::str#6 -Coalesced (already) [68] char_cursor#55 ← char_cursor#28 -Coalesced [75] print_str::str#8 ← print_str::str#0 -Coalesced [76] char_cursor#56 ← char_cursor#1 -Coalesced [77] div8u::dividend#8 ← div8u::dividend#0 -Coalesced [83] div8u::rem#12 ← div8u::rem#2 -Coalesced [90] div8u::rem#14 ← div8u::rem#3 -Coalesced [91] div8u::return#6 ← div8u::quotient#2 -Coalesced [97] div8u::rem#10 ← div8u::rem#8 -Coalesced [98] div8u::dividend#9 ← div8u::dividend#1 -Coalesced [99] div8u::quotient#9 ← div8u::return#1 -Coalesced [100] div8u::i#7 ← div8u::i#1 -Coalesced [101] div8u::rem#13 ← div8u::rem#5 -Coalesced [102] div8u::return#5 ← div8u::quotient#1 -Coalesced [103] div8u::rem#11 ← div8u::rem#1 -Coalesced [110] print_cls::sc#3 ← print_cls::sc#1 -Coalesced down to 11 phi equivalence classes +Created 31 initial phi equivalence classes +Coalesced [21] print_word::w#6 ← print_word::w#0 +Not coalescing [22] char_cursor#84 ← line_cursor#1 +Coalesced [27] print_word::w#7 ← print_word::w#1 +Coalesced [28] char_cursor#85 ← char_cursor#2 +Coalesced [33] print_word::w#8 ← print_word::w#2 +Coalesced (already) [34] char_cursor#86 ← char_cursor#2 +Coalesced [39] print_word::w#9 ← print_word::w#3 +Coalesced (already) [40] char_cursor#87 ← char_cursor#2 +Coalesced [42] line_cursor#47 ← line_cursor#1 +Coalesced [47] test_16u::i#12 ← test_16u::i#1 +Coalesced [48] rem16u#28 ← rem16u#13 +Coalesced [50] line_cursor#49 ← line_cursor#22 +Coalesced (already) [55] line_cursor#50 ← line_cursor#1 +Coalesced [58] print_byte::b#8 ← print_byte::b#0 +Coalesced [59] char_cursor#88 ← char_cursor#71 +Coalesced [62] print_byte::b#9 ← print_byte::b#1 +Coalesced [63] char_cursor#89 ← char_cursor#11 +Coalesced [69] print_char::ch#3 ← print_char::ch#0 +Coalesced [70] char_cursor#94 ← char_cursor#72 +Coalesced [74] print_char::ch#4 ← print_char::ch#1 +Coalesced (already) [75] char_cursor#95 ← char_cursor#11 +Coalesced [83] print_str::str#10 ← print_str::str#9 +Coalesced (already) [84] char_cursor#96 ← char_cursor#11 +Coalesced [91] print_str::str#11 ← print_str::str#0 +Coalesced [92] char_cursor#97 ← char_cursor#1 +Coalesced [93] div16u::dividend#8 ← div16u::dividend#0 +Coalesced [100] div16u::rem#12 ← div16u::rem#2 +Coalesced [107] div16u::rem#14 ← div16u::rem#3 +Coalesced [108] div16u::return#6 ← div16u::quotient#2 +Coalesced [112] rem16u#13 ← div16u::rem#8 +Coalesced [114] div16u::rem#10 ← div16u::rem#8 +Coalesced [115] div16u::dividend#9 ← div16u::dividend#1 +Coalesced [116] div16u::quotient#9 ← div16u::return#1 +Coalesced [117] div16u::i#7 ← div16u::i#1 +Coalesced [118] div16u::rem#13 ← div16u::rem#5 +Coalesced [119] div16u::return#5 ← div16u::quotient#1 +Coalesced [120] div16u::rem#11 ← div16u::rem#1 +Coalesced [131] print_byte::b#10 ← print_byte::b#2 +Coalesced [132] char_cursor#90 ← char_cursor#75 +Coalesced [137] print_byte::b#11 ← print_byte::b#3 +Coalesced (already) [138] char_cursor#91 ← char_cursor#2 +Coalesced [143] print_byte::b#12 ← print_byte::b#4 +Coalesced (already) [144] char_cursor#92 ← char_cursor#2 +Coalesced [149] print_byte::b#13 ← print_byte::b#5 +Coalesced (already) [150] char_cursor#93 ← char_cursor#2 +Coalesced [152] line_cursor#48 ← line_cursor#25 +Coalesced [157] test_8u::i#12 ← test_8u::i#1 +Not coalescing [158] char_cursor#98 ← line_cursor#1 +Coalesced (already) [159] line_cursor#51 ← line_cursor#1 +Coalesced [160] div8u::dividend#8 ← div8u::dividend#0 +Coalesced [166] div8u::rem#12 ← div8u::rem#2 +Coalesced [173] div8u::rem#14 ← div8u::rem#3 +Coalesced [174] div8u::return#6 ← div8u::quotient#2 +Coalesced [180] div8u::rem#10 ← div8u::rem#8 +Coalesced [181] div8u::dividend#9 ← div8u::dividend#1 +Coalesced [182] div8u::quotient#9 ← div8u::return#1 +Coalesced [183] div8u::i#7 ← div8u::i#1 +Coalesced [184] div8u::rem#13 ← div8u::rem#5 +Coalesced [185] div8u::return#5 ← div8u::quotient#1 +Coalesced [186] div8u::rem#11 ← div8u::rem#1 +Coalesced [193] print_cls::sc#3 ← print_cls::sc#1 +Coalesced down to 17 phi equivalence classes +Culled Empty Block (label) test_16u::@12 Culled Empty Block (label) print_ln::@3 +Culled Empty Block (label) div16u::@6 +Culled Empty Block (label) div16u::@8 +Culled Empty Block (label) div16u::@10 +Culled Empty Block (label) div16u::@9 Culled Empty Block (label) div8u::@8 Culled Empty Block (label) div8u::@10 Culled Empty Block (label) div8u::@9 Culled Empty Block (label) print_cls::@3 -Block Sequence Planned @begin @10 @end main main::@1 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@return main::@13 print_ln print_ln::@1 print_ln::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 div8u div8u::@1 div8u::@4 div8u::@2 div8u::@5 div8u::@3 div8u::@6 div8u::@return print_cls print_cls::@1 print_cls::@return +Block Sequence Planned @begin @13 @end main main::@1 main::@2 main::@return test_16u test_16u::@1 test_16u::@3 test_16u::@4 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@9 test_16u::@10 test_16u::@11 test_16u::@return print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 div16u div16u::@1 div16u::@4 div16u::@2 div16u::@5 div16u::@3 div16u::@return test_8u test_8u::@1 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@11 test_8u::@return test_8u::@12 div8u div8u::@1 div8u::@4 div8u::@2 div8u::@5 div8u::@3 div8u::@6 div8u::@return print_cls print_cls::@1 print_cls::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @10 +Adding NOP phi() at start of @13 Adding NOP phi() at start of @end Adding NOP phi() at start of main -Adding NOP phi() at start of main::@5 -Adding NOP phi() at start of main::@7 -Adding NOP phi() at start of main::@9 -Adding NOP phi() at start of main::@11 -Adding NOP phi() at start of print_ln +Adding NOP phi() at start of main::@1 +Adding NOP phi() at start of main::@2 +Adding NOP phi() at start of test_16u +Adding NOP phi() at start of test_16u::@4 +Adding NOP phi() at start of test_16u::@6 +Adding NOP phi() at start of test_16u::@8 +Adding NOP phi() at start of test_16u::@10 +Adding NOP phi() at start of div16u +Adding NOP phi() at start of test_8u +Adding NOP phi() at start of test_8u::@4 +Adding NOP phi() at start of test_8u::@6 +Adding NOP phi() at start of test_8u::@8 +Adding NOP phi() at start of test_8u::@10 Adding NOP phi() at start of div8u Adding NOP phi() at start of print_cls Propagating live ranges... @@ -1670,241 +2745,391 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... -Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@10 -@10: scope:[] from @begin + to:@13 +@13: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @10 +@end: scope:[] from @13 [3] phi() [ ] ( ) -main: scope:[main] from @10 +main: scope:[main] from @13 [4] phi() [ ] ( main:2 [ ] ) [5] call print_cls param-assignment [ ] ( main:2 [ ] ) to:main::@1 -main::@1: scope:[main] from main main::@13 - [6] (byte*) line_cursor#13 ← phi( main::@13/(byte*) line_cursor#1 main/((byte*))(word/signed word/dword/signed dword) 1024 ) [ main::i#10 char_cursor#42 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 ] ) - [6] (byte*) char_cursor#42 ← phi( main::@13/(byte*~) char_cursor#48 main/((byte*))(word/signed word/dword/signed dword) 1024 ) [ main::i#10 char_cursor#42 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 ] ) - [6] (byte) main::i#10 ← phi( main::@13/(byte) main::i#1 main/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::i#10 char_cursor#42 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 ] ) - [7] (byte) main::dividend#0 ← *((const byte[]) main::dividends#0 + (byte) main::i#10) [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 ] ) - [8] (byte) main::divisor#0 ← *((const byte[]) main::divisors#0 + (byte) main::i#10) [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 ] ) - [9] (byte) div8u::dividend#0 ← (byte) main::dividend#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 ] ) - [10] (byte) div8u::divisor#0 ← (byte) main::divisor#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ) - [11] call div8u param-assignment [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ) - [12] (byte) div8u::return#0 ← (byte) div8u::return#1 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#0 ] ) - to:main::@4 -main::@4: scope:[main] from main::@1 - [13] (byte) main::res#0 ← (byte) div8u::return#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 main::res#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 main::res#0 ] ) - [14] (byte) print_byte::b#0 ← (byte) main::dividend#0 [ main::i#10 char_cursor#42 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#0 ] ) - [15] call print_byte param-assignment [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] ) - to:main::@5 -main::@5: scope:[main] from main::@4 - [16] phi() [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] ) - [17] call print_str param-assignment [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] ) - to:main::@6 -main::@6: scope:[main] from main::@5 - [18] (byte) print_byte::b#1 ← (byte) main::divisor#0 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#1 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#1 char_cursor#2 ] ) - [19] call print_byte param-assignment [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] ) - to:main::@7 -main::@7: scope:[main] from main::@6 - [20] phi() [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] ) - [21] call print_str param-assignment [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] ) - to:main::@8 -main::@8: scope:[main] from main::@7 - [22] (byte) print_byte::b#2 ← (byte) main::res#0 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#2 ] ) - [23] call print_byte param-assignment [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - to:main::@9 -main::@9: scope:[main] from main::@8 - [24] phi() [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - [25] call print_str param-assignment [ main::i#10 line_cursor#13 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#2 ] ) - to:main::@10 -main::@10: scope:[main] from main::@9 - [26] (byte) print_byte::b#3 ← *((const byte*) main::rem#0) [ main::i#10 line_cursor#13 print_byte::b#3 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 print_byte::b#3 char_cursor#2 ] ) - [27] call print_byte param-assignment [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - to:main::@11 -main::@11: scope:[main] from main::@10 - [28] phi() [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - [29] call print_ln param-assignment [ main::i#10 line_cursor#1 ] ( main:2 [ main::i#10 line_cursor#1 ] ) - to:main::@12 -main::@12: scope:[main] from main::@11 - [30] (byte) main::i#1 ← ++ (byte) main::i#10 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) - [31] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto main::@13 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) +main::@1: scope:[main] from main + [6] phi() [ ] ( main:2 [ ] ) + [7] call test_8u param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + to:main::@2 +main::@2: scope:[main] from main::@1 + [8] phi() [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + [9] call test_16u param-assignment [ ] ( main:2 [ ] ) to:main::@return -main::@return: scope:[main] from main::@12 - [32] return [ ] ( main:2 [ ] ) +main::@return: scope:[main] from main::@2 + [10] return [ ] ( main:2 [ ] ) to:@return -main::@13: scope:[main] from main::@12 - [33] (byte*~) char_cursor#48 ← (byte*) line_cursor#1 [ main::i#1 char_cursor#48 line_cursor#1 ] ( main:2 [ main::i#1 char_cursor#48 line_cursor#1 ] ) - to:main::@1 -print_ln: scope:[print_ln] from main::@11 - [34] phi() [ line_cursor#13 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#13 char_cursor#28 ] ) +test_16u: scope:[test_16u] from main::@2 + [11] phi() [ line_cursor#1 ] ( main:2::test_16u:9 [ line_cursor#1 ] ) + to:test_16u::@1 +test_16u::@1: scope:[test_16u] from test_16u test_16u::@11 + [12] (word) rem16u#16 ← phi( test_16u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16u::@11/(word) div16u::rem#8 ) [ test_16u::i#10 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 line_cursor#1 ] ) + [12] (byte) test_16u::i#10 ← phi( test_16u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16u::@11/(byte) test_16u::i#1 ) [ test_16u::i#10 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 line_cursor#1 ] ) + [13] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) [ test_16u::i#10 test_16u::dividend#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 line_cursor#1 ] ) + [14] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 ] ) + [15] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 line_cursor#1 ] ) + [16] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 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#0 div16u::divisor#0 line_cursor#1 ] ) + [17] call div16u param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#1 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#1 line_cursor#1 ] ) + [18] (word) div16u::return#0 ← (word) div16u::return#1 [ 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 ] ) + to:test_16u::@3 +test_16u::@3: scope:[test_16u] from test_16u::@1 + [19] (word) test_16u::res#0 ← (word) div16u::return#0 [ 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 ] ) + [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 ] ) + [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 ] ) + [22] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] ) + to:test_16u::@4 +test_16u::@4: scope:[test_16u] from test_16u::@3 + [23] phi() [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] ) + [24] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] ) + to:test_16u::@5 +test_16u::@5: scope:[test_16u] from test_16u::@4 + [25] (word) print_word::w#1 ← (word) test_16u::divisor#0 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#1 char_cursor#2 ] ) + [26] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] ) + to:test_16u::@6 +test_16u::@6: scope:[test_16u] from test_16u::@5 + [27] phi() [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] ) + [28] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] ) + to:test_16u::@7 +test_16u::@7: scope:[test_16u] from test_16u::@6 + [29] (word) print_word::w#2 ← (word) test_16u::res#0 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#2 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#2 char_cursor#2 ] ) + [30] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + to:test_16u::@8 +test_16u::@8: scope:[test_16u] from test_16u::@7 + [31] phi() [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + [32] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] ) + to:test_16u::@9 +test_16u::@9: scope:[test_16u] from test_16u::@8 + [33] (word) print_word::w#3 ← (word) div16u::rem#8 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#3 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#3 char_cursor#2 ] ) + [34] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + to:test_16u::@10 +test_16u::@10: scope:[test_16u] from test_16u::@9 + [35] phi() [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + [36] call print_ln param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] ) + to:test_16u::@11 +test_16u::@11: scope:[test_16u] from test_16u::@10 + [37] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ) + [38] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ) + to:test_16u::@return +test_16u::@return: scope:[test_16u] from test_16u::@11 + [39] return [ ] ( main:2::test_16u:9 [ ] ) + to:@return +print_ln: scope:[print_ln] from test_16u::@10 test_8u::@10 + [40] (byte*) line_cursor#22 ← phi( test_16u::@10/(byte*) line_cursor#1 test_8u::@10/(byte*) line_cursor#25 ) [ line_cursor#22 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#22 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#22 char_cursor#11 ] ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - [35] (byte*) line_cursor#6 ← phi( print_ln/(byte*) line_cursor#13 print_ln::@1/(byte*) line_cursor#1 ) [ line_cursor#6 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#6 char_cursor#28 ] ) - [36] (byte*) line_cursor#1 ← (byte*) line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 char_cursor#28 ] ) - [37] if((byte*) line_cursor#1<(byte*) char_cursor#28) goto print_ln::@1 [ line_cursor#1 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 char_cursor#28 ] ) + [41] (byte*) line_cursor#11 ← phi( print_ln/(byte*) line_cursor#22 print_ln::@1/(byte*) line_cursor#1 ) [ line_cursor#11 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#11 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#11 char_cursor#11 ] ) + [42] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 char_cursor#11 ] ) + [43] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 char_cursor#11 ] ) to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 - [38] return [ line_cursor#1 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 ] ) + [44] return [ line_cursor#1 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 ] ) to:@return -print_byte: scope:[print_byte] from main::@10 main::@4 main::@6 main::@8 - [39] (byte*) char_cursor#41 ← phi( main::@10/(byte*) char_cursor#2 main::@4/(byte*) char_cursor#42 main::@6/(byte*) char_cursor#2 main::@8/(byte*) char_cursor#2 ) [ print_byte::b#4 char_cursor#41 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 ] ) - [39] (byte) print_byte::b#4 ← phi( main::@10/(byte) print_byte::b#3 main::@4/(byte) print_byte::b#0 main::@6/(byte) print_byte::b#1 main::@8/(byte) print_byte::b#2 ) [ print_byte::b#4 char_cursor#41 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 ] ) - [40] (byte~) print_byte::$0 ← (byte) print_byte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#4 char_cursor#41 print_byte::$0 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_byte::$0 ] ) - [41] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#4 char_cursor#41 print_char::ch#0 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_char::ch#0 ] ) - [42] call print_char param-assignment [ char_cursor#28 print_byte::b#4 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_byte::b#4 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_byte::b#4 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::b#4 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::b#4 ] ) +print_word: scope:[print_word] from test_16u::@3 test_16u::@5 test_16u::@7 test_16u::@9 + [45] (byte*) char_cursor#71 ← phi( test_16u::@3/(byte*~) char_cursor#84 test_16u::@5/(byte*) char_cursor#2 test_16u::@7/(byte*) char_cursor#2 test_16u::@9/(byte*) char_cursor#2 ) [ print_word::w#4 char_cursor#71 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 ] ) + [45] (word) print_word::w#4 ← phi( test_16u::@3/(word) print_word::w#0 test_16u::@5/(word) print_word::w#1 test_16u::@7/(word) print_word::w#2 test_16u::@9/(word) print_word::w#3 ) [ print_word::w#4 char_cursor#71 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 ] ) + [46] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_word::w#4 char_cursor#71 print_byte::b#0 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] ) + [47] call print_byte param-assignment [ char_cursor#11 print_word::w#4 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_word::w#4 ] ) + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [48] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#1 ] ) + [49] call print_byte param-assignment [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [50] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + to:@return +print_byte: scope:[print_byte] from print_word print_word::@1 test_8u::@3 test_8u::@5 test_8u::@7 test_8u::@9 + [51] (byte*) char_cursor#72 ← phi( print_word/(byte*) char_cursor#71 print_word::@1/(byte*) char_cursor#11 test_8u::@3/(byte*) char_cursor#75 test_8u::@5/(byte*) char_cursor#2 test_8u::@7/(byte*) char_cursor#2 test_8u::@9/(byte*) char_cursor#2 ) [ print_byte::b#6 char_cursor#72 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 ] ) + [51] (byte) print_byte::b#6 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 test_8u::@3/(byte) print_byte::b#2 test_8u::@5/(byte) print_byte::b#3 test_8u::@7/(byte) print_byte::b#4 test_8u::@9/(byte) print_byte::b#5 ) [ print_byte::b#6 char_cursor#72 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 ] ) + [52] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 char_cursor#72 print_byte::$0 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_byte::$0 ] ) + [53] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#6 char_cursor#72 print_char::ch#0 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_char::ch#0 ] ) + [54] call print_char param-assignment [ char_cursor#11 print_byte::b#6 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::b#6 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [43] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#28 print_byte::$2 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_byte::$2 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_byte::$2 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::$2 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::$2 ] ) - [44] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#28 print_char::ch#1 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_char::ch#1 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_char::ch#1 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_char::ch#1 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_char::ch#1 ] ) - [45] call print_char param-assignment [ char_cursor#28 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 ] ) + [55] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::$2 ] ) + [56] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_char::ch#1 ] ) + [57] call print_char param-assignment [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 - [46] return [ char_cursor#28 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 ] ) + [58] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) to:@return print_char: scope:[print_char] from print_byte print_byte::@1 - [47] (byte*) char_cursor#27 ← phi( print_byte/(byte*) char_cursor#41 print_byte::@1/(byte*) char_cursor#28 ) [ print_char::ch#2 char_cursor#27 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_char::ch#2 char_cursor#27 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 print_char::ch#2 char_cursor#27 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 print_char::ch#2 char_cursor#27 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 print_char::ch#2 char_cursor#27 ] ) - [47] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#27 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 print_char::ch#2 char_cursor#27 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_char::ch#2 char_cursor#27 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 print_char::ch#2 char_cursor#27 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 print_char::ch#2 char_cursor#27 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 print_char::ch#2 char_cursor#27 ] ) - [48] *((byte*) char_cursor#27) ← (byte) print_char::ch#2 [ char_cursor#27 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#27 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#27 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#27 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#27 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#27 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#27 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#27 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#27 ] ) - [49] (byte*) char_cursor#28 ← ++ (byte*) char_cursor#27 [ char_cursor#28 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] ) + [59] (byte*) char_cursor#45 ← phi( print_byte/(byte*) char_cursor#72 print_byte::@1/(byte*) char_cursor#11 ) [ print_char::ch#2 char_cursor#45 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 print_char::ch#2 char_cursor#45 ] ) + [59] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#45 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 print_char::ch#2 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 print_char::ch#2 char_cursor#45 ] ) + [60] *((byte*) char_cursor#45) ← (byte) print_char::ch#2 [ char_cursor#45 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#45 ] ) + [61] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#45 [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) to:print_char::@return print_char::@return: scope:[print_char] from print_char - [50] return [ char_cursor#28 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] ) + [62] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) to:@return -print_str: scope:[print_str] from main::@5 main::@7 main::@9 - [51] (byte*) print_str::str#6 ← phi( main::@5/(const string) main::str main::@7/(const string) main::str1 main::@9/(const string) main::str2 ) [ char_cursor#28 print_str::str#6 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_str::str#6 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_str::str#6 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#28 print_str::str#6 ] ) +print_str: scope:[print_str] from test_16u::@4 test_16u::@6 test_16u::@8 test_8u::@4 test_8u::@6 test_8u::@8 + [63] (byte*) print_str::str#9 ← phi( test_16u::@4/(const string) test_16u::str test_16u::@6/(const string) test_16u::str1 test_16u::@8/(const string) test_16u::str2 test_8u::@4/(const string) test_8u::str test_8u::@6/(const string) test_8u::str1 test_8u::@8/(const string) test_8u::str2 ) [ char_cursor#11 print_str::str#9 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_str::str#9 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_str::str#9 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_str::str#9 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_str::str#9 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_str::str#9 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_str::str#9 ] ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [52] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#28 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) - [52] (byte*) print_str::str#4 ← phi( print_str/(byte*) print_str::str#6 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) - [53] if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) + [64] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#11 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) + [64] (byte*) print_str::str#7 ← phi( print_str/(byte*) print_str::str#9 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) + [65] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [54] return [ char_cursor#2 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 ] ) + [66] return [ char_cursor#2 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 ] ) to:@return print_str::@2: scope:[print_str] from print_str::@1 - [55] *((byte*) char_cursor#2) ← *((byte*) print_str::str#4) [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) - [56] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#4 char_cursor#1 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_str::str#4 char_cursor#1 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 print_str::str#4 char_cursor#1 ] main:2::print_str:25 [ main::i#10 line_cursor#13 print_str::str#4 char_cursor#1 ] ) - [57] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_str::str#0 char_cursor#1 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 print_str::str#0 char_cursor#1 ] main:2::print_str:25 [ main::i#10 line_cursor#13 print_str::str#0 char_cursor#1 ] ) + [67] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) + [68] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 print_str::str#7 char_cursor#1 ] ) + [69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 print_str::str#0 char_cursor#1 ] ) to:print_str::@1 -div8u: scope:[div8u] from main::@1 - [58] phi() [ div8u::dividend#0 div8u::divisor#0 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ) +div16u: scope:[div16u] from test_16u::@1 + [70] phi() [ div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::dividend#0 div16u::divisor#0 ] ) + to:div16u::@1 +div16u::@1: scope:[div16u] from div16u div16u::@3 + [71] (byte) div16u::i#2 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div16u::@3/(byte) div16u::i#1 ) [ div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ) + [71] (word) div16u::quotient#3 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div16u::@3/(word) div16u::return#1 ) [ div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ) + [71] (word) div16u::dividend#2 ← phi( div16u/(word) div16u::dividend#0 div16u::@3/(word) div16u::dividend#1 ) [ div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ) + [71] (word) div16u::rem#4 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div16u::@3/(word) div16u::rem#8 ) [ div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::rem#4 div16u::dividend#2 div16u::quotient#3 div16u::i#2 ] ) + [72] (word) div16u::rem#1 ← (word) div16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ) + [73] (byte~) div16u::$1 ← > (word) div16u::dividend#2 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$1 ] ) + [74] (byte~) div16u::$2 ← (byte~) div16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$2 ] ) + [75] if((byte~) div16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div16u::@2 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ) + to:div16u::@4 +div16u::@4: scope:[div16u] from div16u::@1 + [76] (word) div16u::rem#2 ← ++ (word) div16u::rem#1 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#2 ] ) + to:div16u::@2 +div16u::@2: scope:[div16u] from div16u::@1 div16u::@4 + [77] (word) div16u::rem#5 ← phi( div16u::@1/(word) div16u::rem#1 div16u::@4/(word) div16u::rem#2 ) [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#5 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#5 ] ) + [78] (word) div16u::dividend#1 ← (word) div16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::quotient#3 div16u::i#2 div16u::dividend#1 div16u::rem#5 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::quotient#3 div16u::i#2 div16u::dividend#1 div16u::rem#5 ] ) + [79] (word) div16u::quotient#1 ← (word) div16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ) + [80] if((word) div16u::rem#5<(word) div16u::divisor#0) goto div16u::@3 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ) + to:div16u::@5 +div16u::@5: scope:[div16u] from div16u::@2 + [81] (word) div16u::quotient#2 ← ++ (word) div16u::quotient#1 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#2 ] ) + [82] (word) div16u::rem#3 ← (word) div16u::rem#5 - (word) div16u::divisor#0 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::quotient#2 div16u::rem#3 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::quotient#2 div16u::rem#3 ] ) + to:div16u::@3 +div16u::@3: scope:[div16u] from div16u::@2 div16u::@5 + [83] (word) div16u::return#1 ← phi( div16u::@2/(word) div16u::quotient#1 div16u::@5/(word) div16u::quotient#2 ) [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::i#2 div16u::dividend#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::i#2 div16u::dividend#1 ] ) + [83] (word) div16u::rem#8 ← phi( div16u::@2/(word) div16u::rem#5 div16u::@5/(word) div16u::rem#3 ) [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::i#2 div16u::dividend#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::i#2 div16u::dividend#1 ] ) + [84] (byte) div16u::i#1 ← ++ (byte) div16u::i#2 [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ) + [85] if((byte) div16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto div16u::@1 [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ) + to:div16u::@return +div16u::@return: scope:[div16u] from div16u::@3 + [86] return [ div16u::rem#8 div16u::return#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::return#1 ] ) + to:@return +test_8u: scope:[test_8u] from main::@1 + [87] phi() [ ] ( main:2::test_8u:7 [ ] ) + to:test_8u::@1 +test_8u::@1: scope:[test_8u] from test_8u test_8u::@12 + [88] (byte*) line_cursor#25 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) 1024 test_8u::@12/(byte*) line_cursor#1 ) [ line_cursor#25 char_cursor#75 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 ] ) + [88] (byte*) char_cursor#75 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) 1024 test_8u::@12/(byte*~) char_cursor#98 ) [ line_cursor#25 char_cursor#75 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 ] ) + [88] (byte) test_8u::i#10 ← phi( test_8u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8u::@12/(byte) test_8u::i#1 ) [ line_cursor#25 char_cursor#75 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 ] ) + [89] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 ] ) + [90] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ) + [91] (byte) div8u::dividend#0 ← (byte) test_8u::dividend#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 ] ) + [92] (byte) div8u::divisor#0 ← (byte) test_8u::divisor#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ) + [93] call div8u param-assignment [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ) + [94] (byte) div8u::return#0 ← (byte) div8u::return#1 [ line_cursor#25 char_cursor#75 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::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#0 ] ) + to:test_8u::@3 +test_8u::@3: scope:[test_8u] from test_8u::@1 + [95] (byte) test_8u::res#0 ← (byte) div8u::return#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 test_8u::res#0 ] ) + [96] (byte) print_byte::b#2 ← (byte) test_8u::dividend#0 [ line_cursor#25 print_byte::b#2 char_cursor#75 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 print_byte::b#2 char_cursor#75 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) + [97] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) + to:test_8u::@4 +test_8u::@4: scope:[test_8u] from test_8u::@3 + [98] phi() [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) + [99] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) + to:test_8u::@5 +test_8u::@5: scope:[test_8u] from test_8u::@4 + [100] (byte) print_byte::b#3 ← (byte) test_8u::divisor#0 [ line_cursor#25 char_cursor#2 print_byte::b#3 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#3 test_8u::i#10 test_8u::res#0 ] ) + [101] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] ) + to:test_8u::@6 +test_8u::@6: scope:[test_8u] from test_8u::@5 + [102] phi() [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] ) + [103] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::res#0 ] ) + to:test_8u::@7 +test_8u::@7: scope:[test_8u] from test_8u::@6 + [104] (byte) print_byte::b#4 ← (byte) test_8u::res#0 [ line_cursor#25 char_cursor#2 print_byte::b#4 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#4 test_8u::i#10 ] ) + [105] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ) + to:test_8u::@8 +test_8u::@8: scope:[test_8u] from test_8u::@7 + [106] phi() [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ) + [107] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 ] ) + to:test_8u::@9 +test_8u::@9: scope:[test_8u] from test_8u::@8 + [108] (byte) print_byte::b#5 ← *((const byte*) test_8u::rem#0) [ line_cursor#25 char_cursor#2 print_byte::b#5 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#5 test_8u::i#10 ] ) + [109] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ) + to:test_8u::@10 +test_8u::@10: scope:[test_8u] from test_8u::@9 + [110] phi() [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ) + [111] call print_ln param-assignment [ line_cursor#1 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#10 ] ) + to:test_8u::@11 +test_8u::@11: scope:[test_8u] from test_8u::@10 + [112] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 [ line_cursor#1 test_8u::i#1 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 ] ) + [113] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@12 [ line_cursor#1 test_8u::i#1 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 ] ) + to:test_8u::@return +test_8u::@return: scope:[test_8u] from test_8u::@11 + [114] return [ line_cursor#1 ] ( main:2::test_8u:7 [ line_cursor#1 ] ) + to:@return +test_8u::@12: scope:[test_8u] from test_8u::@11 + [115] (byte*~) char_cursor#98 ← (byte*) line_cursor#1 [ line_cursor#1 test_8u::i#1 char_cursor#98 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 char_cursor#98 ] ) + to:test_8u::@1 +div8u: scope:[div8u] from test_8u::@1 + [116] phi() [ div8u::dividend#0 div8u::divisor#0 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ) to:div8u::@1 div8u::@1: scope:[div8u] from div8u div8u::@3 - [59] (byte) div8u::i#2 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::i#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ) - [59] (byte) div8u::quotient#3 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::return#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ) - [59] (byte) div8u::dividend#2 ← phi( div8u/(byte) div8u::dividend#0 div8u::@3/(byte) div8u::dividend#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ) - [59] (byte) div8u::rem#4 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::rem#8 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ) - [60] (byte) div8u::rem#1 ← (byte) div8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) - [61] (byte~) div8u::$1 ← (byte) div8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ) - [62] if((byte~) div8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8u::@2 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) + [117] (byte) div8u::i#2 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::i#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ) + [117] (byte) div8u::quotient#3 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::return#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ) + [117] (byte) div8u::dividend#2 ← phi( div8u/(byte) div8u::dividend#0 div8u::@3/(byte) div8u::dividend#1 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ) + [117] (byte) div8u::rem#4 ← phi( div8u/(byte/signed byte/word/signed word/dword/signed dword) 0 div8u::@3/(byte) div8u::rem#8 ) [ div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::rem#4 div8u::dividend#2 div8u::quotient#3 div8u::i#2 ] ) + [118] (byte) div8u::rem#1 ← (byte) div8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) + [119] (byte~) div8u::$1 ← (byte) div8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ) + [120] if((byte~) div8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8u::@2 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) to:div8u::@4 div8u::@4: scope:[div8u] from div8u::@1 - [63] (byte) div8u::rem#2 ← ++ (byte) div8u::rem#1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ) + [121] (byte) div8u::rem#2 ← ++ (byte) div8u::rem#1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ) to:div8u::@2 div8u::@2: scope:[div8u] from div8u::@1 div8u::@4 - [64] (byte) div8u::rem#5 ← phi( div8u::@1/(byte) div8u::rem#1 div8u::@4/(byte) div8u::rem#2 ) [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#5 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#5 ] ) - [65] (byte) div8u::dividend#1 ← (byte) div8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ) - [66] (byte) div8u::quotient#1 ← (byte) div8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) - [67] if((byte) div8u::rem#5<(byte) div8u::divisor#0) goto div8u::@3 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) + [122] (byte) div8u::rem#5 ← phi( div8u::@1/(byte) div8u::rem#1 div8u::@4/(byte) div8u::rem#2 ) [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#5 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#5 ] ) + [123] (byte) div8u::dividend#1 ← (byte) div8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ) + [124] (byte) div8u::quotient#1 ← (byte) div8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) + [125] if((byte) div8u::rem#5<(byte) div8u::divisor#0) goto div8u::@3 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) to:div8u::@5 div8u::@5: scope:[div8u] from div8u::@2 - [68] (byte) div8u::quotient#2 ← ++ (byte) div8u::quotient#1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ) - [69] (byte) div8u::rem#3 ← (byte) div8u::rem#5 - (byte) div8u::divisor#0 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ) + [126] (byte) div8u::quotient#2 ← ++ (byte) div8u::quotient#1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ) + [127] (byte) div8u::rem#3 ← (byte) div8u::rem#5 - (byte) div8u::divisor#0 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ) to:div8u::@3 div8u::@3: scope:[div8u] from div8u::@2 div8u::@5 - [70] (byte) div8u::return#1 ← phi( div8u::@2/(byte) div8u::quotient#1 div8u::@5/(byte) div8u::quotient#2 ) [ div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ) - [70] (byte) div8u::rem#8 ← phi( div8u::@2/(byte) div8u::rem#5 div8u::@5/(byte) div8u::rem#3 ) [ div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ) - [71] (byte) div8u::i#1 ← ++ (byte) div8u::i#2 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) - [72] if((byte) div8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto div8u::@1 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) + [128] (byte) div8u::return#1 ← phi( div8u::@2/(byte) div8u::quotient#1 div8u::@5/(byte) div8u::quotient#2 ) [ div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ) + [128] (byte) div8u::rem#8 ← phi( div8u::@2/(byte) div8u::rem#5 div8u::@5/(byte) div8u::rem#3 ) [ div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::i#2 div8u::rem#8 div8u::dividend#1 ] ) + [129] (byte) div8u::i#1 ← ++ (byte) div8u::i#2 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) + [130] if((byte) div8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto div8u::@1 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) to:div8u::@6 div8u::@6: scope:[div8u] from div8u::@3 - [73] *((const byte*) main::rem#0) ← (byte) div8u::rem#8 [ div8u::return#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ) + [131] *((const byte*) test_8u::rem#0) ← (byte) div8u::rem#8 [ div8u::return#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ) to:div8u::@return div8u::@return: scope:[div8u] from div8u::@6 - [74] return [ div8u::return#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ) + [132] return [ div8u::return#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ) to:@return print_cls: scope:[print_cls] from main - [75] phi() [ ] ( main:2::print_cls:5 [ ] ) + [133] phi() [ ] ( main:2::print_cls:5 [ ] ) to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [76] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) - [77] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) - [78] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) - [79] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) + [134] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) + [135] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) + [136] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) + [137] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [80] return [ ] ( main:2::print_cls:5 [ ] ) + [138] return [ ] ( main:2::print_cls:5 [ ] ) to:@return DOMINATORS @begin dominated by @begin -@10 dominated by @10 @begin -@end dominated by @end @10 @begin -main dominated by main @10 @begin -main::@1 dominated by main main::@1 @10 @begin -main::@4 dominated by main main::@1 @10 main::@4 @begin -main::@5 dominated by main main::@1 main::@5 @10 main::@4 @begin -main::@6 dominated by main main::@1 main::@5 main::@6 @10 main::@4 @begin -main::@7 dominated by main::@7 main main::@1 main::@5 main::@6 @10 main::@4 @begin -main::@8 dominated by main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 @begin -main::@9 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 @begin -main::@10 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 @begin main::@10 -main::@11 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 -main::@12 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 main::@12 -main::@return dominated by main::@9 main::@return main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 main::@12 -main::@13 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 main::@13 main::@12 -print_ln dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 print_ln -print_ln::@1 dominated by main::@9 print_ln::@1 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 print_ln -print_ln::@return dominated by main::@9 print_ln::@1 main::@7 main::@8 main print_ln::@return main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 print_ln -print_byte dominated by main main::@1 @10 main::@4 @begin print_byte -print_byte::@1 dominated by main main::@1 print_byte::@1 @10 main::@4 @begin print_byte -print_byte::@return dominated by main main::@1 print_byte::@1 @10 main::@4 @begin print_byte print_byte::@return -print_char dominated by main print_char main::@1 @10 main::@4 @begin print_byte -print_char::@return dominated by main print_char main::@1 @10 main::@4 print_char::@return @begin print_byte -print_str dominated by main main::@1 main::@5 @10 main::@4 @begin print_str -print_str::@1 dominated by main print_str::@1 main::@1 main::@5 @10 main::@4 @begin print_str -print_str::@return dominated by print_str::@return main print_str::@1 main::@1 main::@5 @10 main::@4 @begin print_str -print_str::@2 dominated by main print_str::@1 print_str::@2 main::@1 main::@5 @10 main::@4 @begin print_str -div8u dominated by main main::@1 @10 @begin div8u -div8u::@1 dominated by main main::@1 @10 @begin div8u::@1 div8u -div8u::@4 dominated by main div8u::@4 main::@1 @10 @begin div8u::@1 div8u -div8u::@2 dominated by main div8u::@2 main::@1 @10 @begin div8u::@1 div8u -div8u::@5 dominated by main div8u::@2 div8u::@5 main::@1 @10 @begin div8u::@1 div8u -div8u::@3 dominated by main div8u::@3 div8u::@2 main::@1 @10 @begin div8u::@1 div8u -div8u::@6 dominated by main div8u::@3 div8u::@2 div8u::@6 main::@1 @10 @begin div8u::@1 div8u -div8u::@return dominated by main div8u::@3 div8u::@2 div8u::@6 main::@1 div8u::@return @10 @begin div8u::@1 div8u -print_cls dominated by main @10 @begin print_cls -print_cls::@1 dominated by main @10 @begin print_cls::@1 print_cls -print_cls::@return dominated by main print_cls::@return @10 @begin print_cls::@1 print_cls +@13 dominated by @begin @13 +@end dominated by @end @begin @13 +main dominated by main @begin @13 +main::@1 dominated by main main::@1 @begin @13 +main::@2 dominated by main main::@1 main::@2 @begin @13 +main::@return dominated by main main::@1 main::@2 @begin main::@return @13 +test_16u dominated by main main::@1 main::@2 @begin @13 test_16u +test_16u::@1 dominated by main main::@1 main::@2 @begin @13 test_16u test_16u::@1 +test_16u::@3 dominated by main main::@1 main::@2 @begin @13 test_16u test_16u::@1 test_16u::@3 +test_16u::@4 dominated by main main::@1 main::@2 @begin @13 test_16u test_16u::@1 test_16u::@3 test_16u::@4 +test_16u::@5 dominated by main main::@1 main::@2 @begin @13 test_16u test_16u::@5 test_16u::@1 test_16u::@3 test_16u::@4 +test_16u::@6 dominated by main main::@1 main::@2 @begin @13 test_16u test_16u::@5 test_16u::@6 test_16u::@1 test_16u::@3 test_16u::@4 +test_16u::@7 dominated by main main::@1 main::@2 @begin @13 test_16u test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@1 test_16u::@3 test_16u::@4 +test_16u::@8 dominated by main main::@1 main::@2 @begin @13 test_16u test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@1 test_16u::@3 test_16u::@4 +test_16u::@9 dominated by main main::@1 main::@2 @begin @13 test_16u test_16u::@9 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@1 test_16u::@3 test_16u::@4 +test_16u::@10 dominated by main main::@1 main::@2 @begin test_16u::@10 @13 test_16u test_16u::@9 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@1 test_16u::@3 test_16u::@4 +test_16u::@11 dominated by main main::@1 main::@2 @begin test_16u::@11 test_16u::@10 @13 test_16u test_16u::@9 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@1 test_16u::@3 test_16u::@4 +test_16u::@return dominated by main main::@1 main::@2 @begin test_16u::@return test_16u::@11 test_16u::@10 @13 test_16u test_16u::@9 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@1 test_16u::@3 test_16u::@4 +print_ln dominated by main main::@1 @begin print_ln @13 +print_ln::@1 dominated by print_ln::@1 main main::@1 @begin print_ln @13 +print_ln::@return dominated by print_ln::@1 main print_ln::@return main::@1 @begin print_ln @13 +print_word dominated by main print_word main::@1 main::@2 @begin @13 test_16u test_16u::@1 test_16u::@3 +print_word::@1 dominated by main print_word main::@1 main::@2 @begin print_word::@1 @13 test_16u test_16u::@1 test_16u::@3 +print_word::@return dominated by main print_word main::@1 main::@2 @begin print_word::@return print_word::@1 @13 test_16u test_16u::@1 test_16u::@3 +print_byte dominated by main main::@1 @begin @13 print_byte +print_byte::@1 dominated by main main::@1 @begin print_byte::@1 @13 print_byte +print_byte::@return dominated by main main::@1 @begin print_byte::@return print_byte::@1 @13 print_byte +print_char dominated by main print_char main::@1 @begin @13 print_byte +print_char::@return dominated by main print_char main::@1 print_char::@return @begin @13 print_byte +print_str dominated by main main::@1 @begin @13 print_str +print_str::@1 dominated by main main::@1 @begin print_str::@1 @13 print_str +print_str::@return dominated by main main::@1 @begin print_str::@return print_str::@1 @13 print_str +print_str::@2 dominated by main main::@1 @begin print_str::@1 print_str::@2 @13 print_str +div16u dominated by main main::@1 main::@2 div16u @begin @13 test_16u test_16u::@1 +div16u::@1 dominated by main main::@1 main::@2 div16u @begin div16u::@1 @13 test_16u test_16u::@1 +div16u::@4 dominated by main main::@1 main::@2 div16u @begin div16u::@4 div16u::@1 @13 test_16u test_16u::@1 +div16u::@2 dominated by main main::@1 main::@2 div16u @begin div16u::@2 div16u::@1 @13 test_16u test_16u::@1 +div16u::@5 dominated by main main::@1 main::@2 div16u @begin div16u::@5 div16u::@2 div16u::@1 @13 test_16u test_16u::@1 +div16u::@3 dominated by main main::@1 main::@2 div16u @begin div16u::@3 div16u::@2 div16u::@1 @13 test_16u test_16u::@1 +div16u::@return dominated by main div16u::@return main::@1 main::@2 div16u @begin div16u::@3 div16u::@2 div16u::@1 @13 test_16u test_16u::@1 +test_8u dominated by main main::@1 @begin test_8u @13 +test_8u::@1 dominated by main main::@1 @begin test_8u test_8u::@1 @13 +test_8u::@3 dominated by main main::@1 @begin test_8u test_8u::@3 test_8u::@1 @13 +test_8u::@4 dominated by main main::@1 @begin test_8u test_8u::@3 test_8u::@4 test_8u::@1 @13 +test_8u::@5 dominated by main main::@1 @begin test_8u test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1 @13 +test_8u::@6 dominated by main main::@1 @begin test_8u::@6 test_8u test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1 @13 +test_8u::@7 dominated by main main::@1 @begin test_8u::@6 test_8u::@7 test_8u test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1 @13 +test_8u::@8 dominated by main main::@1 @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1 @13 +test_8u::@9 dominated by main main::@1 @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1 @13 +test_8u::@10 dominated by main main::@1 @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u test_8u::@10 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1 @13 +test_8u::@11 dominated by main main::@1 @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u test_8u::@10 test_8u::@11 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1 @13 +test_8u::@return dominated by main main::@1 @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u test_8u::@10 test_8u::@11 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1 @13 test_8u::@return +test_8u::@12 dominated by main main::@1 @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u test_8u::@10 test_8u::@12 test_8u::@11 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1 @13 +div8u dominated by main main::@1 @begin div8u test_8u test_8u::@1 @13 +div8u::@1 dominated by main main::@1 @begin div8u test_8u test_8u::@1 @13 div8u::@1 +div8u::@4 dominated by main div8u::@4 main::@1 @begin div8u test_8u test_8u::@1 @13 div8u::@1 +div8u::@2 dominated by main div8u::@2 main::@1 @begin div8u test_8u test_8u::@1 @13 div8u::@1 +div8u::@5 dominated by main div8u::@2 div8u::@5 main::@1 @begin div8u test_8u test_8u::@1 @13 div8u::@1 +div8u::@3 dominated by main div8u::@3 div8u::@2 main::@1 @begin div8u test_8u test_8u::@1 @13 div8u::@1 +div8u::@6 dominated by main div8u::@3 div8u::@2 div8u::@6 main::@1 @begin div8u test_8u test_8u::@1 @13 div8u::@1 +div8u::@return dominated by main div8u::@3 div8u::@2 div8u::@6 main::@1 @begin div8u test_8u test_8u::@1 div8u::@return @13 div8u::@1 +print_cls dominated by main @begin @13 print_cls +print_cls::@1 dominated by main @begin @13 print_cls::@1 print_cls +print_cls::@return dominated by main @begin print_cls::@return @13 print_cls::@1 print_cls NATURAL LOOPS -Found back edge: Loop head: main::@1 tails: main::@13 blocks: null +Found back edge: Loop head: test_16u::@1 tails: test_16u::@11 blocks: null Found back edge: Loop head: print_ln::@1 tails: print_ln::@1 blocks: null Found back edge: Loop head: print_str::@1 tails: print_str::@2 blocks: null +Found back edge: Loop head: div16u::@1 tails: div16u::@3 blocks: null +Found back edge: Loop head: test_8u::@1 tails: test_8u::@12 blocks: null Found back edge: Loop head: div8u::@1 tails: div8u::@3 blocks: null Found back edge: Loop head: print_cls::@1 tails: print_cls::@1 blocks: null -Populated: Loop head: main::@1 tails: main::@13 blocks: main::@13 main::@12 main::@11 main::@10 main::@9 main::@8 main::@7 main::@6 main::@5 main::@4 main::@1 +Populated: Loop head: test_16u::@1 tails: test_16u::@11 blocks: test_16u::@11 test_16u::@10 test_16u::@9 test_16u::@8 test_16u::@7 test_16u::@6 test_16u::@5 test_16u::@4 test_16u::@3 test_16u::@1 Populated: Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 Populated: Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 +Populated: Loop head: div16u::@1 tails: div16u::@3 blocks: div16u::@3 div16u::@2 div16u::@5 div16u::@1 div16u::@4 +Populated: Loop head: test_8u::@1 tails: test_8u::@12 blocks: test_8u::@12 test_8u::@11 test_8u::@10 test_8u::@9 test_8u::@8 test_8u::@7 test_8u::@6 test_8u::@5 test_8u::@4 test_8u::@3 test_8u::@1 Populated: Loop head: div8u::@1 tails: div8u::@3 blocks: div8u::@3 div8u::@2 div8u::@5 div8u::@1 div8u::@4 Populated: Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 -Loop head: main::@1 tails: main::@13 blocks: main::@13 main::@12 main::@11 main::@10 main::@9 main::@8 main::@7 main::@6 main::@5 main::@4 main::@1 +Loop head: test_16u::@1 tails: test_16u::@11 blocks: test_16u::@11 test_16u::@10 test_16u::@9 test_16u::@8 test_16u::@7 test_16u::@6 test_16u::@5 test_16u::@4 test_16u::@3 test_16u::@1 Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 +Loop head: div16u::@1 tails: div16u::@3 blocks: div16u::@3 div16u::@2 div16u::@5 div16u::@1 div16u::@4 +Loop head: test_8u::@1 tails: test_8u::@12 blocks: test_8u::@12 test_8u::@11 test_8u::@10 test_8u::@9 test_8u::@8 test_8u::@7 test_8u::@6 test_8u::@5 test_8u::@4 test_8u::@3 test_8u::@1 Loop head: div8u::@1 tails: div8u::@3 blocks: div8u::@3 div8u::@2 div8u::@5 div8u::@1 div8u::@4 Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 NATURAL LOOPS WITH DEPTH Found 0 loops in scope [] -Found 1 loops in scope [main] - Loop head: main::@1 tails: main::@13 blocks: main::@13 main::@12 main::@11 main::@10 main::@9 main::@8 main::@7 main::@6 main::@5 main::@4 main::@1 +Found 0 loops in scope [main] Found 1 loops in scope [print_cls] Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 +Found 1 loops in scope [test_8u] + Loop head: test_8u::@1 tails: test_8u::@12 blocks: test_8u::@12 test_8u::@11 test_8u::@10 test_8u::@9 test_8u::@8 test_8u::@7 test_8u::@6 test_8u::@5 test_8u::@4 test_8u::@3 test_8u::@1 +Found 1 loops in scope [test_16u] + Loop head: test_16u::@1 tails: test_16u::@11 blocks: test_16u::@11 test_16u::@10 test_16u::@9 test_16u::@8 test_16u::@7 test_16u::@6 test_16u::@5 test_16u::@4 test_16u::@3 test_16u::@1 Found 1 loops in scope [div8u] Loop head: div8u::@1 tails: div8u::@3 blocks: div8u::@3 div8u::@2 div8u::@5 div8u::@1 div8u::@4 Found 0 loops in scope [print_byte] @@ -1912,10 +3137,15 @@ Found 1 loops in scope [print_str] Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 Found 1 loops in scope [print_ln] Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 +Found 1 loops in scope [div16u] + Loop head: div16u::@1 tails: div16u::@3 blocks: div16u::@3 div16u::@2 div16u::@5 div16u::@1 div16u::@4 +Found 0 loops in scope [print_word] Found 0 loops in scope [print_char] -Loop head: main::@1 tails: main::@13 blocks: main::@13 main::@12 main::@11 main::@10 main::@9 main::@8 main::@7 main::@6 main::@5 main::@4 main::@1 depth: 1 +Loop head: test_16u::@1 tails: test_16u::@11 blocks: test_16u::@11 test_16u::@10 test_16u::@9 test_16u::@8 test_16u::@7 test_16u::@6 test_16u::@5 test_16u::@4 test_16u::@3 test_16u::@1 depth: 1 Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 depth: 2 Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 depth: 2 +Loop head: div16u::@1 tails: div16u::@3 blocks: div16u::@3 div16u::@2 div16u::@5 div16u::@1 div16u::@4 depth: 2 +Loop head: test_8u::@1 tails: test_8u::@12 blocks: test_8u::@12 test_8u::@11 test_8u::@10 test_8u::@9 test_8u::@8 test_8u::@7 test_8u::@6 test_8u::@5 test_8u::@4 test_8u::@3 test_8u::@1 depth: 1 Loop head: div8u::@1 tails: div8u::@3 blocks: div8u::@3 div8u::@2 div8u::@5 div8u::@1 div8u::@4 depth: 2 Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 depth: 1 @@ -1923,12 +3153,40 @@ Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 depth: 1 VARIABLE REGISTER WEIGHTS (byte*) char_cursor (byte*) char_cursor#1 101.0 -(byte*) char_cursor#2 33.8 -(byte*) char_cursor#27 4.0 -(byte*) char_cursor#28 5.349999999999999 -(byte*) char_cursor#41 15.333333333333332 -(byte*) char_cursor#42 2.4444444444444446 -(byte*~) char_cursor#48 22.0 +(byte*) char_cursor#11 3.40625 +(byte*) char_cursor#2 23.1875 +(byte*) char_cursor#45 4.0 +(byte*) char_cursor#71 23.0 +(byte*) char_cursor#72 16.666666666666664 +(byte*) char_cursor#75 2.4444444444444446 +(byte*~) char_cursor#84 22.0 +(byte*~) char_cursor#98 22.0 +(word()) div16u((word) div16u::dividend , (word) div16u::divisor) +(byte~) div16u::$1 202.0 +(byte~) div16u::$2 202.0 +(word) div16u::dividend +(word) div16u::dividend#0 4.333333333333333 +(word) div16u::dividend#1 25.25 +(word) div16u::dividend#2 43.57142857142858 +(word) div16u::divisor +(word) div16u::divisor#0 12.529411764705884 +(byte) div16u::i +(byte) div16u::i#1 151.5 +(byte) div16u::i#2 15.538461538461538 +(word) div16u::quotient +(word) div16u::quotient#1 151.5 +(word) div16u::quotient#2 101.0 +(word) div16u::quotient#3 25.25 +(word) div16u::rem +(word) div16u::rem#1 75.75 +(word) div16u::rem#2 202.0 +(word) div16u::rem#3 202.0 +(word) div16u::rem#4 202.0 +(word) div16u::rem#5 101.0 +(word) div16u::rem#8 12.5 +(word) div16u::return +(word) div16u::return#0 22.0 +(word) div16u::return#1 62.8 (byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor , (byte*) div8u::remainder) (byte~) div8u::$1 202.0 (byte) div8u::dividend @@ -1956,31 +3214,22 @@ VARIABLE REGISTER WEIGHTS (byte) div8u::return#0 22.0 (byte) div8u::return#1 52.33333333333333 (byte*) line_cursor -(byte*) line_cursor#1 46.42857142857143 -(byte*) line_cursor#13 0.5416666666666666 -(byte*) line_cursor#6 204.0 +(byte*) line_cursor#1 9.131578947368421 +(byte*) line_cursor#11 204.0 +(byte*) line_cursor#22 24.0 +(byte*) line_cursor#25 0.9565217391304348 (void()) main() -(byte) main::dividend -(byte) main::dividend#0 4.714285714285714 -(byte[]) main::dividends -(byte) main::divisor -(byte) main::divisor#0 3.3000000000000003 -(byte[]) main::divisors -(byte) main::i -(byte) main::i#1 11.0 -(byte) main::i#10 1.8333333333333333 -(byte*) main::rem -(byte) main::res -(byte) main::res#0 2.4444444444444446 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 4.0 (byte~) print_byte::$2 4.0 (byte) print_byte::b -(byte) print_byte::b#0 22.0 -(byte) print_byte::b#1 22.0 +(byte) print_byte::b#0 4.0 +(byte) print_byte::b#1 4.0 (byte) print_byte::b#2 22.0 (byte) print_byte::b#3 22.0 -(byte) print_byte::b#4 12.0 +(byte) print_byte::b#4 22.0 +(byte) print_byte::b#5 22.0 +(byte) print_byte::b#6 13.0 (byte[]) print_byte::hextab (void()) print_char((byte) print_char::ch) (byte) print_char::ch @@ -1995,68 +3244,141 @@ VARIABLE REGISTER WEIGHTS (void()) print_str((byte*) print_str::str) (byte*) print_str::str (byte*) print_str::str#0 202.0 -(byte*) print_str::str#4 101.5 -(byte*) print_str::str#6 2.0 +(byte*) print_str::str#7 101.5 +(byte*) print_str::str#9 2.0 +(void()) print_word((word) print_word::w) +(word) print_word::w +(word) print_word::w#0 11.0 +(word) print_word::w#1 22.0 +(word) print_word::w#2 22.0 +(word) print_word::w#3 22.0 +(word) print_word::w#4 15.999999999999998 +(word) rem16u +(word) rem16u#16 110.0 +(void()) test_16u() +(word) test_16u::dividend +(word) test_16u::dividend#0 4.714285714285714 +(word[]) test_16u::dividends +(word) test_16u::divisor +(word) test_16u::divisor#0 3.0 +(word[]) test_16u::divisors +(byte) test_16u::i +(byte) test_16u::i#1 16.5 +(byte) test_16u::i#10 1.76 +(word) test_16u::res +(word) test_16u::res#0 2.2 +(void()) test_8u() +(byte) test_8u::dividend +(byte) test_8u::dividend#0 4.714285714285714 +(byte[]) test_8u::dividends +(byte) test_8u::divisor +(byte) test_8u::divisor#0 3.3000000000000003 +(byte[]) test_8u::divisors +(byte) test_8u::i +(byte) test_8u::i#1 11.0 +(byte) test_8u::i#10 1.8333333333333333 +(byte*) test_8u::rem +(byte) test_8u::res +(byte) test_8u::res#0 2.4444444444444446 Initial phi equivalence classes -[ main::i#10 main::i#1 ] -[ line_cursor#6 line_cursor#13 line_cursor#1 ] -[ print_byte::b#4 print_byte::b#3 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +[ test_16u::i#10 test_16u::i#1 ] +[ line_cursor#11 line_cursor#22 line_cursor#1 line_cursor#25 ] +[ print_word::w#4 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 ] +[ 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 ] [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -[ char_cursor#27 char_cursor#41 char_cursor#2 char_cursor#42 char_cursor#48 char_cursor#28 char_cursor#1 ] -[ print_str::str#4 print_str::str#6 print_str::str#0 ] +[ 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 ] +[ print_str::str#7 print_str::str#9 print_str::str#0 ] +[ div16u::rem#4 rem16u#16 div16u::rem#8 div16u::rem#5 div16u::rem#1 div16u::rem#2 div16u::rem#3 ] +[ div16u::dividend#2 div16u::dividend#0 div16u::dividend#1 ] +[ div16u::quotient#3 div16u::return#1 div16u::quotient#1 div16u::quotient#2 ] +[ div16u::i#2 div16u::i#1 ] +[ test_8u::i#10 test_8u::i#1 ] [ div8u::rem#4 div8u::rem#8 div8u::rem#5 div8u::rem#1 div8u::rem#2 div8u::rem#3 ] [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] [ div8u::i#2 div8u::i#1 ] [ print_cls::sc#2 print_cls::sc#1 ] -Added variable main::dividend#0 to zero page equivalence class [ main::dividend#0 ] -Added variable main::divisor#0 to zero page equivalence class [ main::divisor#0 ] -Added variable div8u::divisor#0 to zero page equivalence class [ div8u::divisor#0 ] -Added variable div8u::return#0 to zero page equivalence class [ div8u::return#0 ] -Added variable main::res#0 to zero page equivalence class [ main::res#0 ] +Added variable test_16u::dividend#0 to zero page equivalence class [ test_16u::dividend#0 ] +Added variable test_16u::divisor#0 to zero page equivalence class [ test_16u::divisor#0 ] +Added variable div16u::divisor#0 to zero page equivalence class [ div16u::divisor#0 ] +Added variable div16u::return#0 to zero page equivalence class [ div16u::return#0 ] +Added variable test_16u::res#0 to zero page equivalence class [ test_16u::res#0 ] Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ] Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ] +Added variable div16u::$1 to zero page equivalence class [ div16u::$1 ] +Added variable div16u::$2 to zero page equivalence class [ div16u::$2 ] +Added variable test_8u::dividend#0 to zero page equivalence class [ test_8u::dividend#0 ] +Added variable test_8u::divisor#0 to zero page equivalence class [ test_8u::divisor#0 ] +Added variable div8u::divisor#0 to zero page equivalence class [ div8u::divisor#0 ] +Added variable div8u::return#0 to zero page equivalence class [ div8u::return#0 ] +Added variable test_8u::res#0 to zero page equivalence class [ test_8u::res#0 ] Added variable div8u::$1 to zero page equivalence class [ div8u::$1 ] Complete equivalence classes -[ main::i#10 main::i#1 ] -[ line_cursor#6 line_cursor#13 line_cursor#1 ] -[ print_byte::b#4 print_byte::b#3 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +[ test_16u::i#10 test_16u::i#1 ] +[ line_cursor#11 line_cursor#22 line_cursor#1 line_cursor#25 ] +[ print_word::w#4 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 ] +[ 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 ] [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -[ char_cursor#27 char_cursor#41 char_cursor#2 char_cursor#42 char_cursor#48 char_cursor#28 char_cursor#1 ] -[ print_str::str#4 print_str::str#6 print_str::str#0 ] +[ 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 ] +[ print_str::str#7 print_str::str#9 print_str::str#0 ] +[ div16u::rem#4 rem16u#16 div16u::rem#8 div16u::rem#5 div16u::rem#1 div16u::rem#2 div16u::rem#3 ] +[ div16u::dividend#2 div16u::dividend#0 div16u::dividend#1 ] +[ div16u::quotient#3 div16u::return#1 div16u::quotient#1 div16u::quotient#2 ] +[ div16u::i#2 div16u::i#1 ] +[ test_8u::i#10 test_8u::i#1 ] [ div8u::rem#4 div8u::rem#8 div8u::rem#5 div8u::rem#1 div8u::rem#2 div8u::rem#3 ] [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] [ div8u::i#2 div8u::i#1 ] [ print_cls::sc#2 print_cls::sc#1 ] -[ main::dividend#0 ] -[ main::divisor#0 ] -[ div8u::divisor#0 ] -[ div8u::return#0 ] -[ main::res#0 ] +[ test_16u::dividend#0 ] +[ test_16u::divisor#0 ] +[ div16u::divisor#0 ] +[ div16u::return#0 ] +[ test_16u::res#0 ] [ print_byte::$0 ] [ print_byte::$2 ] +[ div16u::$1 ] +[ div16u::$2 ] +[ test_8u::dividend#0 ] +[ test_8u::divisor#0 ] +[ div8u::divisor#0 ] +[ div8u::return#0 ] +[ test_8u::res#0 ] [ div8u::$1 ] -Allocated zp ZP_BYTE:2 [ main::i#10 main::i#1 ] -Allocated zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ] -Allocated zp ZP_BYTE:5 [ print_byte::b#4 print_byte::b#3 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] -Allocated zp ZP_BYTE:6 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Allocated zp ZP_WORD:7 [ char_cursor#27 char_cursor#41 char_cursor#2 char_cursor#42 char_cursor#48 char_cursor#28 char_cursor#1 ] -Allocated zp ZP_WORD:9 [ print_str::str#4 print_str::str#6 print_str::str#0 ] -Allocated zp ZP_BYTE:11 [ div8u::rem#4 div8u::rem#8 div8u::rem#5 div8u::rem#1 div8u::rem#2 div8u::rem#3 ] -Allocated zp ZP_BYTE:12 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] -Allocated zp ZP_BYTE:13 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] -Allocated zp ZP_BYTE:14 [ div8u::i#2 div8u::i#1 ] -Allocated zp ZP_WORD:15 [ print_cls::sc#2 print_cls::sc#1 ] -Allocated zp ZP_BYTE:17 [ main::dividend#0 ] -Allocated zp ZP_BYTE:18 [ main::divisor#0 ] -Allocated zp ZP_BYTE:19 [ div8u::divisor#0 ] -Allocated zp ZP_BYTE:20 [ div8u::return#0 ] -Allocated zp ZP_BYTE:21 [ main::res#0 ] -Allocated zp ZP_BYTE:22 [ print_byte::$0 ] -Allocated zp ZP_BYTE:23 [ print_byte::$2 ] -Allocated zp ZP_BYTE:24 [ div8u::$1 ] +Allocated zp ZP_BYTE:2 [ test_16u::i#10 test_16u::i#1 ] +Allocated zp ZP_WORD:3 [ line_cursor#11 line_cursor#22 line_cursor#1 line_cursor#25 ] +Allocated zp ZP_WORD:5 [ print_word::w#4 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 ] +Allocated zp ZP_BYTE:7 [ 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 ] +Allocated zp ZP_BYTE:8 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Allocated 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 ] +Allocated zp ZP_WORD:11 [ print_str::str#7 print_str::str#9 print_str::str#0 ] +Allocated zp ZP_WORD:13 [ div16u::rem#4 rem16u#16 div16u::rem#8 div16u::rem#5 div16u::rem#1 div16u::rem#2 div16u::rem#3 ] +Allocated zp ZP_WORD:15 [ div16u::dividend#2 div16u::dividend#0 div16u::dividend#1 ] +Allocated zp ZP_WORD:17 [ div16u::quotient#3 div16u::return#1 div16u::quotient#1 div16u::quotient#2 ] +Allocated zp ZP_BYTE:19 [ div16u::i#2 div16u::i#1 ] +Allocated zp ZP_BYTE:20 [ test_8u::i#10 test_8u::i#1 ] +Allocated zp ZP_BYTE:21 [ div8u::rem#4 div8u::rem#8 div8u::rem#5 div8u::rem#1 div8u::rem#2 div8u::rem#3 ] +Allocated zp ZP_BYTE:22 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] +Allocated zp ZP_BYTE:23 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] +Allocated zp ZP_BYTE:24 [ div8u::i#2 div8u::i#1 ] +Allocated zp ZP_WORD:25 [ print_cls::sc#2 print_cls::sc#1 ] +Allocated zp ZP_WORD:27 [ test_16u::dividend#0 ] +Allocated zp ZP_WORD:29 [ test_16u::divisor#0 ] +Allocated zp ZP_WORD:31 [ div16u::divisor#0 ] +Allocated zp ZP_WORD:33 [ div16u::return#0 ] +Allocated zp ZP_WORD:35 [ test_16u::res#0 ] +Allocated zp ZP_BYTE:37 [ print_byte::$0 ] +Allocated zp ZP_BYTE:38 [ print_byte::$2 ] +Allocated zp ZP_BYTE:39 [ div16u::$1 ] +Allocated zp ZP_BYTE:40 [ div16u::$2 ] +Allocated zp ZP_BYTE:41 [ test_8u::dividend#0 ] +Allocated zp ZP_BYTE:42 [ test_8u::divisor#0 ] +Allocated zp ZP_BYTE:43 [ div8u::divisor#0 ] +Allocated zp ZP_BYTE:44 [ div8u::return#0 ] +Allocated zp ZP_BYTE:45 [ test_8u::res#0 ] +Allocated zp ZP_BYTE:46 [ div8u::$1 ] INITIAL ASM //SEG0 Basic Upstart @@ -2064,219 +3386,261 @@ INITIAL ASM :BasicUpstart(main) .pc = $80d "Program" //SEG1 Global Constants & labels - .label char_cursor = 7 + .label char_cursor = 9 .label line_cursor = 3 + .label rem16u = $d //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @10 [phi:@begin->@10] -b10_from_bbegin: - jmp b10 -//SEG4 @10 -b10: +//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] +b13_from_bbegin: + jmp b13 +//SEG4 @13 +b13: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @10 to main [phi:@10->main] -main_from_b10: +//SEG6 [4] phi from @13 to main [phi:@13->main] +main_from_b13: jsr main -//SEG7 [3] phi from @10 to @end [phi:@10->@end] -bend_from_b10: +//SEG7 [3] phi from @13 to @end [phi:@13->@end] +bend_from_b13: jmp bend //SEG8 @end bend: //SEG9 main main: { - .label rem = $ff - .label dividend = $11 - .label divisor = $12 - .label res = $15 - .label i = 2 //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] ) - //SEG11 [75] phi from main to print_cls [phi:main->print_cls] + //SEG11 [133] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG13 [6] phi (byte*) line_cursor#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 - lda #<$400 - sta line_cursor - lda #>$400 - sta line_cursor+1 - //SEG14 [6] phi (byte*) char_cursor#42 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 - lda #<$400 - sta char_cursor - lda #>$400 - sta char_cursor+1 - //SEG15 [6] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1 + jmp b1 + //SEG13 main::@1 + b1: + //SEG14 [7] call test_8u param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + //SEG15 [87] phi from main::@1 to test_8u [phi:main::@1->test_8u] + test_8u_from_b1: + jsr test_8u + //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + b2_from_b1: + jmp b2 + //SEG17 main::@2 + b2: + //SEG18 [9] call test_16u param-assignment [ ] ( main:2 [ ] ) + //SEG19 [11] phi from main::@2 to test_16u [phi:main::@2->test_16u] + test_16u_from_b2: + jsr test_16u + jmp breturn + //SEG20 main::@return + breturn: + //SEG21 [10] return [ ] ( main:2 [ ] ) + rts +} +//SEG22 test_16u +test_16u: { + .label dividend = $1b + .label divisor = $1d + .label res = $23 + .label i = 2 + //SEG23 [12] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] + b1_from_test_16u: + //SEG24 [12] phi (word) rem16u#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vwuz1=vbuc1 + lda #0 + sta rem16u + lda #0 + sta rem16u+1 + //SEG25 [12] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG16 main::@1 + //SEG26 [12] phi from test_16u::@11 to test_16u::@1 [phi:test_16u::@11->test_16u::@1] + b1_from_b11: + //SEG27 [12] phi (word) rem16u#16 = (word) div16u::rem#8 [phi:test_16u::@11->test_16u::@1#0] -- register_copy + //SEG28 [12] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@11->test_16u::@1#1] -- register_copy + jmp b1 + //SEG29 test_16u::@1 b1: - //SEG17 [7] (byte) main::dividend#0 ← *((const byte[]) main::dividends#0 + (byte) main::i#10) [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG30 [13] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) [ test_16u::i#10 test_16u::dividend#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 line_cursor#1 ] ) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG18 [8] (byte) main::divisor#0 ← *((const byte[]) main::divisors#0 + (byte) main::i#10) [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + lda dividends+1,y + sta dividend+1 + //SEG31 [14] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 ] ) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor - //SEG19 [9] (byte) div8u::dividend#0 ← (byte) main::dividend#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 ] ) -- vbuz1=vbuz2 + lda divisors+1,y + sta divisor+1 + //SEG32 [15] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 line_cursor#1 ] ) -- vwuz1=vwuz2 lda dividend - sta div8u.dividend - //SEG20 [10] (byte) div8u::divisor#0 ← (byte) main::divisor#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ) -- vbuz1=vbuz2 + sta div16u.dividend + lda dividend+1 + sta div16u.dividend+1 + //SEG33 [16] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 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#0 div16u::divisor#0 line_cursor#1 ] ) -- vwuz1=vwuz2 lda divisor - sta div8u.divisor - //SEG21 [11] call div8u param-assignment [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ) - //SEG22 [58] phi from main::@1 to div8u [phi:main::@1->div8u] - div8u_from_b1: - jsr div8u - //SEG23 [12] (byte) div8u::return#0 ← (byte) div8u::return#1 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#0 ] ) -- vbuz1=vbuz2 - lda div8u.return_1 - sta div8u.return - jmp b4 - //SEG24 main::@4 - b4: - //SEG25 [13] (byte) main::res#0 ← (byte) div8u::return#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 main::res#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 main::res#0 ] ) -- vbuz1=vbuz2 - lda div8u.return + sta div16u.divisor + lda divisor+1 + sta div16u.divisor+1 + //SEG34 [17] call div16u param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#1 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#1 line_cursor#1 ] ) + //SEG35 [70] phi from test_16u::@1 to div16u [phi:test_16u::@1->div16u] + div16u_from_b1: + jsr div16u + //SEG36 [18] (word) div16u::return#0 ← (word) div16u::return#1 [ 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 ] ) -- vwuz1=vwuz2 + lda div16u.return_1 + sta div16u.return + lda div16u.return_1+1 + sta div16u.return+1 + jmp b3 + //SEG37 test_16u::@3 + b3: + //SEG38 [19] (word) test_16u::res#0 ← (word) div16u::return#0 [ 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 ] ) -- vwuz1=vwuz2 + lda div16u.return sta res - //SEG26 [14] (byte) print_byte::b#0 ← (byte) main::dividend#0 [ main::i#10 char_cursor#42 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#0 ] ) -- vbuz1=vbuz2 + lda div16u.return+1 + sta res+1 + //SEG39 [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 ] ) -- vwuz1=vwuz2 lda dividend - sta print_byte.b - //SEG27 [15] call print_byte param-assignment [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] ) - //SEG28 [39] phi from main::@4 to print_byte [phi:main::@4->print_byte] - print_byte_from_b4: - //SEG29 [39] phi (byte*) char_cursor#41 = (byte*) char_cursor#42 [phi:main::@4->print_byte#0] -- register_copy - //SEG30 [39] phi (byte) print_byte::b#4 = (byte) print_byte::b#0 [phi:main::@4->print_byte#1] -- register_copy - jsr print_byte - //SEG31 [16] phi from main::@4 to main::@5 [phi:main::@4->main::@5] - b5_from_b4: - jmp b5 - //SEG32 main::@5 - b5: - //SEG33 [17] call print_str param-assignment [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] ) - //SEG34 [51] phi from main::@5 to print_str [phi:main::@5->print_str] - print_str_from_b5: - //SEG35 [51] phi (byte*) print_str::str#6 = (const string) main::str [phi:main::@5->print_str#0] -- pbuz1=pbuc1 + sta print_word.w + lda dividend+1 + sta print_word.w+1 + //SEG40 [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 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG41 [22] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] ) + //SEG42 [45] phi from test_16u::@3 to print_word [phi:test_16u::@3->print_word] + print_word_from_b3: + //SEG43 [45] phi (byte*) char_cursor#71 = (byte*~) char_cursor#84 [phi:test_16u::@3->print_word#0] -- register_copy + //SEG44 [45] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:test_16u::@3->print_word#1] -- register_copy + jsr print_word + //SEG45 [23] phi from test_16u::@3 to test_16u::@4 [phi:test_16u::@3->test_16u::@4] + b4_from_b3: + jmp b4 + //SEG46 test_16u::@4 + b4: + //SEG47 [24] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] ) + //SEG48 [63] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str] + print_str_from_b4: + //SEG49 [63] phi (byte*) print_str::str#9 = (const string) test_16u::str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - jmp b6 - //SEG36 main::@6 - b6: - //SEG37 [18] (byte) print_byte::b#1 ← (byte) main::divisor#0 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#1 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#1 char_cursor#2 ] ) -- vbuz1=vbuz2 + jmp b5 + //SEG50 test_16u::@5 + b5: + //SEG51 [25] (word) print_word::w#1 ← (word) test_16u::divisor#0 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#1 char_cursor#2 ] ) -- vwuz1=vwuz2 lda divisor - sta print_byte.b - //SEG38 [19] call print_byte param-assignment [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] ) - //SEG39 [39] phi from main::@6 to print_byte [phi:main::@6->print_byte] - print_byte_from_b6: - //SEG40 [39] phi (byte*) char_cursor#41 = (byte*) char_cursor#2 [phi:main::@6->print_byte#0] -- register_copy - //SEG41 [39] phi (byte) print_byte::b#4 = (byte) print_byte::b#1 [phi:main::@6->print_byte#1] -- register_copy - jsr print_byte - //SEG42 [20] phi from main::@6 to main::@7 [phi:main::@6->main::@7] - b7_from_b6: - jmp b7 - //SEG43 main::@7 - b7: - //SEG44 [21] call print_str param-assignment [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] ) - //SEG45 [51] phi from main::@7 to print_str [phi:main::@7->print_str] - print_str_from_b7: - //SEG46 [51] phi (byte*) print_str::str#6 = (const string) main::str1 [phi:main::@7->print_str#0] -- pbuz1=pbuc1 + sta print_word.w + lda divisor+1 + sta print_word.w+1 + //SEG52 [26] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] ) + //SEG53 [45] phi from test_16u::@5 to print_word [phi:test_16u::@5->print_word] + print_word_from_b5: + //SEG54 [45] phi (byte*) char_cursor#71 = (byte*) char_cursor#2 [phi:test_16u::@5->print_word#0] -- register_copy + //SEG55 [45] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:test_16u::@5->print_word#1] -- register_copy + jsr print_word + //SEG56 [27] phi from test_16u::@5 to test_16u::@6 [phi:test_16u::@5->test_16u::@6] + b6_from_b5: + jmp b6 + //SEG57 test_16u::@6 + b6: + //SEG58 [28] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] ) + //SEG59 [63] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str] + print_str_from_b6: + //SEG60 [63] phi (byte*) print_str::str#9 = (const string) test_16u::str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - jmp b8 - //SEG47 main::@8 - b8: - //SEG48 [22] (byte) print_byte::b#2 ← (byte) main::res#0 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#2 ] ) -- vbuz1=vbuz2 + jmp b7 + //SEG61 test_16u::@7 + b7: + //SEG62 [29] (word) print_word::w#2 ← (word) test_16u::res#0 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#2 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#2 char_cursor#2 ] ) -- vwuz1=vwuz2 lda res - sta print_byte.b - //SEG49 [23] call print_byte param-assignment [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - //SEG50 [39] phi from main::@8 to print_byte [phi:main::@8->print_byte] - print_byte_from_b8: - //SEG51 [39] phi (byte*) char_cursor#41 = (byte*) char_cursor#2 [phi:main::@8->print_byte#0] -- register_copy - //SEG52 [39] phi (byte) print_byte::b#4 = (byte) print_byte::b#2 [phi:main::@8->print_byte#1] -- register_copy - jsr print_byte - //SEG53 [24] phi from main::@8 to main::@9 [phi:main::@8->main::@9] - b9_from_b8: - jmp b9 - //SEG54 main::@9 - b9: - //SEG55 [25] call print_str param-assignment [ main::i#10 line_cursor#13 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#2 ] ) - //SEG56 [51] phi from main::@9 to print_str [phi:main::@9->print_str] - print_str_from_b9: - //SEG57 [51] phi (byte*) print_str::str#6 = (const string) main::str2 [phi:main::@9->print_str#0] -- pbuz1=pbuc1 + sta print_word.w + lda res+1 + sta print_word.w+1 + //SEG63 [30] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + //SEG64 [45] phi from test_16u::@7 to print_word [phi:test_16u::@7->print_word] + print_word_from_b7: + //SEG65 [45] phi (byte*) char_cursor#71 = (byte*) char_cursor#2 [phi:test_16u::@7->print_word#0] -- register_copy + //SEG66 [45] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:test_16u::@7->print_word#1] -- register_copy + jsr print_word + //SEG67 [31] phi from test_16u::@7 to test_16u::@8 [phi:test_16u::@7->test_16u::@8] + b8_from_b7: + jmp b8 + //SEG68 test_16u::@8 + b8: + //SEG69 [32] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] ) + //SEG70 [63] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str] + print_str_from_b8: + //SEG71 [63] phi (byte*) print_str::str#9 = (const string) test_16u::str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str + jmp b9 + //SEG72 test_16u::@9 + b9: + //SEG73 [33] (word) print_word::w#3 ← (word) div16u::rem#8 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#3 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#3 char_cursor#2 ] ) -- vwuz1=vwuz2 + lda div16u.rem + sta print_word.w + lda div16u.rem+1 + sta print_word.w+1 + //SEG74 [34] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + //SEG75 [45] phi from test_16u::@9 to print_word [phi:test_16u::@9->print_word] + print_word_from_b9: + //SEG76 [45] phi (byte*) char_cursor#71 = (byte*) char_cursor#2 [phi:test_16u::@9->print_word#0] -- register_copy + //SEG77 [45] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:test_16u::@9->print_word#1] -- register_copy + jsr print_word + //SEG78 [35] phi from test_16u::@9 to test_16u::@10 [phi:test_16u::@9->test_16u::@10] + b10_from_b9: jmp b10 - //SEG58 main::@10 + //SEG79 test_16u::@10 b10: - //SEG59 [26] (byte) print_byte::b#3 ← *((const byte*) main::rem#0) [ main::i#10 line_cursor#13 print_byte::b#3 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 print_byte::b#3 char_cursor#2 ] ) -- vbuz1=_deref_pbuc1 - lda rem - sta print_byte.b - //SEG60 [27] call print_byte param-assignment [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - //SEG61 [39] phi from main::@10 to print_byte [phi:main::@10->print_byte] - print_byte_from_b10: - //SEG62 [39] phi (byte*) char_cursor#41 = (byte*) char_cursor#2 [phi:main::@10->print_byte#0] -- register_copy - //SEG63 [39] phi (byte) print_byte::b#4 = (byte) print_byte::b#3 [phi:main::@10->print_byte#1] -- register_copy - jsr print_byte - //SEG64 [28] phi from main::@10 to main::@11 [phi:main::@10->main::@11] - b11_from_b10: - jmp b11 - //SEG65 main::@11 - b11: - //SEG66 [29] call print_ln param-assignment [ main::i#10 line_cursor#1 ] ( main:2 [ main::i#10 line_cursor#1 ] ) - //SEG67 [34] phi from main::@11 to print_ln [phi:main::@11->print_ln] - print_ln_from_b11: + //SEG80 [36] call print_ln param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] ) + //SEG81 [40] phi from test_16u::@10 to print_ln [phi:test_16u::@10->print_ln] + print_ln_from_b10: + //SEG82 [40] phi (byte*) line_cursor#22 = (byte*) line_cursor#1 [phi:test_16u::@10->print_ln#0] -- register_copy jsr print_ln - jmp b12 - //SEG68 main::@12 - b12: - //SEG69 [30] (byte) main::i#1 ← ++ (byte) main::i#10 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1=_inc_vbuz1 - inc i - //SEG70 [31] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto main::@13 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + jmp b11 + //SEG83 test_16u::@11 + b11: + //SEG84 [37] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 + lda #2 + clc + adc i + sta i + //SEG85 [38] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i - cmp #6 - bne b13 + cmp #$c + bne b1_from_b11 jmp breturn - //SEG71 main::@return + //SEG86 test_16u::@return breturn: - //SEG72 [32] return [ ] ( main:2 [ ] ) + //SEG87 [39] return [ ] ( main:2::test_16u:9 [ ] ) rts - //SEG73 main::@13 - b13: - //SEG74 [33] (byte*~) char_cursor#48 ← (byte*) line_cursor#1 [ main::i#1 char_cursor#48 line_cursor#1 ] ( main:2 [ main::i#1 char_cursor#48 line_cursor#1 ] ) -- pbuz1=pbuz2 - lda line_cursor - sta char_cursor - lda line_cursor+1 - sta char_cursor+1 - //SEG75 [6] phi from main::@13 to main::@1 [phi:main::@13->main::@1] - b1_from_b13: - //SEG76 [6] phi (byte*) line_cursor#13 = (byte*) line_cursor#1 [phi:main::@13->main::@1#0] -- register_copy - //SEG77 [6] phi (byte*) char_cursor#42 = (byte*~) char_cursor#48 [phi:main::@13->main::@1#1] -- register_copy - //SEG78 [6] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@13->main::@1#2] -- register_copy - jmp b1 str: .text " / @" str1: .text " = @" str2: .text " @" - dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff - divisors: .byte 5, 7, $b, $d, $11, $13 + dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff + divisors: .word 5, 7, $b, $d, $11, $13 } -//SEG79 print_ln +//SEG88 print_ln print_ln: { - //SEG80 [35] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG89 [41] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] b1_from_print_ln: b1_from_b1: - //SEG81 [35] phi (byte*) line_cursor#6 = (byte*) line_cursor#13 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG90 [41] phi (byte*) line_cursor#11 = (byte*) line_cursor#22 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG82 print_ln::@1 + //SEG91 print_ln::@1 b1: - //SEG83 [36] (byte*) line_cursor#1 ← (byte*) line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 char_cursor#28 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG92 [42] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 char_cursor#11 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda line_cursor clc adc #$28 @@ -2284,7 +3648,7 @@ print_ln: { bcc !+ inc line_cursor+1 !: - //SEG84 [37] if((byte*) line_cursor#1<(byte*) char_cursor#28) goto print_ln::@1 [ line_cursor#1 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 char_cursor#28 ] ) -- pbuz1_lt_pbuz2_then_la1 + //SEG93 [43] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 char_cursor#11 ] ) -- pbuz1_lt_pbuz2_then_la1 lda line_cursor+1 cmp char_cursor+1 bcc b1_from_b1 @@ -2294,239 +3658,567 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG85 print_ln::@return + //SEG94 print_ln::@return breturn: - //SEG86 [38] return [ line_cursor#1 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 ] ) + //SEG95 [44] return [ line_cursor#1 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 ] ) rts } -//SEG87 print_byte +//SEG96 print_word +print_word: { + .label w = 5 + //SEG97 [46] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_word::w#4 char_cursor#71 print_byte::b#0 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] ) -- vbuz1=_hi_vwuz2 + lda w+1 + sta print_byte.b + //SEG98 [47] call print_byte param-assignment [ char_cursor#11 print_word::w#4 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_word::w#4 ] ) + //SEG99 [51] phi from print_word to print_byte [phi:print_word->print_byte] + print_byte_from_print_word: + //SEG100 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#71 [phi:print_word->print_byte#0] -- register_copy + //SEG101 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + jsr print_byte + jmp b1 + //SEG102 print_word::@1 + b1: + //SEG103 [48] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#1 ] ) -- vbuz1=_lo_vwuz2 + lda w + sta print_byte.b + //SEG104 [49] call print_byte param-assignment [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + //SEG105 [51] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + print_byte_from_b1: + //SEG106 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG107 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + jsr print_byte + jmp breturn + //SEG108 print_word::@return + breturn: + //SEG109 [50] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + rts +} +//SEG110 print_byte print_byte: { - .label _0 = $16 - .label _2 = $17 - .label b = 5 - //SEG88 [40] (byte~) print_byte::$0 ← (byte) print_byte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#4 char_cursor#41 print_byte::$0 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_byte::$0 ] ) -- vbuz1=vbuz2_ror_4 + .label _0 = $25 + .label _2 = $26 + .label b = 7 + //SEG111 [52] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 char_cursor#72 print_byte::$0 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_byte::$0 ] ) -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG89 [41] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#4 char_cursor#41 print_char::ch#0 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG112 [53] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#6 char_cursor#72 print_char::ch#0 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda hextab,y sta print_char.ch - //SEG90 [42] call print_char param-assignment [ char_cursor#28 print_byte::b#4 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_byte::b#4 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_byte::b#4 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::b#4 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::b#4 ] ) - //SEG91 [47] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG113 [54] call print_char param-assignment [ char_cursor#11 print_byte::b#6 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::b#6 ] ) + //SEG114 [59] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG92 [47] phi (byte*) char_cursor#27 = (byte*) char_cursor#41 [phi:print_byte->print_char#0] -- register_copy - //SEG93 [47] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG115 [59] phi (byte*) char_cursor#45 = (byte*) char_cursor#72 [phi:print_byte->print_char#0] -- register_copy + //SEG116 [59] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG94 print_byte::@1 + //SEG117 print_byte::@1 b1: - //SEG95 [43] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#28 print_byte::$2 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_byte::$2 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_byte::$2 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::$2 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 + //SEG118 [55] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG96 [44] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#28 print_char::ch#1 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_char::ch#1 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_char::ch#1 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_char::ch#1 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG119 [56] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda hextab,y sta print_char.ch - //SEG97 [45] call print_char param-assignment [ char_cursor#28 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - //SEG98 [47] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG120 [57] call print_char param-assignment [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) + //SEG121 [59] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG99 [47] phi (byte*) char_cursor#27 = (byte*) char_cursor#28 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG100 [47] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG122 [59] phi (byte*) char_cursor#45 = (byte*) char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG123 [59] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG101 print_byte::@return + //SEG124 print_byte::@return breturn: - //SEG102 [46] return [ char_cursor#28 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 ] ) + //SEG125 [58] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) rts hextab: .text "0123456789abcdef" } -//SEG103 print_char +//SEG126 print_char print_char: { - .label ch = 6 - //SEG104 [48] *((byte*) char_cursor#27) ← (byte) print_char::ch#2 [ char_cursor#27 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#27 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#27 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#27 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#27 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#27 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#27 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#27 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#27 ] ) -- _deref_pbuz1=vbuz2 + .label ch = 8 + //SEG127 [60] *((byte*) char_cursor#45) ← (byte) print_char::ch#2 [ char_cursor#45 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#45 ] ) -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (char_cursor),y - //SEG105 [49] (byte*) char_cursor#28 ← ++ (byte*) char_cursor#27 [ char_cursor#28 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] ) -- pbuz1=_inc_pbuz1 + //SEG128 [61] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#45 [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: jmp breturn - //SEG106 print_char::@return + //SEG129 print_char::@return breturn: - //SEG107 [50] return [ char_cursor#28 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] ) + //SEG130 [62] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) rts } -//SEG108 print_str +//SEG131 print_str print_str: { - .label str = 9 - //SEG109 [52] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + .label str = $b + //SEG132 [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: - //SEG110 [52] phi (byte*) char_cursor#2 = (byte*) char_cursor#28 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG111 [52] phi (byte*) print_str::str#4 = (byte*) print_str::str#6 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG133 [64] phi (byte*) char_cursor#2 = (byte*) char_cursor#11 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG134 [64] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG112 print_str::@1 + //SEG135 print_str::@1 b1: - //SEG113 [53] if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG136 [65] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG114 print_str::@return + //SEG137 print_str::@return breturn: - //SEG115 [54] return [ char_cursor#2 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 ] ) + //SEG138 [66] return [ char_cursor#2 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 ] ) rts - //SEG116 print_str::@2 + //SEG139 print_str::@2 b2: - //SEG117 [55] *((byte*) char_cursor#2) ← *((byte*) print_str::str#4) [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) -- _deref_pbuz1=_deref_pbuz2 + //SEG140 [67] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (char_cursor),y - //SEG118 [56] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#4 char_cursor#1 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_str::str#4 char_cursor#1 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 print_str::str#4 char_cursor#1 ] main:2::print_str:25 [ main::i#10 line_cursor#13 print_str::str#4 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG141 [68] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 print_str::str#7 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: - //SEG119 [57] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_str::str#0 char_cursor#1 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 print_str::str#0 char_cursor#1 ] main:2::print_str:25 [ main::i#10 line_cursor#13 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG142 [69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG120 div8u -div8u: { - .label _1 = $18 - .label dividend = $c - .label divisor = $13 - .label return = $14 - .label rem = $b - .label quotient = $d - .label i = $e - .label return_1 = $d - //SEG121 [59] phi from div8u to div8u::@1 [phi:div8u->div8u::@1] - b1_from_div8u: - //SEG122 [59] phi (byte) div8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#0] -- vbuz1=vbuc1 +//SEG143 div16u +div16u: { + .label _1 = $27 + .label _2 = $28 + .label dividend = $f + .label divisor = $1f + .label return = $21 + .label rem = $d + .label quotient = $11 + .label i = $13 + .label return_1 = $11 + //SEG144 [71] phi from div16u to div16u::@1 [phi:div16u->div16u::@1] + b1_from_div16u: + //SEG145 [71] phi (byte) div16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->div16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG123 [59] phi (byte) div8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#1] -- vbuz1=vbuc1 + //SEG146 [71] phi (word) div16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->div16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient - //SEG124 [59] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8u->div8u::@1#2] -- register_copy - //SEG125 [59] phi (byte) div8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#3] -- vbuz1=vbuc1 + lda #0 + sta quotient+1 + //SEG147 [71] phi (word) div16u::dividend#2 = (word) div16u::dividend#0 [phi:div16u->div16u::@1#2] -- register_copy + //SEG148 [71] phi (word) div16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->div16u::@1#3] -- vwuz1=vbuc1 lda #0 sta rem + lda #0 + sta rem+1 jmp b1 - //SEG126 [59] phi from div8u::@3 to div8u::@1 [phi:div8u::@3->div8u::@1] + //SEG149 [71] phi from div16u::@3 to div16u::@1 [phi:div16u::@3->div16u::@1] b1_from_b3: - //SEG127 [59] phi (byte) div8u::i#2 = (byte) div8u::i#1 [phi:div8u::@3->div8u::@1#0] -- register_copy - //SEG128 [59] phi (byte) div8u::quotient#3 = (byte) div8u::return#1 [phi:div8u::@3->div8u::@1#1] -- register_copy - //SEG129 [59] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:div8u::@3->div8u::@1#2] -- register_copy - //SEG130 [59] phi (byte) div8u::rem#4 = (byte) div8u::rem#8 [phi:div8u::@3->div8u::@1#3] -- register_copy + //SEG150 [71] phi (byte) div16u::i#2 = (byte) div16u::i#1 [phi:div16u::@3->div16u::@1#0] -- register_copy + //SEG151 [71] phi (word) div16u::quotient#3 = (word) div16u::return#1 [phi:div16u::@3->div16u::@1#1] -- register_copy + //SEG152 [71] phi (word) div16u::dividend#2 = (word) div16u::dividend#1 [phi:div16u::@3->div16u::@1#2] -- register_copy + //SEG153 [71] phi (word) div16u::rem#4 = (word) div16u::rem#8 [phi:div16u::@3->div16u::@1#3] -- register_copy jmp b1 - //SEG131 div8u::@1 + //SEG154 div16u::@1 b1: - //SEG132 [60] (byte) div8u::rem#1 ← (byte) div8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) -- vbuz1=vbuz1_rol_1 + //SEG155 [72] (word) div16u::rem#1 ← (word) div16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ) -- vwuz1=vwuz1_rol_1 asl rem - //SEG133 [61] (byte~) div8u::$1 ← (byte) div8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ) -- vbuz1=vbuz2_band_vbuc1 - lda #$80 - and dividend + rol rem+1 + //SEG156 [73] (byte~) div16u::$1 ← > (word) div16u::dividend#2 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$1 ] ) -- vbuz1=_hi_vwuz2 + lda dividend+1 sta _1 - //SEG134 [62] if((byte~) div8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8u::@2 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) -- vbuz1_eq_0_then_la1 - lda _1 + //SEG157 [74] (byte~) div16u::$2 ← (byte~) div16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 + lda #$80 + and _1 + sta _2 + //SEG158 [75] if((byte~) div16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div16u::@2 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ) -- vbuz1_eq_0_then_la1 + lda _2 beq b2_from_b1 jmp b4 - //SEG135 div8u::@4 + //SEG159 div16u::@4 b4: - //SEG136 [63] (byte) div8u::rem#2 ← ++ (byte) div8u::rem#1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ) -- vbuz1=_inc_vbuz1 + //SEG160 [76] (word) div16u::rem#2 ← ++ (word) div16u::rem#1 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#2 ] ) -- vwuz1=_inc_vwuz1 inc rem - //SEG137 [64] phi from div8u::@1 div8u::@4 to div8u::@2 [phi:div8u::@1/div8u::@4->div8u::@2] + bne !+ + inc rem+1 + !: + //SEG161 [77] phi from div16u::@1 div16u::@4 to div16u::@2 [phi:div16u::@1/div16u::@4->div16u::@2] b2_from_b1: b2_from_b4: - //SEG138 [64] phi (byte) div8u::rem#5 = (byte) div8u::rem#1 [phi:div8u::@1/div8u::@4->div8u::@2#0] -- register_copy + //SEG162 [77] phi (word) div16u::rem#5 = (word) div16u::rem#1 [phi:div16u::@1/div16u::@4->div16u::@2#0] -- register_copy jmp b2 - //SEG139 div8u::@2 + //SEG163 div16u::@2 b2: - //SEG140 [65] (byte) div8u::dividend#1 ← (byte) div8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ) -- vbuz1=vbuz1_rol_1 + //SEG164 [78] (word) div16u::dividend#1 ← (word) div16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::quotient#3 div16u::i#2 div16u::dividend#1 div16u::rem#5 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::quotient#3 div16u::i#2 div16u::dividend#1 div16u::rem#5 ] ) -- vwuz1=vwuz1_rol_1 asl dividend - //SEG141 [66] (byte) div8u::quotient#1 ← (byte) div8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) -- vbuz1=vbuz1_rol_1 + rol dividend+1 + //SEG165 [79] (word) div16u::quotient#1 ← (word) div16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ) -- vwuz1=vwuz1_rol_1 asl quotient - //SEG142 [67] if((byte) div8u::rem#5<(byte) div8u::divisor#0) goto div8u::@3 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) -- vbuz1_lt_vbuz2_then_la1 + rol quotient+1 + //SEG166 [80] if((word) div16u::rem#5<(word) div16u::divisor#0) goto div16u::@3 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ) -- vwuz1_lt_vwuz2_then_la1 + lda rem+1 + cmp divisor+1 + bcc b3_from_b2 + bne !+ lda rem cmp divisor bcc b3_from_b2 + !: jmp b5 - //SEG143 div8u::@5 + //SEG167 div16u::@5 b5: - //SEG144 [68] (byte) div8u::quotient#2 ← ++ (byte) div8u::quotient#1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ) -- vbuz1=_inc_vbuz1 + //SEG168 [81] (word) div16u::quotient#2 ← ++ (word) div16u::quotient#1 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#2 ] ) -- vwuz1=_inc_vwuz1 inc quotient - //SEG145 [69] (byte) div8u::rem#3 ← (byte) div8u::rem#5 - (byte) div8u::divisor#0 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ) -- vbuz1=vbuz1_minus_vbuz2 + bne !+ + inc quotient+1 + !: + //SEG169 [82] (word) div16u::rem#3 ← (word) div16u::rem#5 - (word) div16u::divisor#0 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::quotient#2 div16u::rem#3 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::quotient#2 div16u::rem#3 ] ) -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor sta rem - //SEG146 [70] phi from div8u::@2 div8u::@5 to div8u::@3 [phi:div8u::@2/div8u::@5->div8u::@3] + lda rem+1 + sbc divisor+1 + sta rem+1 + //SEG170 [83] phi from div16u::@2 div16u::@5 to div16u::@3 [phi:div16u::@2/div16u::@5->div16u::@3] b3_from_b2: b3_from_b5: - //SEG147 [70] phi (byte) div8u::return#1 = (byte) div8u::quotient#1 [phi:div8u::@2/div8u::@5->div8u::@3#0] -- register_copy - //SEG148 [70] phi (byte) div8u::rem#8 = (byte) div8u::rem#5 [phi:div8u::@2/div8u::@5->div8u::@3#1] -- register_copy + //SEG171 [83] phi (word) div16u::return#1 = (word) div16u::quotient#1 [phi:div16u::@2/div16u::@5->div16u::@3#0] -- register_copy + //SEG172 [83] phi (word) div16u::rem#8 = (word) div16u::rem#5 [phi:div16u::@2/div16u::@5->div16u::@3#1] -- register_copy jmp b3 - //SEG149 div8u::@3 + //SEG173 div16u::@3 b3: - //SEG150 [71] (byte) div8u::i#1 ← ++ (byte) div8u::i#2 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG174 [84] (byte) div16u::i#1 ← ++ (byte) div16u::i#2 [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG151 [72] if((byte) div8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto div8u::@1 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG175 [85] if((byte) div16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto div16u::@1 [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda i + cmp #$10 + bne b1_from_b3 + jmp breturn + //SEG176 div16u::@return + breturn: + //SEG177 [86] return [ div16u::rem#8 div16u::return#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::return#1 ] ) + rts +} +//SEG178 test_8u +test_8u: { + .label rem = $ff + .label dividend = $29 + .label divisor = $2a + .label res = $2d + .label i = $14 + //SEG179 [88] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] + b1_from_test_8u: + //SEG180 [88] phi (byte*) line_cursor#25 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 + lda #<$400 + sta line_cursor + lda #>$400 + sta line_cursor+1 + //SEG181 [88] phi (byte*) char_cursor#75 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 + lda #<$400 + sta char_cursor + lda #>$400 + sta char_cursor+1 + //SEG182 [88] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 + lda #0 + sta i + jmp b1 + //SEG183 test_8u::@1 + b1: + //SEG184 [89] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy i + lda dividends,y + sta dividend + //SEG185 [90] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy i + lda divisors,y + sta divisor + //SEG186 [91] (byte) div8u::dividend#0 ← (byte) test_8u::dividend#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 ] ) -- vbuz1=vbuz2 + lda dividend + sta div8u.dividend + //SEG187 [92] (byte) div8u::divisor#0 ← (byte) test_8u::divisor#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ) -- vbuz1=vbuz2 + lda divisor + sta div8u.divisor + //SEG188 [93] call div8u param-assignment [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ) + //SEG189 [116] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] + div8u_from_b1: + jsr div8u + //SEG190 [94] (byte) div8u::return#0 ← (byte) div8u::return#1 [ line_cursor#25 char_cursor#75 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::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#0 ] ) -- vbuz1=vbuz2 + lda div8u.return_1 + sta div8u.return + jmp b3 + //SEG191 test_8u::@3 + b3: + //SEG192 [95] (byte) test_8u::res#0 ← (byte) div8u::return#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 test_8u::res#0 ] ) -- vbuz1=vbuz2 + lda div8u.return + sta res + //SEG193 [96] (byte) print_byte::b#2 ← (byte) test_8u::dividend#0 [ line_cursor#25 print_byte::b#2 char_cursor#75 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 print_byte::b#2 char_cursor#75 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) -- vbuz1=vbuz2 + lda dividend + sta print_byte.b + //SEG194 [97] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) + //SEG195 [51] phi from test_8u::@3 to print_byte [phi:test_8u::@3->print_byte] + print_byte_from_b3: + //SEG196 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#75 [phi:test_8u::@3->print_byte#0] -- register_copy + //SEG197 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:test_8u::@3->print_byte#1] -- register_copy + jsr print_byte + //SEG198 [98] phi from test_8u::@3 to test_8u::@4 [phi:test_8u::@3->test_8u::@4] + b4_from_b3: + jmp b4 + //SEG199 test_8u::@4 + b4: + //SEG200 [99] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) + //SEG201 [63] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str] + print_str_from_b4: + //SEG202 [63] phi (byte*) print_str::str#9 = (const string) test_8u::str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + jmp b5 + //SEG203 test_8u::@5 + b5: + //SEG204 [100] (byte) print_byte::b#3 ← (byte) test_8u::divisor#0 [ line_cursor#25 char_cursor#2 print_byte::b#3 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#3 test_8u::i#10 test_8u::res#0 ] ) -- vbuz1=vbuz2 + lda divisor + sta print_byte.b + //SEG205 [101] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] ) + //SEG206 [51] phi from test_8u::@5 to print_byte [phi:test_8u::@5->print_byte] + print_byte_from_b5: + //SEG207 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#2 [phi:test_8u::@5->print_byte#0] -- register_copy + //SEG208 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:test_8u::@5->print_byte#1] -- register_copy + jsr print_byte + //SEG209 [102] phi from test_8u::@5 to test_8u::@6 [phi:test_8u::@5->test_8u::@6] + b6_from_b5: + jmp b6 + //SEG210 test_8u::@6 + b6: + //SEG211 [103] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::res#0 ] ) + //SEG212 [63] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str] + print_str_from_b6: + //SEG213 [63] phi (byte*) print_str::str#9 = (const string) test_8u::str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + jmp b7 + //SEG214 test_8u::@7 + b7: + //SEG215 [104] (byte) print_byte::b#4 ← (byte) test_8u::res#0 [ line_cursor#25 char_cursor#2 print_byte::b#4 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#4 test_8u::i#10 ] ) -- vbuz1=vbuz2 + lda res + sta print_byte.b + //SEG216 [105] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ) + //SEG217 [51] phi from test_8u::@7 to print_byte [phi:test_8u::@7->print_byte] + print_byte_from_b7: + //SEG218 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#2 [phi:test_8u::@7->print_byte#0] -- register_copy + //SEG219 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:test_8u::@7->print_byte#1] -- register_copy + jsr print_byte + //SEG220 [106] phi from test_8u::@7 to test_8u::@8 [phi:test_8u::@7->test_8u::@8] + b8_from_b7: + jmp b8 + //SEG221 test_8u::@8 + b8: + //SEG222 [107] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 ] ) + //SEG223 [63] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str] + print_str_from_b8: + //SEG224 [63] phi (byte*) print_str::str#9 = (const string) test_8u::str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + jmp b9 + //SEG225 test_8u::@9 + b9: + //SEG226 [108] (byte) print_byte::b#5 ← *((const byte*) test_8u::rem#0) [ line_cursor#25 char_cursor#2 print_byte::b#5 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#5 test_8u::i#10 ] ) -- vbuz1=_deref_pbuc1 + lda rem + sta print_byte.b + //SEG227 [109] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ) + //SEG228 [51] phi from test_8u::@9 to print_byte [phi:test_8u::@9->print_byte] + print_byte_from_b9: + //SEG229 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#2 [phi:test_8u::@9->print_byte#0] -- register_copy + //SEG230 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:test_8u::@9->print_byte#1] -- register_copy + jsr print_byte + //SEG231 [110] phi from test_8u::@9 to test_8u::@10 [phi:test_8u::@9->test_8u::@10] + b10_from_b9: + jmp b10 + //SEG232 test_8u::@10 + b10: + //SEG233 [111] call print_ln param-assignment [ line_cursor#1 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#10 ] ) + //SEG234 [40] phi from test_8u::@10 to print_ln [phi:test_8u::@10->print_ln] + print_ln_from_b10: + //SEG235 [40] phi (byte*) line_cursor#22 = (byte*) line_cursor#25 [phi:test_8u::@10->print_ln#0] -- register_copy + jsr print_ln + jmp b11 + //SEG236 test_8u::@11 + b11: + //SEG237 [112] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 [ line_cursor#1 test_8u::i#1 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 ] ) -- vbuz1=_inc_vbuz1 + inc i + //SEG238 [113] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@12 [ line_cursor#1 test_8u::i#1 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda i + cmp #6 + bne b12 + jmp breturn + //SEG239 test_8u::@return + breturn: + //SEG240 [114] return [ line_cursor#1 ] ( main:2::test_8u:7 [ line_cursor#1 ] ) + rts + //SEG241 test_8u::@12 + b12: + //SEG242 [115] (byte*~) char_cursor#98 ← (byte*) line_cursor#1 [ line_cursor#1 test_8u::i#1 char_cursor#98 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 char_cursor#98 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG243 [88] phi from test_8u::@12 to test_8u::@1 [phi:test_8u::@12->test_8u::@1] + b1_from_b12: + //SEG244 [88] phi (byte*) line_cursor#25 = (byte*) line_cursor#1 [phi:test_8u::@12->test_8u::@1#0] -- register_copy + //SEG245 [88] phi (byte*) char_cursor#75 = (byte*~) char_cursor#98 [phi:test_8u::@12->test_8u::@1#1] -- register_copy + //SEG246 [88] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy + jmp b1 + str: .text " / @" + str1: .text " = @" + str2: .text " @" + dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff + divisors: .byte 5, 7, $b, $d, $11, $13 +} +//SEG247 div8u +div8u: { + .label _1 = $2e + .label dividend = $16 + .label divisor = $2b + .label return = $2c + .label rem = $15 + .label quotient = $17 + .label i = $18 + .label return_1 = $17 + //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] -- vbuz1=vbuc1 + lda #0 + sta i + //SEG250 [117] phi (byte) div8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#1] -- vbuz1=vbuc1 + lda #0 + sta quotient + //SEG251 [117] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8u->div8u::@1#2] -- register_copy + //SEG252 [117] phi (byte) div8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#3] -- vbuz1=vbuc1 + lda #0 + sta rem + jmp b1 + //SEG253 [117] phi from div8u::@3 to div8u::@1 [phi:div8u::@3->div8u::@1] + b1_from_b3: + //SEG254 [117] phi (byte) div8u::i#2 = (byte) div8u::i#1 [phi:div8u::@3->div8u::@1#0] -- register_copy + //SEG255 [117] phi (byte) div8u::quotient#3 = (byte) div8u::return#1 [phi:div8u::@3->div8u::@1#1] -- register_copy + //SEG256 [117] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:div8u::@3->div8u::@1#2] -- register_copy + //SEG257 [117] phi (byte) div8u::rem#4 = (byte) div8u::rem#8 [phi:div8u::@3->div8u::@1#3] -- register_copy + jmp b1 + //SEG258 div8u::@1 + b1: + //SEG259 [118] (byte) div8u::rem#1 ← (byte) div8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) -- vbuz1=vbuz1_rol_1 + asl rem + //SEG260 [119] (byte~) div8u::$1 ← (byte) div8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ) -- vbuz1=vbuz2_band_vbuc1 + lda #$80 + and dividend + sta _1 + //SEG261 [120] if((byte~) div8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8u::@2 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) -- vbuz1_eq_0_then_la1 + lda _1 + beq b2_from_b1 + jmp b4 + //SEG262 div8u::@4 + b4: + //SEG263 [121] (byte) div8u::rem#2 ← ++ (byte) div8u::rem#1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ) -- vbuz1=_inc_vbuz1 + inc rem + //SEG264 [122] phi from div8u::@1 div8u::@4 to div8u::@2 [phi:div8u::@1/div8u::@4->div8u::@2] + b2_from_b1: + b2_from_b4: + //SEG265 [122] phi (byte) div8u::rem#5 = (byte) div8u::rem#1 [phi:div8u::@1/div8u::@4->div8u::@2#0] -- register_copy + jmp b2 + //SEG266 div8u::@2 + b2: + //SEG267 [123] (byte) div8u::dividend#1 ← (byte) div8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ) -- vbuz1=vbuz1_rol_1 + asl dividend + //SEG268 [124] (byte) div8u::quotient#1 ← (byte) div8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) -- vbuz1=vbuz1_rol_1 + asl quotient + //SEG269 [125] if((byte) div8u::rem#5<(byte) div8u::divisor#0) goto div8u::@3 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) -- vbuz1_lt_vbuz2_then_la1 + lda rem + cmp divisor + bcc b3_from_b2 + jmp b5 + //SEG270 div8u::@5 + b5: + //SEG271 [126] (byte) div8u::quotient#2 ← ++ (byte) div8u::quotient#1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ) -- vbuz1=_inc_vbuz1 + inc quotient + //SEG272 [127] (byte) div8u::rem#3 ← (byte) div8u::rem#5 - (byte) div8u::divisor#0 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ) -- vbuz1=vbuz1_minus_vbuz2 + lda rem + sec + sbc divisor + sta rem + //SEG273 [128] phi from div8u::@2 div8u::@5 to div8u::@3 [phi:div8u::@2/div8u::@5->div8u::@3] + b3_from_b2: + b3_from_b5: + //SEG274 [128] phi (byte) div8u::return#1 = (byte) div8u::quotient#1 [phi:div8u::@2/div8u::@5->div8u::@3#0] -- register_copy + //SEG275 [128] phi (byte) div8u::rem#8 = (byte) div8u::rem#5 [phi:div8u::@2/div8u::@5->div8u::@3#1] -- register_copy + jmp b3 + //SEG276 div8u::@3 + b3: + //SEG277 [129] (byte) div8u::i#1 ← ++ (byte) div8u::i#2 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) -- vbuz1=_inc_vbuz1 + inc i + //SEG278 [130] if((byte) div8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto div8u::@1 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b1_from_b3 jmp b6 - //SEG152 div8u::@6 + //SEG279 div8u::@6 b6: - //SEG153 [73] *((const byte*) main::rem#0) ← (byte) div8u::rem#8 [ div8u::return#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ) -- _deref_pbuc1=vbuz1 + //SEG280 [131] *((const byte*) test_8u::rem#0) ← (byte) div8u::rem#8 [ div8u::return#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ) -- _deref_pbuc1=vbuz1 lda rem - sta main.rem + sta test_8u.rem jmp breturn - //SEG154 div8u::@return + //SEG281 div8u::@return breturn: - //SEG155 [74] return [ div8u::return#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ) + //SEG282 [132] return [ div8u::return#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ) rts } -//SEG156 print_cls +//SEG283 print_cls print_cls: { - .label sc = $f - //SEG157 [76] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + .label sc = $19 + //SEG284 [134] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG158 [76] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //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 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG159 [76] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG286 [134] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG160 [76] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG287 [134] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG161 print_cls::@1 + //SEG288 print_cls::@1 b1: - //SEG162 [77] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG289 [135] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG163 [78] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG290 [136] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG164 [79] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 + //SEG291 [137] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -2534,110 +4226,182 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG165 print_cls::@return + //SEG292 print_cls::@return breturn: - //SEG166 [80] return [ ] ( main:2::print_cls:5 [ ] ) + //SEG293 [138] return [ ] ( main:2::print_cls:5 [ ] ) rts } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [33] (byte*~) char_cursor#48 ← (byte*) line_cursor#1 [ main::i#1 char_cursor#48 line_cursor#1 ] ( main:2 [ main::i#1 char_cursor#48 line_cursor#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#10 main::i#1 ] -Statement [36] (byte*) line_cursor#1 ← (byte*) line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 char_cursor#28 ] ) always clobbers reg byte a -Statement [37] if((byte*) line_cursor#1<(byte*) char_cursor#28) goto print_ln::@1 [ line_cursor#1 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 char_cursor#28 ] ) always clobbers reg byte a -Statement [43] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#28 print_byte::$2 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_byte::$2 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_byte::$2 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::$2 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::$2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ main::divisor#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ main::res#0 ] -Statement [48] *((byte*) char_cursor#27) ← (byte) print_char::ch#2 [ char_cursor#27 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#27 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#27 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#27 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#27 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#27 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#27 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#27 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#27 ] ) always clobbers reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#10 main::i#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:18 [ main::divisor#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:21 [ main::res#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ print_byte::b#4 print_byte::b#3 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] -Statement [53] if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) always clobbers reg byte a reg byte y -Statement [55] *((byte*) char_cursor#2) ← *((byte*) print_str::str#4) [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) always clobbers reg byte a reg byte y -Statement [61] (byte~) div8u::$1 ← (byte) div8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:17 [ main::dividend#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:19 [ div8u::divisor#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ div8u::i#2 div8u::i#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ div8u::rem#4 div8u::rem#8 div8u::rem#5 div8u::rem#1 div8u::rem#2 div8u::rem#3 ] -Statement [69] (byte) div8u::rem#3 ← (byte) div8u::rem#5 - (byte) div8u::divisor#0 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ) always clobbers reg byte a -Statement [77] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [79] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [8] (byte) main::divisor#0 ← *((const byte[]) main::divisors#0 + (byte) main::i#10) [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 ] ) always clobbers reg byte a -Statement [33] (byte*~) char_cursor#48 ← (byte*) line_cursor#1 [ main::i#1 char_cursor#48 line_cursor#1 ] ( main:2 [ main::i#1 char_cursor#48 line_cursor#1 ] ) always clobbers reg byte a -Statement [36] (byte*) line_cursor#1 ← (byte*) line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 char_cursor#28 ] ) always clobbers reg byte a -Statement [37] if((byte*) line_cursor#1<(byte*) char_cursor#28) goto print_ln::@1 [ line_cursor#1 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 char_cursor#28 ] ) always clobbers reg byte a -Statement [43] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#28 print_byte::$2 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_byte::$2 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_byte::$2 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::$2 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::$2 ] ) always clobbers reg byte a -Statement [48] *((byte*) char_cursor#27) ← (byte) print_char::ch#2 [ char_cursor#27 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#27 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#27 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#27 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#27 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#27 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#27 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#27 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#27 ] ) always clobbers reg byte y -Statement [53] if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) always clobbers reg byte a reg byte y -Statement [55] *((byte*) char_cursor#2) ← *((byte*) print_str::str#4) [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) always clobbers reg byte a reg byte y -Statement [61] (byte~) div8u::$1 ← (byte) div8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ) always clobbers reg byte a -Statement [69] (byte) div8u::rem#3 ← (byte) div8u::rem#5 - (byte) div8u::divisor#0 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ) always clobbers reg byte a -Statement [77] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [79] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a -Potential registers zp ZP_BYTE:2 [ main::i#10 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , -Potential registers zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ] : zp ZP_WORD:3 , -Potential registers zp ZP_BYTE:5 [ print_byte::b#4 print_byte::b#3 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , -Potential registers zp ZP_BYTE:6 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:7 [ char_cursor#27 char_cursor#41 char_cursor#2 char_cursor#42 char_cursor#48 char_cursor#28 char_cursor#1 ] : zp ZP_WORD:7 , -Potential registers zp ZP_WORD:9 [ print_str::str#4 print_str::str#6 print_str::str#0 ] : zp ZP_WORD:9 , -Potential registers zp ZP_BYTE:11 [ div8u::rem#4 div8u::rem#8 div8u::rem#5 div8u::rem#1 div8u::rem#2 div8u::rem#3 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:12 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:13 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:14 [ div8u::i#2 div8u::i#1 ] : zp ZP_BYTE:14 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:15 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:15 , -Potential registers zp ZP_BYTE:17 [ main::dividend#0 ] : zp ZP_BYTE:17 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:18 [ main::divisor#0 ] : zp ZP_BYTE:18 , reg byte x , -Potential registers zp ZP_BYTE:19 [ div8u::divisor#0 ] : zp ZP_BYTE:19 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:20 [ div8u::return#0 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:21 [ main::res#0 ] : zp ZP_BYTE:21 , reg byte x , -Potential registers zp ZP_BYTE:22 [ print_byte::$0 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:23 [ print_byte::$2 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:24 [ div8u::$1 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , +Statement [13] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) [ test_16u::i#10 test_16u::dividend#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 line_cursor#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ test_16u::i#10 test_16u::i#1 ] +Statement [14] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [15] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [16] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 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#0 div16u::divisor#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [18] (word) div16u::return#0 ← (word) div16u::return#1 [ 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 ] ) always clobbers reg byte a +Statement [19] (word) test_16u::res#0 ← (word) div16u::return#0 [ 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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [25] (word) print_word::w#1 ← (word) test_16u::divisor#0 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#1 char_cursor#2 ] ) always clobbers reg byte a +Statement [29] (word) print_word::w#2 ← (word) test_16u::res#0 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#2 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#2 char_cursor#2 ] ) always clobbers reg byte a +Statement [33] (word) print_word::w#3 ← (word) div16u::rem#8 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#3 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#3 char_cursor#2 ] ) always clobbers reg byte a +Statement [37] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ) always clobbers reg byte a +Statement [42] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 char_cursor#11 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ test_8u::i#10 test_8u::i#1 ] +Statement [43] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 char_cursor#11 ] ) always clobbers reg byte a +Statement [46] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_word::w#4 char_cursor#71 print_byte::b#0 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] ) always clobbers reg byte a +Statement [48] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#1 ] ) always clobbers reg byte a +Statement [55] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ test_8u::divisor#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ test_8u::res#0 ] +Statement [60] *((byte*) char_cursor#45) ← (byte) print_char::ch#2 [ char_cursor#45 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#45 ] ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ test_16u::i#10 test_16u::i#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ 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 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:20 [ test_8u::i#10 test_8u::i#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:42 [ test_8u::divisor#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:45 [ test_8u::res#0 ] +Statement [65] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y +Statement [67] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y +Statement [73] (byte~) div16u::$1 ← > (word) div16u::dividend#2 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:19 [ div16u::i#2 div16u::i#1 ] +Statement [74] (byte~) div16u::$2 ← (byte~) div16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$2 ] ) always clobbers reg byte a +Statement [80] if((word) div16u::rem#5<(word) div16u::divisor#0) goto div16u::@3 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ) always clobbers reg byte a +Statement [82] (word) div16u::rem#3 ← (word) div16u::rem#5 - (word) div16u::divisor#0 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::quotient#2 div16u::rem#3 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::quotient#2 div16u::rem#3 ] ) always clobbers reg byte a +Statement [90] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:41 [ test_8u::dividend#0 ] +Statement [115] (byte*~) char_cursor#98 ← (byte*) line_cursor#1 [ line_cursor#1 test_8u::i#1 char_cursor#98 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 char_cursor#98 ] ) always clobbers reg byte a +Statement [119] (byte~) div8u::$1 ← (byte) div8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:43 [ div8u::divisor#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ div8u::i#2 div8u::i#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ div8u::rem#4 div8u::rem#8 div8u::rem#5 div8u::rem#1 div8u::rem#2 div8u::rem#3 ] +Statement [127] (byte) div8u::rem#3 ← (byte) div8u::rem#5 - (byte) div8u::divisor#0 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ) always clobbers reg byte a +Statement [135] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [137] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [13] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) [ test_16u::i#10 test_16u::dividend#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [14] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [15] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [16] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 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#0 div16u::divisor#0 line_cursor#1 ] ) always clobbers reg byte a +Statement [18] (word) div16u::return#0 ← (word) div16u::return#1 [ 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 ] ) always clobbers reg byte a +Statement [19] (word) test_16u::res#0 ← (word) div16u::return#0 [ 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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [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 ] ) always clobbers reg byte a +Statement [25] (word) print_word::w#1 ← (word) test_16u::divisor#0 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#1 char_cursor#2 ] ) always clobbers reg byte a +Statement [29] (word) print_word::w#2 ← (word) test_16u::res#0 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#2 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#2 char_cursor#2 ] ) always clobbers reg byte a +Statement [33] (word) print_word::w#3 ← (word) div16u::rem#8 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#3 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#3 char_cursor#2 ] ) always clobbers reg byte a +Statement [37] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ) always clobbers reg byte a +Statement [42] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 char_cursor#11 ] ) always clobbers reg byte a +Statement [43] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 char_cursor#11 ] ) always clobbers reg byte a +Statement [46] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_word::w#4 char_cursor#71 print_byte::b#0 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] ) always clobbers reg byte a +Statement [48] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#1 ] ) always clobbers reg byte a +Statement [55] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a +Statement [60] *((byte*) char_cursor#45) ← (byte) print_char::ch#2 [ char_cursor#45 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#45 ] ) always clobbers reg byte y +Statement [65] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y +Statement [67] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y +Statement [73] (byte~) div16u::$1 ← > (word) div16u::dividend#2 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$1 ] ) always clobbers reg byte a +Statement [74] (byte~) div16u::$2 ← (byte~) div16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$2 ] ) always clobbers reg byte a +Statement [80] if((word) div16u::rem#5<(word) div16u::divisor#0) goto div16u::@3 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ) always clobbers reg byte a +Statement [82] (word) div16u::rem#3 ← (word) div16u::rem#5 - (word) div16u::divisor#0 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::quotient#2 div16u::rem#3 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::quotient#2 div16u::rem#3 ] ) always clobbers reg byte a +Statement [90] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ) always clobbers reg byte a +Statement [115] (byte*~) char_cursor#98 ← (byte*) line_cursor#1 [ line_cursor#1 test_8u::i#1 char_cursor#98 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 char_cursor#98 ] ) always clobbers reg byte a +Statement [119] (byte~) div8u::$1 ← (byte) div8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ) always clobbers reg byte a +Statement [127] (byte) div8u::rem#3 ← (byte) div8u::rem#5 - (byte) div8u::divisor#0 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ) always clobbers reg byte a +Statement [135] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [137] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ test_16u::i#10 test_16u::i#1 ] : zp ZP_BYTE:2 , reg byte x , +Potential registers zp ZP_WORD:3 [ line_cursor#11 line_cursor#22 line_cursor#1 line_cursor#25 ] : zp ZP_WORD:3 , +Potential registers zp ZP_WORD:5 [ print_word::w#4 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 ] : zp ZP_WORD:5 , +Potential registers zp ZP_BYTE:7 [ 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 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , +Potential registers zp ZP_BYTE:8 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y , +Potential registers 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 ] : zp ZP_WORD:9 , +Potential registers zp ZP_WORD:11 [ print_str::str#7 print_str::str#9 print_str::str#0 ] : zp ZP_WORD:11 , +Potential registers zp ZP_WORD:13 [ div16u::rem#4 rem16u#16 div16u::rem#8 div16u::rem#5 div16u::rem#1 div16u::rem#2 div16u::rem#3 ] : zp ZP_WORD:13 , +Potential registers zp ZP_WORD:15 [ div16u::dividend#2 div16u::dividend#0 div16u::dividend#1 ] : zp ZP_WORD:15 , +Potential registers zp ZP_WORD:17 [ div16u::quotient#3 div16u::return#1 div16u::quotient#1 div16u::quotient#2 ] : zp ZP_WORD:17 , +Potential registers zp ZP_BYTE:19 [ div16u::i#2 div16u::i#1 ] : zp ZP_BYTE:19 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:20 [ test_8u::i#10 test_8u::i#1 ] : zp ZP_BYTE:20 , reg byte x , +Potential registers zp ZP_BYTE:21 [ div8u::rem#4 div8u::rem#8 div8u::rem#5 div8u::rem#1 div8u::rem#2 div8u::rem#3 ] : zp ZP_BYTE:21 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:22 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] : zp ZP_BYTE:22 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:23 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] : zp ZP_BYTE:23 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:24 [ div8u::i#2 div8u::i#1 ] : zp ZP_BYTE:24 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:25 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:25 , +Potential registers zp ZP_WORD:27 [ test_16u::dividend#0 ] : zp ZP_WORD:27 , +Potential registers zp ZP_WORD:29 [ test_16u::divisor#0 ] : zp ZP_WORD:29 , +Potential registers zp ZP_WORD:31 [ div16u::divisor#0 ] : zp ZP_WORD:31 , +Potential registers zp ZP_WORD:33 [ div16u::return#0 ] : zp ZP_WORD:33 , +Potential registers zp ZP_WORD:35 [ test_16u::res#0 ] : zp ZP_WORD:35 , +Potential registers zp ZP_BYTE:37 [ print_byte::$0 ] : zp ZP_BYTE:37 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:38 [ print_byte::$2 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:39 [ div16u::$1 ] : zp ZP_BYTE:39 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:40 [ div16u::$2 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:41 [ test_8u::dividend#0 ] : zp ZP_BYTE:41 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:42 [ test_8u::divisor#0 ] : zp ZP_BYTE:42 , reg byte x , +Potential registers zp ZP_BYTE:43 [ div8u::divisor#0 ] : zp ZP_BYTE:43 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:44 [ div8u::return#0 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:45 [ test_8u::res#0 ] : zp ZP_BYTE:45 , reg byte x , +Potential registers zp ZP_BYTE:46 [ div8u::$1 ] : zp ZP_BYTE:46 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [div8u] 909.67: zp ZP_BYTE:11 [ div8u::rem#4 div8u::rem#8 div8u::rem#5 div8u::rem#1 div8u::rem#2 div8u::rem#3 ] 333.69: zp ZP_BYTE:13 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] 202: zp ZP_BYTE:24 [ div8u::$1 ] 168.33: zp ZP_BYTE:14 [ div8u::i#2 div8u::i#1 ] 80.42: zp ZP_BYTE:12 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] 22: zp ZP_BYTE:20 [ div8u::return#0 ] 13.31: zp ZP_BYTE:19 [ div8u::divisor#0 ] -Uplift Scope [] 250.97: zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ] 183.93: zp ZP_WORD:7 [ char_cursor#27 char_cursor#41 char_cursor#2 char_cursor#42 char_cursor#48 char_cursor#28 char_cursor#1 ] -Uplift Scope [print_str] 305.5: zp ZP_WORD:9 [ print_str::str#4 print_str::str#6 print_str::str#0 ] -Uplift Scope [print_byte] 100: zp ZP_BYTE:5 [ print_byte::b#4 print_byte::b#3 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] 4: zp ZP_BYTE:22 [ print_byte::$0 ] 4: zp ZP_BYTE:23 [ print_byte::$2 ] -Uplift Scope [print_cls] 33: zp ZP_WORD:15 [ print_cls::sc#2 print_cls::sc#1 ] -Uplift Scope [main] 12.83: zp ZP_BYTE:2 [ main::i#10 main::i#1 ] 4.71: zp ZP_BYTE:17 [ main::dividend#0 ] 3.3: zp ZP_BYTE:18 [ main::divisor#0 ] 2.44: zp ZP_BYTE:21 [ main::res#0 ] -Uplift Scope [print_char] 14: zp ZP_BYTE:6 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [div16u] 905.25: zp ZP_WORD:13 [ div16u::rem#4 rem16u#16 div16u::rem#8 div16u::rem#5 div16u::rem#1 div16u::rem#2 div16u::rem#3 ] 340.55: zp ZP_WORD:17 [ div16u::quotient#3 div16u::return#1 div16u::quotient#1 div16u::quotient#2 ] 202: zp ZP_BYTE:39 [ div16u::$1 ] 202: zp ZP_BYTE:40 [ div16u::$2 ] 167.04: zp ZP_BYTE:19 [ div16u::i#2 div16u::i#1 ] 73.15: zp ZP_WORD:15 [ div16u::dividend#2 div16u::dividend#0 div16u::dividend#1 ] 22: zp ZP_WORD:33 [ div16u::return#0 ] 12.53: zp ZP_WORD:31 [ div16u::divisor#0 ] +Uplift Scope [div8u] 909.67: zp ZP_BYTE:21 [ div8u::rem#4 div8u::rem#8 div8u::rem#5 div8u::rem#1 div8u::rem#2 div8u::rem#3 ] 333.69: zp ZP_BYTE:23 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] 202: zp ZP_BYTE:46 [ div8u::$1 ] 168.33: zp ZP_BYTE:24 [ div8u::i#2 div8u::i#1 ] 80.42: zp ZP_BYTE:22 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] 22: zp ZP_BYTE:44 [ div8u::return#0 ] 13.31: zp ZP_BYTE:43 [ div8u::divisor#0 ] +Uplift Scope [] 238.09: zp ZP_WORD:3 [ line_cursor#11 line_cursor#22 line_cursor#1 line_cursor#25 ] 217.7: 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 ] +Uplift Scope [print_str] 305.5: zp ZP_WORD:11 [ print_str::str#7 print_str::str#9 print_str::str#0 ] +Uplift Scope [print_byte] 109: zp ZP_BYTE:7 [ 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 ] 4: zp ZP_BYTE:37 [ print_byte::$0 ] 4: zp ZP_BYTE:38 [ print_byte::$2 ] +Uplift Scope [print_word] 93: zp ZP_WORD:5 [ print_word::w#4 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 ] +Uplift Scope [print_cls] 33: zp ZP_WORD:25 [ print_cls::sc#2 print_cls::sc#1 ] +Uplift Scope [test_16u] 18.26: zp ZP_BYTE:2 [ test_16u::i#10 test_16u::i#1 ] 4.71: zp ZP_WORD:27 [ test_16u::dividend#0 ] 3: zp ZP_WORD:29 [ test_16u::divisor#0 ] 2.2: zp ZP_WORD:35 [ test_16u::res#0 ] +Uplift Scope [test_8u] 12.83: zp ZP_BYTE:20 [ test_8u::i#10 test_8u::i#1 ] 4.71: zp ZP_BYTE:41 [ test_8u::dividend#0 ] 3.3: zp ZP_BYTE:42 [ test_8u::divisor#0 ] 2.44: zp ZP_BYTE:45 [ test_8u::res#0 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:8 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] Uplift Scope [print_ln] +Uplift Scope [main] -Uplifting [div8u] best 20989 combination reg byte y [ div8u::rem#4 div8u::rem#8 div8u::rem#5 div8u::rem#1 div8u::rem#2 div8u::rem#3 ] zp ZP_BYTE:13 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] reg byte a [ div8u::$1 ] reg byte x [ div8u::i#2 div8u::i#1 ] zp ZP_BYTE:12 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] reg byte a [ div8u::return#0 ] zp ZP_BYTE:19 [ div8u::divisor#0 ] -Uplifting [] best 20989 combination zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ] zp ZP_WORD:7 [ char_cursor#27 char_cursor#41 char_cursor#2 char_cursor#42 char_cursor#48 char_cursor#28 char_cursor#1 ] -Uplifting [print_str] best 20989 combination zp ZP_WORD:9 [ print_str::str#4 print_str::str#6 print_str::str#0 ] -Uplifting [print_byte] best 20859 combination reg byte x [ print_byte::b#4 print_byte::b#3 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_cls] best 20859 combination zp ZP_WORD:15 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [main] best 20859 combination zp ZP_BYTE:2 [ main::i#10 main::i#1 ] zp ZP_BYTE:17 [ main::dividend#0 ] zp ZP_BYTE:18 [ main::divisor#0 ] zp ZP_BYTE:21 [ main::res#0 ] -Uplifting [print_char] best 20850 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplifting [print_ln] best 20850 combination -Attempting to uplift remaining variables inzp ZP_BYTE:13 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] -Uplifting [div8u] best 20850 combination zp ZP_BYTE:13 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:12 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] -Uplifting [div8u] best 20850 combination zp ZP_BYTE:12 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:19 [ div8u::divisor#0 ] -Uplifting [div8u] best 20850 combination zp ZP_BYTE:19 [ div8u::divisor#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::i#10 main::i#1 ] -Uplifting [main] best 20850 combination zp ZP_BYTE:2 [ main::i#10 main::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:17 [ main::dividend#0 ] -Uplifting [main] best 20850 combination zp ZP_BYTE:17 [ main::dividend#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:18 [ main::divisor#0 ] -Uplifting [main] best 20850 combination zp ZP_BYTE:18 [ main::divisor#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:21 [ main::res#0 ] -Uplifting [main] best 20850 combination zp ZP_BYTE:21 [ main::res#0 ] -Coalescing zero page register [ zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ] ] with [ zp ZP_WORD:15 [ print_cls::sc#2 print_cls::sc#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:12 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] ] with [ zp ZP_BYTE:21 [ main::res#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:18 [ main::divisor#0 ] ] with [ zp ZP_BYTE:19 [ div8u::divisor#0 ] ] -Allocated (was zp ZP_WORD:7) zp ZP_WORD:5 [ char_cursor#27 char_cursor#41 char_cursor#2 char_cursor#42 char_cursor#48 char_cursor#28 char_cursor#1 ] -Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ print_str::str#4 print_str::str#6 print_str::str#0 ] -Allocated (was zp ZP_BYTE:12) zp ZP_BYTE:9 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 main::res#0 ] -Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:10 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] -Allocated (was zp ZP_BYTE:17) zp ZP_BYTE:11 [ main::dividend#0 ] -Allocated (was zp ZP_BYTE:18) zp ZP_BYTE:12 [ main::divisor#0 div8u::divisor#0 ] +Uplifting [div16u] best 40878 combination zp ZP_WORD:13 [ div16u::rem#4 rem16u#16 div16u::rem#8 div16u::rem#5 div16u::rem#1 div16u::rem#2 div16u::rem#3 ] zp ZP_WORD:17 [ div16u::quotient#3 div16u::return#1 div16u::quotient#1 div16u::quotient#2 ] reg byte a [ div16u::$1 ] reg byte a [ div16u::$2 ] reg byte x [ div16u::i#2 div16u::i#1 ] zp ZP_WORD:15 [ div16u::dividend#2 div16u::dividend#0 div16u::dividend#1 ] zp ZP_WORD:33 [ div16u::return#0 ] zp ZP_WORD:31 [ div16u::divisor#0 ] +Uplifting [div8u] best 38515 combination reg byte y [ div8u::rem#4 div8u::rem#8 div8u::rem#5 div8u::rem#1 div8u::rem#2 div8u::rem#3 ] zp ZP_BYTE:23 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] reg byte a [ div8u::$1 ] reg byte x [ div8u::i#2 div8u::i#1 ] zp ZP_BYTE:22 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] reg byte a [ div8u::return#0 ] zp ZP_BYTE:43 [ div8u::divisor#0 ] +Uplifting [] best 38515 combination zp ZP_WORD:3 [ line_cursor#11 line_cursor#22 line_cursor#1 line_cursor#25 ] 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 ] +Uplifting [print_str] best 38515 combination zp ZP_WORD:11 [ print_str::str#7 print_str::str#9 print_str::str#0 ] +Uplifting [print_byte] best 38383 combination 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_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_word] best 38383 combination zp ZP_WORD:5 [ print_word::w#4 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 ] +Uplifting [print_cls] best 38383 combination zp ZP_WORD:25 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [test_16u] best 38383 combination zp ZP_BYTE:2 [ test_16u::i#10 test_16u::i#1 ] zp ZP_WORD:27 [ test_16u::dividend#0 ] zp ZP_WORD:29 [ test_16u::divisor#0 ] zp ZP_WORD:35 [ test_16u::res#0 ] +Uplifting [test_8u] best 38383 combination zp ZP_BYTE:20 [ test_8u::i#10 test_8u::i#1 ] zp ZP_BYTE:41 [ test_8u::dividend#0 ] zp ZP_BYTE:42 [ test_8u::divisor#0 ] zp ZP_BYTE:45 [ test_8u::res#0 ] +Uplifting [print_char] best 38374 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_ln] best 38374 combination +Uplifting [main] best 38374 combination +Attempting to uplift remaining variables inzp ZP_BYTE:23 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] +Uplifting [div8u] best 38374 combination zp ZP_BYTE:23 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:22 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] +Uplifting [div8u] best 38374 combination zp ZP_BYTE:22 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:2 [ test_16u::i#10 test_16u::i#1 ] +Uplifting [test_16u] best 38374 combination zp ZP_BYTE:2 [ test_16u::i#10 test_16u::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:43 [ div8u::divisor#0 ] +Uplifting [div8u] best 38374 combination zp ZP_BYTE:43 [ div8u::divisor#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:20 [ test_8u::i#10 test_8u::i#1 ] +Uplifting [test_8u] best 38374 combination zp ZP_BYTE:20 [ test_8u::i#10 test_8u::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:41 [ test_8u::dividend#0 ] +Uplifting [test_8u] best 38374 combination zp ZP_BYTE:41 [ test_8u::dividend#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:42 [ test_8u::divisor#0 ] +Uplifting [test_8u] best 38374 combination zp ZP_BYTE:42 [ test_8u::divisor#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:45 [ test_8u::res#0 ] +Uplifting [test_8u] best 38374 combination zp ZP_BYTE:45 [ 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 ] ] with [ zp ZP_WORD:11 [ print_str::str#7 print_str::str#9 print_str::str#0 ] ] +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 print_str::str#7 print_str::str#9 print_str::str#0 ] ] with [ zp ZP_WORD:15 [ div16u::dividend#2 div16u::dividend#0 div16u::dividend#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 print_str::str#7 print_str::str#9 print_str::str#0 div16u::dividend#2 div16u::dividend#0 div16u::dividend#1 ] ] with [ zp ZP_WORD:33 [ div16u::return#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:17 [ div16u::quotient#3 div16u::return#1 div16u::quotient#1 div16u::quotient#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:22 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] ] with [ zp ZP_BYTE:45 [ test_8u::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:42 [ test_8u::divisor#0 ] ] with [ zp ZP_BYTE:43 [ 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 div16u::quotient#3 div16u::return#1 div16u::quotient#1 div16u::quotient#2 ] +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_BYTE:22) zp ZP_BYTE:11 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 test_8u::res#0 ] +Allocated (was zp ZP_BYTE:23) zp ZP_BYTE:12 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] +Allocated (was zp ZP_WORD:27) zp ZP_WORD:13 [ test_16u::dividend#0 ] +Allocated (was zp ZP_WORD:29) zp ZP_WORD:15 [ test_16u::divisor#0 div16u::divisor#0 ] +Allocated (was zp ZP_WORD:35) zp ZP_WORD:17 [ test_16u::res#0 ] +Allocated (was zp ZP_BYTE:41) zp ZP_BYTE:19 [ test_8u::dividend#0 ] +Allocated (was zp ZP_BYTE:42) zp ZP_BYTE:20 [ test_8u::divisor#0 div8u::divisor#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -2645,212 +4409,258 @@ ASSEMBLER BEFORE OPTIMIZATION :BasicUpstart(main) .pc = $80d "Program" //SEG1 Global Constants & labels - .label char_cursor = 5 + .label char_cursor = 7 .label line_cursor = 3 + .label rem16u = 9 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @10 [phi:@begin->@10] -b10_from_bbegin: - jmp b10 -//SEG4 @10 -b10: +//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] +b13_from_bbegin: + jmp b13 +//SEG4 @13 +b13: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @10 to main [phi:@10->main] -main_from_b10: +//SEG6 [4] phi from @13 to main [phi:@13->main] +main_from_b13: jsr main -//SEG7 [3] phi from @10 to @end [phi:@10->@end] -bend_from_b10: +//SEG7 [3] phi from @13 to @end [phi:@13->@end] +bend_from_b13: jmp bend //SEG8 @end bend: //SEG9 main main: { - .label rem = $ff - .label dividend = $b - .label divisor = $c - .label res = 9 - .label i = 2 //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] ) - //SEG11 [75] phi from main to print_cls [phi:main->print_cls] + //SEG11 [133] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG13 [6] phi (byte*) line_cursor#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 - lda #<$400 - sta line_cursor - lda #>$400 - sta line_cursor+1 - //SEG14 [6] phi (byte*) char_cursor#42 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 - lda #<$400 - sta char_cursor - lda #>$400 - sta char_cursor+1 - //SEG15 [6] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1 + jmp b1 + //SEG13 main::@1 + b1: + //SEG14 [7] call test_8u param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + //SEG15 [87] phi from main::@1 to test_8u [phi:main::@1->test_8u] + test_8u_from_b1: + jsr test_8u + //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + b2_from_b1: + jmp b2 + //SEG17 main::@2 + b2: + //SEG18 [9] call test_16u param-assignment [ ] ( main:2 [ ] ) + //SEG19 [11] phi from main::@2 to test_16u [phi:main::@2->test_16u] + test_16u_from_b2: + jsr test_16u + jmp breturn + //SEG20 main::@return + breturn: + //SEG21 [10] return [ ] ( main:2 [ ] ) + rts +} +//SEG22 test_16u +test_16u: { + .label dividend = $d + .label divisor = $f + .label res = $11 + .label i = 2 + //SEG23 [12] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] + b1_from_test_16u: + //SEG24 [12] phi (word) rem16u#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vwuz1=vbuc1 + lda #0 + sta rem16u + lda #0 + sta rem16u+1 + //SEG25 [12] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG16 main::@1 + //SEG26 [12] phi from test_16u::@11 to test_16u::@1 [phi:test_16u::@11->test_16u::@1] + b1_from_b11: + //SEG27 [12] phi (word) rem16u#16 = (word) div16u::rem#8 [phi:test_16u::@11->test_16u::@1#0] -- register_copy + //SEG28 [12] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@11->test_16u::@1#1] -- register_copy + jmp b1 + //SEG29 test_16u::@1 b1: - //SEG17 [7] (byte) main::dividend#0 ← *((const byte[]) main::dividends#0 + (byte) main::i#10) [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG30 [13] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) [ test_16u::i#10 test_16u::dividend#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 line_cursor#1 ] ) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG18 [8] (byte) main::divisor#0 ← *((const byte[]) main::divisors#0 + (byte) main::i#10) [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + lda dividends+1,y + sta dividend+1 + //SEG31 [14] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 ] ) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor - //SEG19 [9] (byte) div8u::dividend#0 ← (byte) main::dividend#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 ] ) -- vbuz1=vbuz2 + lda divisors+1,y + sta divisor+1 + //SEG32 [15] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 line_cursor#1 ] ) -- vwuz1=vwuz2 lda dividend - sta div8u.dividend - //SEG20 [10] (byte) div8u::divisor#0 ← (byte) main::divisor#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ) - // (byte) div8u::divisor#0 = (byte) main::divisor#0 // register copy zp ZP_BYTE:12 - //SEG21 [11] call div8u param-assignment [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ) - //SEG22 [58] phi from main::@1 to div8u [phi:main::@1->div8u] - div8u_from_b1: - jsr div8u - //SEG23 [12] (byte) div8u::return#0 ← (byte) div8u::return#1 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#0 ] ) -- vbuaa=vbuz1 - lda div8u.return - jmp b4 - //SEG24 main::@4 - b4: - //SEG25 [13] (byte) main::res#0 ← (byte) div8u::return#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 main::res#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 main::res#0 ] ) -- vbuz1=vbuaa + sta div16u.dividend + lda dividend+1 + sta div16u.dividend+1 + //SEG33 [16] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 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#0 div16u::divisor#0 line_cursor#1 ] ) + // (word) div16u::divisor#0 = (word) test_16u::divisor#0 // register copy zp ZP_WORD:15 + //SEG34 [17] call div16u param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#1 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#1 line_cursor#1 ] ) + //SEG35 [70] phi from test_16u::@1 to div16u [phi:test_16u::@1->div16u] + div16u_from_b1: + jsr div16u + //SEG36 [18] (word) div16u::return#0 ← (word) div16u::return#1 [ 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 ] ) -- vwuz1=vwuz2 + lda div16u.return_1 + sta div16u.return + lda div16u.return_1+1 + sta div16u.return+1 + jmp b3 + //SEG37 test_16u::@3 + b3: + //SEG38 [19] (word) test_16u::res#0 ← (word) div16u::return#0 [ 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 ] ) -- vwuz1=vwuz2 + lda div16u.return sta res - //SEG26 [14] (byte) print_byte::b#0 ← (byte) main::dividend#0 [ main::i#10 char_cursor#42 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#0 ] ) -- vbuxx=vbuz1 - ldx dividend - //SEG27 [15] call print_byte param-assignment [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] ) - //SEG28 [39] phi from main::@4 to print_byte [phi:main::@4->print_byte] - print_byte_from_b4: - //SEG29 [39] phi (byte*) char_cursor#41 = (byte*) char_cursor#42 [phi:main::@4->print_byte#0] -- register_copy - //SEG30 [39] phi (byte) print_byte::b#4 = (byte) print_byte::b#0 [phi:main::@4->print_byte#1] -- register_copy - jsr print_byte - //SEG31 [16] phi from main::@4 to main::@5 [phi:main::@4->main::@5] - b5_from_b4: - jmp b5 - //SEG32 main::@5 - b5: - //SEG33 [17] call print_str param-assignment [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] ) - //SEG34 [51] phi from main::@5 to print_str [phi:main::@5->print_str] - print_str_from_b5: - //SEG35 [51] phi (byte*) print_str::str#6 = (const string) main::str [phi:main::@5->print_str#0] -- pbuz1=pbuc1 + lda div16u.return+1 + sta res+1 + //SEG39 [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 ] ) -- vwuz1=vwuz2 + lda dividend + sta print_word.w + lda dividend+1 + sta print_word.w+1 + //SEG40 [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 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG41 [22] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] ) + //SEG42 [45] phi from test_16u::@3 to print_word [phi:test_16u::@3->print_word] + print_word_from_b3: + //SEG43 [45] phi (byte*) char_cursor#71 = (byte*~) char_cursor#84 [phi:test_16u::@3->print_word#0] -- register_copy + //SEG44 [45] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:test_16u::@3->print_word#1] -- register_copy + jsr print_word + //SEG45 [23] phi from test_16u::@3 to test_16u::@4 [phi:test_16u::@3->test_16u::@4] + b4_from_b3: + jmp b4 + //SEG46 test_16u::@4 + b4: + //SEG47 [24] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] ) + //SEG48 [63] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str] + print_str_from_b4: + //SEG49 [63] phi (byte*) print_str::str#9 = (const string) test_16u::str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str + jmp b5 + //SEG50 test_16u::@5 + b5: + //SEG51 [25] (word) print_word::w#1 ← (word) test_16u::divisor#0 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#1 char_cursor#2 ] ) -- vwuz1=vwuz2 + lda divisor + sta print_word.w + lda divisor+1 + sta print_word.w+1 + //SEG52 [26] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] ) + //SEG53 [45] phi from test_16u::@5 to print_word [phi:test_16u::@5->print_word] + print_word_from_b5: + //SEG54 [45] phi (byte*) char_cursor#71 = (byte*) char_cursor#2 [phi:test_16u::@5->print_word#0] -- register_copy + //SEG55 [45] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:test_16u::@5->print_word#1] -- register_copy + jsr print_word + //SEG56 [27] phi from test_16u::@5 to test_16u::@6 [phi:test_16u::@5->test_16u::@6] + b6_from_b5: jmp b6 - //SEG36 main::@6 + //SEG57 test_16u::@6 b6: - //SEG37 [18] (byte) print_byte::b#1 ← (byte) main::divisor#0 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#1 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#1 char_cursor#2 ] ) -- vbuxx=vbuz1 - ldx divisor - //SEG38 [19] call print_byte param-assignment [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] ) - //SEG39 [39] phi from main::@6 to print_byte [phi:main::@6->print_byte] - print_byte_from_b6: - //SEG40 [39] phi (byte*) char_cursor#41 = (byte*) char_cursor#2 [phi:main::@6->print_byte#0] -- register_copy - //SEG41 [39] phi (byte) print_byte::b#4 = (byte) print_byte::b#1 [phi:main::@6->print_byte#1] -- register_copy - jsr print_byte - //SEG42 [20] phi from main::@6 to main::@7 [phi:main::@6->main::@7] - b7_from_b6: - jmp b7 - //SEG43 main::@7 - b7: - //SEG44 [21] call print_str param-assignment [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] ) - //SEG45 [51] phi from main::@7 to print_str [phi:main::@7->print_str] - print_str_from_b7: - //SEG46 [51] phi (byte*) print_str::str#6 = (const string) main::str1 [phi:main::@7->print_str#0] -- pbuz1=pbuc1 + //SEG58 [28] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] ) + //SEG59 [63] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str] + print_str_from_b6: + //SEG60 [63] phi (byte*) print_str::str#9 = (const string) test_16u::str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str + jmp b7 + //SEG61 test_16u::@7 + b7: + //SEG62 [29] (word) print_word::w#2 ← (word) test_16u::res#0 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#2 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#2 char_cursor#2 ] ) -- vwuz1=vwuz2 + lda res + sta print_word.w + lda res+1 + sta print_word.w+1 + //SEG63 [30] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + //SEG64 [45] phi from test_16u::@7 to print_word [phi:test_16u::@7->print_word] + print_word_from_b7: + //SEG65 [45] phi (byte*) char_cursor#71 = (byte*) char_cursor#2 [phi:test_16u::@7->print_word#0] -- register_copy + //SEG66 [45] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:test_16u::@7->print_word#1] -- register_copy + jsr print_word + //SEG67 [31] phi from test_16u::@7 to test_16u::@8 [phi:test_16u::@7->test_16u::@8] + b8_from_b7: jmp b8 - //SEG47 main::@8 + //SEG68 test_16u::@8 b8: - //SEG48 [22] (byte) print_byte::b#2 ← (byte) main::res#0 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#2 ] ) -- vbuxx=vbuz1 - ldx res - //SEG49 [23] call print_byte param-assignment [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - //SEG50 [39] phi from main::@8 to print_byte [phi:main::@8->print_byte] - print_byte_from_b8: - //SEG51 [39] phi (byte*) char_cursor#41 = (byte*) char_cursor#2 [phi:main::@8->print_byte#0] -- register_copy - //SEG52 [39] phi (byte) print_byte::b#4 = (byte) print_byte::b#2 [phi:main::@8->print_byte#1] -- register_copy - jsr print_byte - //SEG53 [24] phi from main::@8 to main::@9 [phi:main::@8->main::@9] - b9_from_b8: - jmp b9 - //SEG54 main::@9 - b9: - //SEG55 [25] call print_str param-assignment [ main::i#10 line_cursor#13 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#2 ] ) - //SEG56 [51] phi from main::@9 to print_str [phi:main::@9->print_str] - print_str_from_b9: - //SEG57 [51] phi (byte*) print_str::str#6 = (const string) main::str2 [phi:main::@9->print_str#0] -- pbuz1=pbuc1 + //SEG69 [32] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] ) + //SEG70 [63] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str] + print_str_from_b8: + //SEG71 [63] phi (byte*) print_str::str#9 = (const string) test_16u::str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str + jmp b9 + //SEG72 test_16u::@9 + b9: + //SEG73 [33] (word) print_word::w#3 ← (word) div16u::rem#8 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#3 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#3 char_cursor#2 ] ) -- vwuz1=vwuz2 + lda div16u.rem + sta print_word.w + lda div16u.rem+1 + sta print_word.w+1 + //SEG74 [34] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + //SEG75 [45] phi from test_16u::@9 to print_word [phi:test_16u::@9->print_word] + print_word_from_b9: + //SEG76 [45] phi (byte*) char_cursor#71 = (byte*) char_cursor#2 [phi:test_16u::@9->print_word#0] -- register_copy + //SEG77 [45] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:test_16u::@9->print_word#1] -- register_copy + jsr print_word + //SEG78 [35] phi from test_16u::@9 to test_16u::@10 [phi:test_16u::@9->test_16u::@10] + b10_from_b9: jmp b10 - //SEG58 main::@10 + //SEG79 test_16u::@10 b10: - //SEG59 [26] (byte) print_byte::b#3 ← *((const byte*) main::rem#0) [ main::i#10 line_cursor#13 print_byte::b#3 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 print_byte::b#3 char_cursor#2 ] ) -- vbuxx=_deref_pbuc1 - ldx rem - //SEG60 [27] call print_byte param-assignment [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - //SEG61 [39] phi from main::@10 to print_byte [phi:main::@10->print_byte] - print_byte_from_b10: - //SEG62 [39] phi (byte*) char_cursor#41 = (byte*) char_cursor#2 [phi:main::@10->print_byte#0] -- register_copy - //SEG63 [39] phi (byte) print_byte::b#4 = (byte) print_byte::b#3 [phi:main::@10->print_byte#1] -- register_copy - jsr print_byte - //SEG64 [28] phi from main::@10 to main::@11 [phi:main::@10->main::@11] - b11_from_b10: - jmp b11 - //SEG65 main::@11 - b11: - //SEG66 [29] call print_ln param-assignment [ main::i#10 line_cursor#1 ] ( main:2 [ main::i#10 line_cursor#1 ] ) - //SEG67 [34] phi from main::@11 to print_ln [phi:main::@11->print_ln] - print_ln_from_b11: + //SEG80 [36] call print_ln param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] ) + //SEG81 [40] phi from test_16u::@10 to print_ln [phi:test_16u::@10->print_ln] + print_ln_from_b10: + //SEG82 [40] phi (byte*) line_cursor#22 = (byte*) line_cursor#1 [phi:test_16u::@10->print_ln#0] -- register_copy jsr print_ln - jmp b12 - //SEG68 main::@12 - b12: - //SEG69 [30] (byte) main::i#1 ← ++ (byte) main::i#10 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1=_inc_vbuz1 - inc i - //SEG70 [31] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto main::@13 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + jmp b11 + //SEG83 test_16u::@11 + b11: + //SEG84 [37] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 + lda #2 + clc + adc i + sta i + //SEG85 [38] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i - cmp #6 - bne b13 + cmp #$c + bne b1_from_b11 jmp breturn - //SEG71 main::@return + //SEG86 test_16u::@return breturn: - //SEG72 [32] return [ ] ( main:2 [ ] ) + //SEG87 [39] return [ ] ( main:2::test_16u:9 [ ] ) rts - //SEG73 main::@13 - b13: - //SEG74 [33] (byte*~) char_cursor#48 ← (byte*) line_cursor#1 [ main::i#1 char_cursor#48 line_cursor#1 ] ( main:2 [ main::i#1 char_cursor#48 line_cursor#1 ] ) -- pbuz1=pbuz2 - lda line_cursor - sta char_cursor - lda line_cursor+1 - sta char_cursor+1 - //SEG75 [6] phi from main::@13 to main::@1 [phi:main::@13->main::@1] - b1_from_b13: - //SEG76 [6] phi (byte*) line_cursor#13 = (byte*) line_cursor#1 [phi:main::@13->main::@1#0] -- register_copy - //SEG77 [6] phi (byte*) char_cursor#42 = (byte*~) char_cursor#48 [phi:main::@13->main::@1#1] -- register_copy - //SEG78 [6] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@13->main::@1#2] -- register_copy - jmp b1 str: .text " / @" str1: .text " = @" str2: .text " @" - dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff - divisors: .byte 5, 7, $b, $d, $11, $13 + dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff + divisors: .word 5, 7, $b, $d, $11, $13 } -//SEG79 print_ln +//SEG88 print_ln print_ln: { - //SEG80 [35] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG89 [41] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] b1_from_print_ln: b1_from_b1: - //SEG81 [35] phi (byte*) line_cursor#6 = (byte*) line_cursor#13 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG90 [41] phi (byte*) line_cursor#11 = (byte*) line_cursor#22 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG82 print_ln::@1 + //SEG91 print_ln::@1 b1: - //SEG83 [36] (byte*) line_cursor#1 ← (byte*) line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 char_cursor#28 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG92 [42] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 char_cursor#11 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda line_cursor clc adc #$28 @@ -2858,7 +4668,7 @@ print_ln: { bcc !+ inc line_cursor+1 !: - //SEG84 [37] if((byte*) line_cursor#1<(byte*) char_cursor#28) goto print_ln::@1 [ line_cursor#1 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 char_cursor#28 ] ) -- pbuz1_lt_pbuz2_then_la1 + //SEG93 [43] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 char_cursor#11 ] ) -- pbuz1_lt_pbuz2_then_la1 lda line_cursor+1 cmp char_cursor+1 bcc b1_from_b1 @@ -2868,222 +4678,535 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG85 print_ln::@return + //SEG94 print_ln::@return breturn: - //SEG86 [38] return [ line_cursor#1 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 ] ) + //SEG95 [44] return [ line_cursor#1 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 ] ) rts } -//SEG87 print_byte +//SEG96 print_word +print_word: { + .label w = 5 + //SEG97 [46] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_word::w#4 char_cursor#71 print_byte::b#0 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] ) -- vbuxx=_hi_vwuz1 + lda w+1 + tax + //SEG98 [47] call print_byte param-assignment [ char_cursor#11 print_word::w#4 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_word::w#4 ] ) + //SEG99 [51] phi from print_word to print_byte [phi:print_word->print_byte] + print_byte_from_print_word: + //SEG100 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#71 [phi:print_word->print_byte#0] -- register_copy + //SEG101 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + jsr print_byte + jmp b1 + //SEG102 print_word::@1 + b1: + //SEG103 [48] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#1 ] ) -- vbuxx=_lo_vwuz1 + lda w + tax + //SEG104 [49] call print_byte param-assignment [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + //SEG105 [51] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + print_byte_from_b1: + //SEG106 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG107 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + jsr print_byte + jmp breturn + //SEG108 print_word::@return + breturn: + //SEG109 [50] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + rts +} +//SEG110 print_byte print_byte: { - //SEG88 [40] (byte~) print_byte::$0 ← (byte) print_byte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#4 char_cursor#41 print_byte::$0 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_byte::$0 ] ) -- vbuaa=vbuxx_ror_4 + //SEG111 [52] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 char_cursor#72 print_byte::$0 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_byte::$0 ] ) -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG89 [41] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#4 char_cursor#41 print_char::ch#0 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG112 [53] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#6 char_cursor#72 print_char::ch#0 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda hextab,y - //SEG90 [42] call print_char param-assignment [ char_cursor#28 print_byte::b#4 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_byte::b#4 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_byte::b#4 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::b#4 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::b#4 ] ) - //SEG91 [47] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG113 [54] call print_char param-assignment [ char_cursor#11 print_byte::b#6 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::b#6 ] ) + //SEG114 [59] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG92 [47] phi (byte*) char_cursor#27 = (byte*) char_cursor#41 [phi:print_byte->print_char#0] -- register_copy - //SEG93 [47] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG115 [59] phi (byte*) char_cursor#45 = (byte*) char_cursor#72 [phi:print_byte->print_char#0] -- register_copy + //SEG116 [59] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG94 print_byte::@1 + //SEG117 print_byte::@1 b1: - //SEG95 [43] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#28 print_byte::$2 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_byte::$2 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_byte::$2 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::$2 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG118 [55] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG96 [44] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#28 print_char::ch#1 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_char::ch#1 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_char::ch#1 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_char::ch#1 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG119 [56] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda hextab,y - //SEG97 [45] call print_char param-assignment [ char_cursor#28 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - //SEG98 [47] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG120 [57] call print_char param-assignment [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) + //SEG121 [59] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG99 [47] phi (byte*) char_cursor#27 = (byte*) char_cursor#28 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG100 [47] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG122 [59] phi (byte*) char_cursor#45 = (byte*) char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG123 [59] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG101 print_byte::@return + //SEG124 print_byte::@return breturn: - //SEG102 [46] return [ char_cursor#28 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 ] ) + //SEG125 [58] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) rts hextab: .text "0123456789abcdef" } -//SEG103 print_char +//SEG126 print_char print_char: { - //SEG104 [48] *((byte*) char_cursor#27) ← (byte) print_char::ch#2 [ char_cursor#27 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#27 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#27 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#27 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#27 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#27 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#27 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#27 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#27 ] ) -- _deref_pbuz1=vbuaa + //SEG127 [60] *((byte*) char_cursor#45) ← (byte) print_char::ch#2 [ char_cursor#45 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#45 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (char_cursor),y - //SEG105 [49] (byte*) char_cursor#28 ← ++ (byte*) char_cursor#27 [ char_cursor#28 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] ) -- pbuz1=_inc_pbuz1 + //SEG128 [61] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#45 [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: jmp breturn - //SEG106 print_char::@return + //SEG129 print_char::@return breturn: - //SEG107 [50] return [ char_cursor#28 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] ) + //SEG130 [62] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) rts } -//SEG108 print_str +//SEG131 print_str print_str: { - .label str = 7 - //SEG109 [52] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + .label str = 5 + //SEG132 [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: - //SEG110 [52] phi (byte*) char_cursor#2 = (byte*) char_cursor#28 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG111 [52] phi (byte*) print_str::str#4 = (byte*) print_str::str#6 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG133 [64] phi (byte*) char_cursor#2 = (byte*) char_cursor#11 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG134 [64] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG112 print_str::@1 + //SEG135 print_str::@1 b1: - //SEG113 [53] if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG136 [65] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG114 print_str::@return + //SEG137 print_str::@return breturn: - //SEG115 [54] return [ char_cursor#2 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 ] ) + //SEG138 [66] return [ char_cursor#2 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 ] ) rts - //SEG116 print_str::@2 + //SEG139 print_str::@2 b2: - //SEG117 [55] *((byte*) char_cursor#2) ← *((byte*) print_str::str#4) [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) -- _deref_pbuz1=_deref_pbuz2 + //SEG140 [67] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (char_cursor),y - //SEG118 [56] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#4 char_cursor#1 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_str::str#4 char_cursor#1 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 print_str::str#4 char_cursor#1 ] main:2::print_str:25 [ main::i#10 line_cursor#13 print_str::str#4 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG141 [68] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 print_str::str#7 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: - //SEG119 [57] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_str::str#0 char_cursor#1 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 print_str::str#0 char_cursor#1 ] main:2::print_str:25 [ main::i#10 line_cursor#13 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG142 [69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG120 div8u -div8u: { - .label dividend = 9 - .label divisor = $c - .label quotient = $a - .label return = $a - //SEG121 [59] phi from div8u to div8u::@1 [phi:div8u->div8u::@1] - b1_from_div8u: - //SEG122 [59] phi (byte) div8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#0] -- vbuxx=vbuc1 +//SEG143 div16u +div16u: { + .label dividend = 5 + .label divisor = $f + .label return = 5 + .label rem = 9 + .label quotient = 7 + .label return_1 = 7 + //SEG144 [71] phi from div16u to div16u::@1 [phi:div16u->div16u::@1] + b1_from_div16u: + //SEG145 [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 - //SEG123 [59] phi (byte) div8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#1] -- vbuz1=vbuc1 + //SEG146 [71] phi (word) div16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->div16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient - //SEG124 [59] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8u->div8u::@1#2] -- register_copy - //SEG125 [59] phi (byte) div8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#3] -- vbuyy=vbuc1 - ldy #0 + lda #0 + sta quotient+1 + //SEG147 [71] phi (word) div16u::dividend#2 = (word) div16u::dividend#0 [phi:div16u->div16u::@1#2] -- register_copy + //SEG148 [71] phi (word) div16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->div16u::@1#3] -- vwuz1=vbuc1 + lda #0 + sta rem + lda #0 + sta rem+1 jmp b1 - //SEG126 [59] phi from div8u::@3 to div8u::@1 [phi:div8u::@3->div8u::@1] + //SEG149 [71] phi from div16u::@3 to div16u::@1 [phi:div16u::@3->div16u::@1] b1_from_b3: - //SEG127 [59] phi (byte) div8u::i#2 = (byte) div8u::i#1 [phi:div8u::@3->div8u::@1#0] -- register_copy - //SEG128 [59] phi (byte) div8u::quotient#3 = (byte) div8u::return#1 [phi:div8u::@3->div8u::@1#1] -- register_copy - //SEG129 [59] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:div8u::@3->div8u::@1#2] -- register_copy - //SEG130 [59] phi (byte) div8u::rem#4 = (byte) div8u::rem#8 [phi:div8u::@3->div8u::@1#3] -- register_copy + //SEG150 [71] phi (byte) div16u::i#2 = (byte) div16u::i#1 [phi:div16u::@3->div16u::@1#0] -- register_copy + //SEG151 [71] phi (word) div16u::quotient#3 = (word) div16u::return#1 [phi:div16u::@3->div16u::@1#1] -- register_copy + //SEG152 [71] phi (word) div16u::dividend#2 = (word) div16u::dividend#1 [phi:div16u::@3->div16u::@1#2] -- register_copy + //SEG153 [71] phi (word) div16u::rem#4 = (word) div16u::rem#8 [phi:div16u::@3->div16u::@1#3] -- register_copy jmp b1 - //SEG131 div8u::@1 + //SEG154 div16u::@1 b1: - //SEG132 [60] (byte) div8u::rem#1 ← (byte) div8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) -- vbuyy=vbuyy_rol_1 - tya - asl - tay - //SEG133 [61] (byte~) div8u::$1 ← (byte) div8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ) -- vbuaa=vbuz1_band_vbuc1 - lda #$80 - and dividend - //SEG134 [62] if((byte~) div8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8u::@2 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) -- vbuaa_eq_0_then_la1 + //SEG155 [72] (word) div16u::rem#1 ← (word) div16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ) -- vwuz1=vwuz1_rol_1 + asl rem + rol rem+1 + //SEG156 [73] (byte~) div16u::$1 ← > (word) div16u::dividend#2 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$1 ] ) -- vbuaa=_hi_vwuz1 + lda dividend+1 + //SEG157 [74] (byte~) div16u::$2 ← (byte~) div16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$2 ] ) -- vbuaa=vbuaa_band_vbuc1 + and #$80 + //SEG158 [75] if((byte~) div16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div16u::@2 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG135 div8u::@4 + //SEG159 div16u::@4 b4: - //SEG136 [63] (byte) div8u::rem#2 ← ++ (byte) div8u::rem#1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ) -- vbuyy=_inc_vbuyy - iny - //SEG137 [64] phi from div8u::@1 div8u::@4 to div8u::@2 [phi:div8u::@1/div8u::@4->div8u::@2] + //SEG160 [76] (word) div16u::rem#2 ← ++ (word) div16u::rem#1 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#2 ] ) -- vwuz1=_inc_vwuz1 + inc rem + bne !+ + inc rem+1 + !: + //SEG161 [77] phi from div16u::@1 div16u::@4 to div16u::@2 [phi:div16u::@1/div16u::@4->div16u::@2] b2_from_b1: b2_from_b4: - //SEG138 [64] phi (byte) div8u::rem#5 = (byte) div8u::rem#1 [phi:div8u::@1/div8u::@4->div8u::@2#0] -- register_copy + //SEG162 [77] phi (word) div16u::rem#5 = (word) div16u::rem#1 [phi:div16u::@1/div16u::@4->div16u::@2#0] -- register_copy jmp b2 - //SEG139 div8u::@2 + //SEG163 div16u::@2 b2: - //SEG140 [65] (byte) div8u::dividend#1 ← (byte) div8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ) -- vbuz1=vbuz1_rol_1 + //SEG164 [78] (word) div16u::dividend#1 ← (word) div16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::quotient#3 div16u::i#2 div16u::dividend#1 div16u::rem#5 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::quotient#3 div16u::i#2 div16u::dividend#1 div16u::rem#5 ] ) -- vwuz1=vwuz1_rol_1 asl dividend - //SEG141 [66] (byte) div8u::quotient#1 ← (byte) div8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) -- vbuz1=vbuz1_rol_1 + rol dividend+1 + //SEG165 [79] (word) div16u::quotient#1 ← (word) div16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ) -- vwuz1=vwuz1_rol_1 asl quotient - //SEG142 [67] if((byte) div8u::rem#5<(byte) div8u::divisor#0) goto div8u::@3 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) -- vbuyy_lt_vbuz1_then_la1 + rol quotient+1 + //SEG166 [80] if((word) div16u::rem#5<(word) div16u::divisor#0) goto div16u::@3 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ) -- vwuz1_lt_vwuz2_then_la1 + lda rem+1 + cmp divisor+1 + bcc b3_from_b2 + bne !+ + lda rem + cmp divisor + bcc b3_from_b2 + !: + jmp b5 + //SEG167 div16u::@5 + b5: + //SEG168 [81] (word) div16u::quotient#2 ← ++ (word) div16u::quotient#1 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#2 ] ) -- vwuz1=_inc_vwuz1 + inc quotient + bne !+ + inc quotient+1 + !: + //SEG169 [82] (word) div16u::rem#3 ← (word) div16u::rem#5 - (word) div16u::divisor#0 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::quotient#2 div16u::rem#3 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::quotient#2 div16u::rem#3 ] ) -- vwuz1=vwuz1_minus_vwuz2 + lda rem + sec + sbc divisor + sta rem + lda rem+1 + sbc divisor+1 + sta rem+1 + //SEG170 [83] phi from div16u::@2 div16u::@5 to div16u::@3 [phi:div16u::@2/div16u::@5->div16u::@3] + b3_from_b2: + b3_from_b5: + //SEG171 [83] phi (word) div16u::return#1 = (word) div16u::quotient#1 [phi:div16u::@2/div16u::@5->div16u::@3#0] -- register_copy + //SEG172 [83] phi (word) div16u::rem#8 = (word) div16u::rem#5 [phi:div16u::@2/div16u::@5->div16u::@3#1] -- register_copy + jmp b3 + //SEG173 div16u::@3 + b3: + //SEG174 [84] (byte) div16u::i#1 ← ++ (byte) div16u::i#2 [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG175 [85] if((byte) div16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto div16u::@1 [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + cpx #$10 + bne b1_from_b3 + jmp breturn + //SEG176 div16u::@return + breturn: + //SEG177 [86] return [ div16u::rem#8 div16u::return#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::return#1 ] ) + rts +} +//SEG178 test_8u +test_8u: { + .label rem = $ff + .label dividend = $13 + .label divisor = $14 + .label res = $b + .label i = 2 + //SEG179 [88] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] + b1_from_test_8u: + //SEG180 [88] phi (byte*) line_cursor#25 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 + lda #<$400 + sta line_cursor + lda #>$400 + sta line_cursor+1 + //SEG181 [88] phi (byte*) char_cursor#75 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 + lda #<$400 + sta char_cursor + lda #>$400 + sta char_cursor+1 + //SEG182 [88] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 + lda #0 + sta i + jmp b1 + //SEG183 test_8u::@1 + b1: + //SEG184 [89] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy i + lda dividends,y + sta dividend + //SEG185 [90] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy i + lda divisors,y + sta divisor + //SEG186 [91] (byte) div8u::dividend#0 ← (byte) test_8u::dividend#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 ] ) -- vbuz1=vbuz2 + lda dividend + sta div8u.dividend + //SEG187 [92] (byte) div8u::divisor#0 ← (byte) test_8u::divisor#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ) + // (byte) div8u::divisor#0 = (byte) test_8u::divisor#0 // register copy zp ZP_BYTE:20 + //SEG188 [93] call div8u param-assignment [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ) + //SEG189 [116] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] + div8u_from_b1: + jsr div8u + //SEG190 [94] (byte) div8u::return#0 ← (byte) div8u::return#1 [ line_cursor#25 char_cursor#75 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::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#0 ] ) -- vbuaa=vbuz1 + lda div8u.return + jmp b3 + //SEG191 test_8u::@3 + b3: + //SEG192 [95] (byte) test_8u::res#0 ← (byte) div8u::return#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 test_8u::res#0 ] ) -- vbuz1=vbuaa + sta res + //SEG193 [96] (byte) print_byte::b#2 ← (byte) test_8u::dividend#0 [ line_cursor#25 print_byte::b#2 char_cursor#75 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 print_byte::b#2 char_cursor#75 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) -- vbuxx=vbuz1 + ldx dividend + //SEG194 [97] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) + //SEG195 [51] phi from test_8u::@3 to print_byte [phi:test_8u::@3->print_byte] + print_byte_from_b3: + //SEG196 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#75 [phi:test_8u::@3->print_byte#0] -- register_copy + //SEG197 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:test_8u::@3->print_byte#1] -- register_copy + jsr print_byte + //SEG198 [98] phi from test_8u::@3 to test_8u::@4 [phi:test_8u::@3->test_8u::@4] + b4_from_b3: + jmp b4 + //SEG199 test_8u::@4 + b4: + //SEG200 [99] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) + //SEG201 [63] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str] + print_str_from_b4: + //SEG202 [63] phi (byte*) print_str::str#9 = (const string) test_8u::str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + jmp b5 + //SEG203 test_8u::@5 + b5: + //SEG204 [100] (byte) print_byte::b#3 ← (byte) test_8u::divisor#0 [ line_cursor#25 char_cursor#2 print_byte::b#3 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#3 test_8u::i#10 test_8u::res#0 ] ) -- vbuxx=vbuz1 + ldx divisor + //SEG205 [101] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] ) + //SEG206 [51] phi from test_8u::@5 to print_byte [phi:test_8u::@5->print_byte] + print_byte_from_b5: + //SEG207 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#2 [phi:test_8u::@5->print_byte#0] -- register_copy + //SEG208 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:test_8u::@5->print_byte#1] -- register_copy + jsr print_byte + //SEG209 [102] phi from test_8u::@5 to test_8u::@6 [phi:test_8u::@5->test_8u::@6] + b6_from_b5: + jmp b6 + //SEG210 test_8u::@6 + b6: + //SEG211 [103] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::res#0 ] ) + //SEG212 [63] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str] + print_str_from_b6: + //SEG213 [63] phi (byte*) print_str::str#9 = (const string) test_8u::str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + jmp b7 + //SEG214 test_8u::@7 + b7: + //SEG215 [104] (byte) print_byte::b#4 ← (byte) test_8u::res#0 [ line_cursor#25 char_cursor#2 print_byte::b#4 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#4 test_8u::i#10 ] ) -- vbuxx=vbuz1 + ldx res + //SEG216 [105] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ) + //SEG217 [51] phi from test_8u::@7 to print_byte [phi:test_8u::@7->print_byte] + print_byte_from_b7: + //SEG218 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#2 [phi:test_8u::@7->print_byte#0] -- register_copy + //SEG219 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:test_8u::@7->print_byte#1] -- register_copy + jsr print_byte + //SEG220 [106] phi from test_8u::@7 to test_8u::@8 [phi:test_8u::@7->test_8u::@8] + b8_from_b7: + jmp b8 + //SEG221 test_8u::@8 + b8: + //SEG222 [107] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 ] ) + //SEG223 [63] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str] + print_str_from_b8: + //SEG224 [63] phi (byte*) print_str::str#9 = (const string) test_8u::str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + jmp b9 + //SEG225 test_8u::@9 + b9: + //SEG226 [108] (byte) print_byte::b#5 ← *((const byte*) test_8u::rem#0) [ line_cursor#25 char_cursor#2 print_byte::b#5 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#5 test_8u::i#10 ] ) -- vbuxx=_deref_pbuc1 + ldx rem + //SEG227 [109] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ) + //SEG228 [51] phi from test_8u::@9 to print_byte [phi:test_8u::@9->print_byte] + print_byte_from_b9: + //SEG229 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#2 [phi:test_8u::@9->print_byte#0] -- register_copy + //SEG230 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:test_8u::@9->print_byte#1] -- register_copy + jsr print_byte + //SEG231 [110] phi from test_8u::@9 to test_8u::@10 [phi:test_8u::@9->test_8u::@10] + b10_from_b9: + jmp b10 + //SEG232 test_8u::@10 + b10: + //SEG233 [111] call print_ln param-assignment [ line_cursor#1 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#10 ] ) + //SEG234 [40] phi from test_8u::@10 to print_ln [phi:test_8u::@10->print_ln] + print_ln_from_b10: + //SEG235 [40] phi (byte*) line_cursor#22 = (byte*) line_cursor#25 [phi:test_8u::@10->print_ln#0] -- register_copy + jsr print_ln + jmp b11 + //SEG236 test_8u::@11 + b11: + //SEG237 [112] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 [ line_cursor#1 test_8u::i#1 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 ] ) -- vbuz1=_inc_vbuz1 + inc i + //SEG238 [113] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@12 [ line_cursor#1 test_8u::i#1 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda i + cmp #6 + bne b12 + jmp breturn + //SEG239 test_8u::@return + breturn: + //SEG240 [114] return [ line_cursor#1 ] ( main:2::test_8u:7 [ line_cursor#1 ] ) + rts + //SEG241 test_8u::@12 + b12: + //SEG242 [115] (byte*~) char_cursor#98 ← (byte*) line_cursor#1 [ line_cursor#1 test_8u::i#1 char_cursor#98 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 char_cursor#98 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG243 [88] phi from test_8u::@12 to test_8u::@1 [phi:test_8u::@12->test_8u::@1] + b1_from_b12: + //SEG244 [88] phi (byte*) line_cursor#25 = (byte*) line_cursor#1 [phi:test_8u::@12->test_8u::@1#0] -- register_copy + //SEG245 [88] phi (byte*) char_cursor#75 = (byte*~) char_cursor#98 [phi:test_8u::@12->test_8u::@1#1] -- register_copy + //SEG246 [88] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy + jmp b1 + str: .text " / @" + str1: .text " = @" + str2: .text " @" + dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff + divisors: .byte 5, 7, $b, $d, $11, $13 +} +//SEG247 div8u +div8u: { + .label dividend = $b + .label divisor = $14 + .label quotient = $c + .label return = $c + //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 + ldx #0 + //SEG250 [117] phi (byte) div8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#1] -- vbuz1=vbuc1 + lda #0 + sta quotient + //SEG251 [117] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8u->div8u::@1#2] -- register_copy + //SEG252 [117] phi (byte) div8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#3] -- vbuyy=vbuc1 + ldy #0 + jmp b1 + //SEG253 [117] phi from div8u::@3 to div8u::@1 [phi:div8u::@3->div8u::@1] + b1_from_b3: + //SEG254 [117] phi (byte) div8u::i#2 = (byte) div8u::i#1 [phi:div8u::@3->div8u::@1#0] -- register_copy + //SEG255 [117] phi (byte) div8u::quotient#3 = (byte) div8u::return#1 [phi:div8u::@3->div8u::@1#1] -- register_copy + //SEG256 [117] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:div8u::@3->div8u::@1#2] -- register_copy + //SEG257 [117] phi (byte) div8u::rem#4 = (byte) div8u::rem#8 [phi:div8u::@3->div8u::@1#3] -- register_copy + jmp b1 + //SEG258 div8u::@1 + b1: + //SEG259 [118] (byte) div8u::rem#1 ← (byte) div8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) -- vbuyy=vbuyy_rol_1 + tya + asl + tay + //SEG260 [119] (byte~) div8u::$1 ← (byte) div8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ) -- vbuaa=vbuz1_band_vbuc1 + lda #$80 + and dividend + //SEG261 [120] if((byte~) div8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8u::@2 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) -- vbuaa_eq_0_then_la1 + cmp #0 + beq b2_from_b1 + jmp b4 + //SEG262 div8u::@4 + b4: + //SEG263 [121] (byte) div8u::rem#2 ← ++ (byte) div8u::rem#1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ) -- vbuyy=_inc_vbuyy + iny + //SEG264 [122] phi from div8u::@1 div8u::@4 to div8u::@2 [phi:div8u::@1/div8u::@4->div8u::@2] + b2_from_b1: + b2_from_b4: + //SEG265 [122] phi (byte) div8u::rem#5 = (byte) div8u::rem#1 [phi:div8u::@1/div8u::@4->div8u::@2#0] -- register_copy + jmp b2 + //SEG266 div8u::@2 + b2: + //SEG267 [123] (byte) div8u::dividend#1 ← (byte) div8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ) -- vbuz1=vbuz1_rol_1 + asl dividend + //SEG268 [124] (byte) div8u::quotient#1 ← (byte) div8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) -- vbuz1=vbuz1_rol_1 + asl quotient + //SEG269 [125] if((byte) div8u::rem#5<(byte) div8u::divisor#0) goto div8u::@3 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) -- vbuyy_lt_vbuz1_then_la1 cpy divisor bcc b3_from_b2 jmp b5 - //SEG143 div8u::@5 + //SEG270 div8u::@5 b5: - //SEG144 [68] (byte) div8u::quotient#2 ← ++ (byte) div8u::quotient#1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ) -- vbuz1=_inc_vbuz1 + //SEG271 [126] (byte) div8u::quotient#2 ← ++ (byte) div8u::quotient#1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ) -- vbuz1=_inc_vbuz1 inc quotient - //SEG145 [69] (byte) div8u::rem#3 ← (byte) div8u::rem#5 - (byte) div8u::divisor#0 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ) -- vbuyy=vbuyy_minus_vbuz1 + //SEG272 [127] (byte) div8u::rem#3 ← (byte) div8u::rem#5 - (byte) div8u::divisor#0 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ) -- vbuyy=vbuyy_minus_vbuz1 tya sec sbc divisor tay - //SEG146 [70] phi from div8u::@2 div8u::@5 to div8u::@3 [phi:div8u::@2/div8u::@5->div8u::@3] + //SEG273 [128] phi from div8u::@2 div8u::@5 to div8u::@3 [phi:div8u::@2/div8u::@5->div8u::@3] b3_from_b2: b3_from_b5: - //SEG147 [70] phi (byte) div8u::return#1 = (byte) div8u::quotient#1 [phi:div8u::@2/div8u::@5->div8u::@3#0] -- register_copy - //SEG148 [70] phi (byte) div8u::rem#8 = (byte) div8u::rem#5 [phi:div8u::@2/div8u::@5->div8u::@3#1] -- register_copy + //SEG274 [128] phi (byte) div8u::return#1 = (byte) div8u::quotient#1 [phi:div8u::@2/div8u::@5->div8u::@3#0] -- register_copy + //SEG275 [128] phi (byte) div8u::rem#8 = (byte) div8u::rem#5 [phi:div8u::@2/div8u::@5->div8u::@3#1] -- register_copy jmp b3 - //SEG149 div8u::@3 + //SEG276 div8u::@3 b3: - //SEG150 [71] (byte) div8u::i#1 ← ++ (byte) div8u::i#2 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG277 [129] (byte) div8u::i#1 ← ++ (byte) div8u::i#2 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG151 [72] if((byte) div8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto div8u::@1 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG278 [130] if((byte) div8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto div8u::@1 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1_from_b3 jmp b6 - //SEG152 div8u::@6 + //SEG279 div8u::@6 b6: - //SEG153 [73] *((const byte*) main::rem#0) ← (byte) div8u::rem#8 [ div8u::return#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ) -- _deref_pbuc1=vbuyy - sty main.rem + //SEG280 [131] *((const byte*) test_8u::rem#0) ← (byte) div8u::rem#8 [ div8u::return#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ) -- _deref_pbuc1=vbuyy + sty test_8u.rem jmp breturn - //SEG154 div8u::@return + //SEG281 div8u::@return breturn: - //SEG155 [74] return [ div8u::return#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ) + //SEG282 [132] return [ div8u::return#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ) rts } -//SEG156 print_cls +//SEG283 print_cls print_cls: { .label sc = 3 - //SEG157 [76] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG284 [134] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG158 [76] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //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 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG159 [76] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG286 [134] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG160 [76] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG287 [134] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG161 print_cls::@1 + //SEG288 print_cls::@1 b1: - //SEG162 [77] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG289 [135] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG163 [78] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG290 [136] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG164 [79] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 + //SEG291 [137] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -3091,16 +5214,20 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG165 print_cls::@return + //SEG292 print_cls::@return breturn: - //SEG166 [80] return [ ] ( main:2::print_cls:5 [ ] ) + //SEG293 [138] return [ ] ( main:2::print_cls:5 [ ] ) rts } ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b10 +Removing instruction jmp b13 Removing instruction jmp bend Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b3 Removing instruction jmp b4 Removing instruction jmp b5 Removing instruction jmp b6 @@ -3109,7 +5236,8 @@ Removing instruction jmp b8 Removing instruction jmp b9 Removing instruction jmp b10 Removing instruction jmp b11 -Removing instruction jmp b12 +Removing instruction jmp breturn +Removing instruction jmp b1 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn @@ -3123,36 +5251,71 @@ Removing instruction jmp b4 Removing instruction jmp b2 Removing instruction jmp b5 Removing instruction jmp b3 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b3 +Removing instruction jmp b4 +Removing instruction jmp b5 +Removing instruction jmp b6 +Removing instruction jmp b7 +Removing instruction jmp b8 +Removing instruction jmp b9 +Removing instruction jmp b10 +Removing instruction jmp b11 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b4 +Removing instruction jmp b2 +Removing instruction jmp b5 +Removing instruction jmp b3 Removing instruction jmp b6 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination +Removing instruction lda #0 +Removing instruction lda #0 Removing instruction ldy i +Removing instruction lda i Removing instruction ldy #0 Replacing instruction lda #0 with TXA +Removing instruction lda #0 +Removing instruction lda #0 +Removing instruction lda #0 +Removing instruction ldy i +Replacing instruction lda #0 with TXA Replacing instruction ldy #0 with TAY Succesful ASM optimization Pass5UnnecesaryLoadElimination +Replacing label b1_from_b11 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b2 with b1 Replacing label b2_from_b1 with b2 Replacing label b3_from_b2 with b3 +Replacing label b3_from_b2 with b3 +Replacing label b1_from_b3 with b1 +Replacing label b2_from_b1 with b2 +Replacing label b3_from_b2 with b3 Replacing label b1_from_b3 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b10_from_bbegin: -Removing instruction main_from_b10: -Removing instruction bend_from_b10: -Removing instruction b5_from_b4: -Removing instruction print_str_from_b5: -Removing instruction b7_from_b6: -Removing instruction print_str_from_b7: -Removing instruction b9_from_b8: -Removing instruction print_str_from_b9: -Removing instruction b11_from_b10: -Removing instruction print_ln_from_b11: +Removing instruction b13_from_bbegin: +Removing instruction main_from_b13: +Removing instruction bend_from_b13: +Removing instruction b1_from_main: +Removing instruction test_8u_from_b1: +Removing instruction b2_from_b1: +Removing instruction test_16u_from_b2: +Removing instruction b1_from_b11: +Removing instruction b4_from_b3: +Removing instruction print_str_from_b4: +Removing instruction b6_from_b5: +Removing instruction print_str_from_b6: +Removing instruction b8_from_b7: +Removing instruction print_str_from_b8: +Removing instruction b10_from_b9: +Removing instruction print_ln_from_b10: Removing instruction b1_from_print_ln: Removing instruction b1_from_b1: Removing instruction b1_from_print_str: @@ -3162,28 +5325,47 @@ Removing instruction b2_from_b1: Removing instruction b2_from_b4: Removing instruction b3_from_b2: Removing instruction b3_from_b5: +Removing instruction b4_from_b3: +Removing instruction print_str_from_b4: +Removing instruction b6_from_b5: +Removing instruction print_str_from_b6: +Removing instruction b8_from_b7: +Removing instruction print_str_from_b8: +Removing instruction b10_from_b9: +Removing instruction print_ln_from_b10: +Removing instruction b1_from_b3: +Removing instruction b2_from_b1: +Removing instruction b2_from_b4: +Removing instruction b3_from_b2: +Removing instruction b3_from_b5: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b10: +Removing instruction b13: Removing instruction bend: Removing instruction print_cls_from_main: -Removing instruction b1_from_main: -Removing instruction div8u_from_b1: -Removing instruction b4: -Removing instruction print_byte_from_b4: -Removing instruction b5: -Removing instruction b6: -Removing instruction print_byte_from_b6: -Removing instruction b7: -Removing instruction b8: -Removing instruction print_byte_from_b8: -Removing instruction b9: -Removing instruction b10: -Removing instruction print_byte_from_b10: -Removing instruction b11: -Removing instruction b12: +Removing instruction b1: +Removing instruction b2: Removing instruction breturn: -Removing instruction b1_from_b13: +Removing instruction b1_from_test_16u: +Removing instruction div16u_from_b1: +Removing instruction b3: +Removing instruction print_word_from_b3: +Removing instruction b4: +Removing instruction b5: +Removing instruction print_word_from_b5: +Removing instruction b6: +Removing instruction b7: +Removing instruction print_word_from_b7: +Removing instruction b8: +Removing instruction b9: +Removing instruction print_word_from_b9: +Removing instruction b10: +Removing instruction b11: +Removing instruction breturn: +Removing instruction breturn: +Removing instruction print_byte_from_print_word: +Removing instruction b1: +Removing instruction print_byte_from_b1: Removing instruction breturn: Removing instruction print_char_from_print_byte: Removing instruction b1: @@ -3191,6 +5373,27 @@ Removing instruction print_char_from_b1: Removing instruction breturn: Removing instruction breturn: Removing instruction breturn: +Removing instruction b1_from_div16u: +Removing instruction b4: +Removing instruction b5: +Removing instruction breturn: +Removing instruction b1_from_test_8u: +Removing instruction div8u_from_b1: +Removing instruction b3: +Removing instruction print_byte_from_b3: +Removing instruction b4: +Removing instruction b5: +Removing instruction print_byte_from_b5: +Removing instruction b6: +Removing instruction b7: +Removing instruction print_byte_from_b7: +Removing instruction b8: +Removing instruction b9: +Removing instruction print_byte_from_b9: +Removing instruction b10: +Removing instruction b11: +Removing instruction breturn: +Removing instruction b1_from_b12: Removing instruction b1_from_div8u: Removing instruction b4: Removing instruction b5: @@ -3201,20 +5404,56 @@ Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination Removing instruction jmp b1 Removing instruction jmp b1 +Removing instruction jmp b1 +Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @10 +(label) @13 (label) @begin (label) @end (byte*) char_cursor -(byte*) char_cursor#1 char_cursor zp ZP_WORD:5 101.0 -(byte*) char_cursor#2 char_cursor zp ZP_WORD:5 33.8 -(byte*) char_cursor#27 char_cursor zp ZP_WORD:5 4.0 -(byte*) char_cursor#28 char_cursor zp ZP_WORD:5 5.349999999999999 -(byte*) char_cursor#41 char_cursor zp ZP_WORD:5 15.333333333333332 -(byte*) char_cursor#42 char_cursor zp ZP_WORD:5 2.4444444444444446 -(byte*~) char_cursor#48 char_cursor zp ZP_WORD:5 22.0 +(byte*) char_cursor#1 char_cursor zp ZP_WORD:7 101.0 +(byte*) char_cursor#11 char_cursor zp ZP_WORD:7 3.40625 +(byte*) char_cursor#2 char_cursor zp ZP_WORD:7 23.1875 +(byte*) char_cursor#45 char_cursor zp ZP_WORD:7 4.0 +(byte*) char_cursor#71 char_cursor zp ZP_WORD:7 23.0 +(byte*) char_cursor#72 char_cursor zp ZP_WORD:7 16.666666666666664 +(byte*) char_cursor#75 char_cursor zp ZP_WORD:7 2.4444444444444446 +(byte*~) char_cursor#84 char_cursor zp ZP_WORD:7 22.0 +(byte*~) char_cursor#98 char_cursor zp ZP_WORD:7 22.0 +(word()) div16u((word) div16u::dividend , (word) div16u::divisor) +(byte~) div16u::$1 reg byte a 202.0 +(byte~) div16u::$2 reg byte a 202.0 +(label) div16u::@1 +(label) div16u::@2 +(label) div16u::@3 +(label) div16u::@4 +(label) div16u::@5 +(label) div16u::@return +(word) div16u::dividend +(word) div16u::dividend#0 dividend zp ZP_WORD:5 4.333333333333333 +(word) div16u::dividend#1 dividend zp ZP_WORD:5 25.25 +(word) div16u::dividend#2 dividend zp ZP_WORD:5 43.57142857142858 +(word) div16u::divisor +(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:7 151.5 +(word) div16u::quotient#2 quotient zp ZP_WORD:7 101.0 +(word) div16u::quotient#3 quotient zp ZP_WORD:7 25.25 +(word) div16u::rem +(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:5 22.0 +(word) div16u::return#1 return#1 zp ZP_WORD:7 62.8 (byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor , (byte*) div8u::remainder) (byte~) div8u::$1 reg byte a 202.0 (label) div8u::@1 @@ -3225,18 +5464,18 @@ FINAL SYMBOL TABLE (label) div8u::@6 (label) div8u::@return (byte) div8u::dividend -(byte) div8u::dividend#0 dividend zp ZP_BYTE:9 4.333333333333333 -(byte) div8u::dividend#1 dividend zp ZP_BYTE:9 25.25 -(byte) div8u::dividend#2 dividend zp ZP_BYTE:9 50.83333333333333 +(byte) div8u::dividend#0 dividend zp ZP_BYTE:11 4.333333333333333 +(byte) div8u::dividend#1 dividend zp ZP_BYTE:11 25.25 +(byte) div8u::dividend#2 dividend zp ZP_BYTE:11 50.83333333333333 (byte) div8u::divisor -(byte) div8u::divisor#0 divisor zp ZP_BYTE:12 13.3125 +(byte) div8u::divisor#0 divisor zp ZP_BYTE:20 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:10 151.5 -(byte) div8u::quotient#2 quotient zp ZP_BYTE:10 101.0 -(byte) div8u::quotient#3 quotient zp ZP_BYTE:10 28.857142857142858 +(byte) div8u::quotient#1 quotient zp ZP_BYTE:12 151.5 +(byte) div8u::quotient#2 quotient zp ZP_BYTE:12 101.0 +(byte) div8u::quotient#3 quotient zp ZP_BYTE:12 28.857142857142858 (byte) div8u::rem (byte) div8u::rem#1 reg byte y 101.0 (byte) div8u::rem#2 reg byte y 202.0 @@ -3247,53 +5486,29 @@ FINAL SYMBOL TABLE (byte*) div8u::remainder (byte) div8u::return (byte) div8u::return#0 reg byte a 22.0 -(byte) div8u::return#1 return zp ZP_BYTE:10 52.33333333333333 +(byte) div8u::return#1 return zp ZP_BYTE:12 52.33333333333333 (byte*) line_cursor -(byte*) line_cursor#1 line_cursor zp ZP_WORD:3 46.42857142857143 -(byte*) line_cursor#13 line_cursor zp ZP_WORD:3 0.5416666666666666 -(byte*) line_cursor#6 line_cursor zp ZP_WORD:3 204.0 +(byte*) line_cursor#1 line_cursor zp ZP_WORD:3 9.131578947368421 +(byte*) line_cursor#11 line_cursor zp ZP_WORD:3 204.0 +(byte*) line_cursor#22 line_cursor zp ZP_WORD:3 24.0 +(byte*) line_cursor#25 line_cursor zp ZP_WORD:3 0.9565217391304348 (void()) main() (label) main::@1 -(label) main::@10 -(label) main::@11 -(label) main::@12 -(label) main::@13 -(label) main::@4 -(label) main::@5 -(label) main::@6 -(label) main::@7 -(label) main::@8 -(label) main::@9 +(label) main::@2 (label) main::@return -(byte) main::dividend -(byte) main::dividend#0 dividend zp ZP_BYTE:11 4.714285714285714 -(byte[]) main::dividends -(const byte[]) main::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) main::divisor -(byte) main::divisor#0 divisor zp ZP_BYTE:12 3.3000000000000003 -(byte[]) main::divisors -(const byte[]) main::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) main::i -(byte) main::i#1 i zp ZP_BYTE:2 11.0 -(byte) main::i#10 i zp ZP_BYTE:2 1.8333333333333333 -(byte*) main::rem -(const byte*) main::rem#0 rem = ((byte*))(byte/word/signed word/dword/signed dword) 255 -(byte) main::res -(byte) main::res#0 res zp ZP_BYTE:9 2.4444444444444446 -(const string) main::str str = (string) " / @" -(const string) main::str1 str1 = (string) " = @" -(const string) main::str2 str2 = (string) " @" (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 reg byte a 4.0 (byte~) print_byte::$2 reg byte a 4.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 22.0 -(byte) print_byte::b#1 reg byte x 22.0 +(byte) print_byte::b#0 reg byte x 4.0 +(byte) print_byte::b#1 reg byte x 4.0 (byte) print_byte::b#2 reg byte x 22.0 (byte) print_byte::b#3 reg byte x 22.0 -(byte) print_byte::b#4 reg byte x 12.0 +(byte) print_byte::b#4 reg byte x 22.0 +(byte) print_byte::b#5 reg byte x 22.0 +(byte) print_byte::b#6 reg byte x 13.0 (byte[]) print_byte::hextab (const string) print_byte::hextab#0 hextab = (string) "0123456789abcdef" (void()) print_char((byte) print_char::ch) @@ -3316,193 +5531,302 @@ FINAL SYMBOL TABLE (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp ZP_WORD:7 202.0 -(byte*) print_str::str#4 str zp ZP_WORD:7 101.5 -(byte*) print_str::str#6 str zp ZP_WORD:7 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 +(word) print_word::w +(word) print_word::w#0 w zp ZP_WORD:5 11.0 +(word) print_word::w#1 w zp ZP_WORD:5 22.0 +(word) print_word::w#2 w zp ZP_WORD:5 22.0 +(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:9 110.0 +(void()) test_16u() +(label) test_16u::@1 +(label) test_16u::@10 +(label) test_16u::@11 +(label) test_16u::@3 +(label) test_16u::@4 +(label) test_16u::@5 +(label) test_16u::@6 +(label) test_16u::@7 +(label) test_16u::@8 +(label) test_16u::@9 +(label) test_16u::@return +(word) test_16u::dividend +(word) test_16u::dividend#0 dividend zp ZP_WORD:13 4.714285714285714 +(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: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:17 2.2 +(const string) test_16u::str str = (string) " / @" +(const string) test_16u::str1 str1 = (string) " = @" +(const string) test_16u::str2 str2 = (string) " @" +(void()) test_8u() +(label) test_8u::@1 +(label) test_8u::@10 +(label) test_8u::@11 +(label) test_8u::@12 +(label) test_8u::@3 +(label) test_8u::@4 +(label) test_8u::@5 +(label) test_8u::@6 +(label) test_8u::@7 +(label) test_8u::@8 +(label) test_8u::@9 +(label) test_8u::@return +(byte) test_8u::dividend +(byte) test_8u::dividend#0 dividend zp ZP_BYTE:19 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:20 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:2 11.0 +(byte) test_8u::i#10 i zp ZP_BYTE:2 1.8333333333333333 +(byte*) test_8u::rem +(const byte*) test_8u::rem#0 rem = ((byte*))(byte/word/signed word/dword/signed dword) 255 +(byte) test_8u::res +(byte) test_8u::res#0 res zp ZP_BYTE:11 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 [ main::i#10 main::i#1 ] -zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] -reg byte x [ print_byte::b#4 print_byte::b#3 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +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 print_str::str#7 print_str::str#9 print_str::str#0 div16u::dividend#2 div16u::dividend#0 div16u::dividend#1 div16u::return#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:5 [ char_cursor#27 char_cursor#41 char_cursor#2 char_cursor#42 char_cursor#48 char_cursor#28 char_cursor#1 ] -zp ZP_WORD:7 [ print_str::str#4 print_str::str#6 print_str::str#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::quotient#3 div16u::return#1 div16u::quotient#1 div16u::quotient#2 ] +zp ZP_WORD:9 [ div16u::rem#4 rem16u#16 div16u::rem#8 div16u::rem#5 div16u::rem#1 div16u::rem#2 div16u::rem#3 ] +reg byte x [ div16u::i#2 div16u::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:9 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 main::res#0 ] -zp ZP_BYTE:10 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] +zp ZP_BYTE:11 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 test_8u::res#0 ] +zp ZP_BYTE:12 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] reg byte x [ div8u::i#2 div8u::i#1 ] -zp ZP_BYTE:11 [ main::dividend#0 ] -zp ZP_BYTE:12 [ main::divisor#0 div8u::divisor#0 ] -reg byte a [ div8u::return#0 ] +zp ZP_WORD:13 [ test_16u::dividend#0 ] +zp ZP_WORD:15 [ test_16u::divisor#0 div16u::divisor#0 ] +zp ZP_WORD:17 [ test_16u::res#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:19 [ test_8u::dividend#0 ] +zp ZP_BYTE:20 [ test_8u::divisor#0 div8u::divisor#0 ] +reg byte a [ div8u::return#0 ] reg byte a [ div8u::$1 ] FINAL ASSEMBLER -Score: 16930 +Score: 31267 //SEG0 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" //SEG1 Global Constants & labels - .label char_cursor = 5 + .label char_cursor = 7 .label line_cursor = 3 + .label rem16u = 9 //SEG2 @begin -//SEG3 [1] phi from @begin to @10 [phi:@begin->@10] -//SEG4 @10 +//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] +//SEG4 @13 //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @10 to main [phi:@10->main] +//SEG6 [4] phi from @13 to main [phi:@13->main] jsr main -//SEG7 [3] phi from @10 to @end [phi:@10->@end] +//SEG7 [3] phi from @13 to @end [phi:@13->@end] //SEG8 @end //SEG9 main main: { - .label rem = $ff - .label dividend = $b - .label divisor = $c - .label res = 9 - .label i = 2 //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] ) - //SEG11 [75] phi from main to print_cls [phi:main->print_cls] + //SEG11 [133] phi from main to print_cls [phi:main->print_cls] jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG13 [6] phi (byte*) line_cursor#13 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 - lda #<$400 - sta line_cursor - lda #>$400 - sta line_cursor+1 - //SEG14 [6] phi (byte*) char_cursor#42 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#1] -- pbuz1=pbuc1 - lda #<$400 - sta char_cursor - lda #>$400 - sta char_cursor+1 - //SEG15 [6] phi (byte) main::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1 + //SEG13 main::@1 + //SEG14 [7] call test_8u param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + //SEG15 [87] phi from main::@1 to test_8u [phi:main::@1->test_8u] + jsr test_8u + //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 main::@2 + //SEG18 [9] call test_16u param-assignment [ ] ( main:2 [ ] ) + //SEG19 [11] phi from main::@2 to test_16u [phi:main::@2->test_16u] + jsr test_16u + //SEG20 main::@return + //SEG21 [10] return [ ] ( main:2 [ ] ) + rts +} +//SEG22 test_16u +test_16u: { + .label dividend = $d + .label divisor = $f + .label res = $11 + .label i = 2 + //SEG23 [12] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] + //SEG24 [12] phi (word) rem16u#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vwuz1=vbuc1 lda #0 + sta rem16u + sta rem16u+1 + //SEG25 [12] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#1] -- vbuz1=vbuc1 sta i - //SEG16 main::@1 + //SEG26 [12] phi from test_16u::@11 to test_16u::@1 [phi:test_16u::@11->test_16u::@1] + //SEG27 [12] phi (word) rem16u#16 = (word) div16u::rem#8 [phi:test_16u::@11->test_16u::@1#0] -- register_copy + //SEG28 [12] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@11->test_16u::@1#1] -- register_copy + //SEG29 test_16u::@1 b1: - //SEG17 [7] (byte) main::dividend#0 ← *((const byte[]) main::dividends#0 + (byte) main::i#10) [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG30 [13] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) [ test_16u::i#10 test_16u::dividend#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 line_cursor#1 ] ) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG18 [8] (byte) main::divisor#0 ← *((const byte[]) main::divisors#0 + (byte) main::i#10) [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + lda dividends+1,y + sta dividend+1 + //SEG31 [14] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 ] ) -- vwuz1=pwuc1_derefidx_vbuz2 lda divisors,y sta divisor - //SEG19 [9] (byte) div8u::dividend#0 ← (byte) main::dividend#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 ] ) -- vbuz1=vbuz2 + lda divisors+1,y + sta divisor+1 + //SEG32 [15] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 line_cursor#1 ] ) -- vwuz1=vwuz2 lda dividend - sta div8u.dividend - //SEG20 [10] (byte) div8u::divisor#0 ← (byte) main::divisor#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ) - // (byte) div8u::divisor#0 = (byte) main::divisor#0 // register copy zp ZP_BYTE:12 - //SEG21 [11] call div8u param-assignment [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ) - //SEG22 [58] phi from main::@1 to div8u [phi:main::@1->div8u] - jsr div8u - //SEG23 [12] (byte) div8u::return#0 ← (byte) div8u::return#1 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#0 ] ) -- vbuaa=vbuz1 - lda div8u.return - //SEG24 main::@4 - //SEG25 [13] (byte) main::res#0 ← (byte) div8u::return#0 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 main::res#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 main::res#0 ] ) -- vbuz1=vbuaa + sta div16u.dividend + lda dividend+1 + sta div16u.dividend+1 + //SEG33 [16] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 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#0 div16u::divisor#0 line_cursor#1 ] ) + // (word) div16u::divisor#0 = (word) test_16u::divisor#0 // register copy zp ZP_WORD:15 + //SEG34 [17] call div16u param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::dividend#0 test_16u::divisor#0 div16u::return#1 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#1 line_cursor#1 ] ) + //SEG35 [70] phi from test_16u::@1 to div16u [phi:test_16u::@1->div16u] + jsr div16u + //SEG36 [18] (word) div16u::return#0 ← (word) div16u::return#1 [ 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 ] ) -- vwuz1=vwuz2 + lda div16u.return_1 + sta div16u.return + lda div16u.return_1+1 + sta div16u.return+1 + //SEG37 test_16u::@3 + //SEG38 [19] (word) test_16u::res#0 ← (word) div16u::return#0 [ 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 ] ) -- vwuz1=vwuz2 + lda div16u.return sta res - //SEG26 [14] (byte) print_byte::b#0 ← (byte) main::dividend#0 [ main::i#10 char_cursor#42 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#0 ] ( main:2 [ main::i#10 char_cursor#42 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#0 ] ) -- vbuxx=vbuz1 - ldx dividend - //SEG27 [15] call print_byte param-assignment [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] ) - //SEG28 [39] phi from main::@4 to print_byte [phi:main::@4->print_byte] - //SEG29 [39] phi (byte*) char_cursor#41 = (byte*) char_cursor#42 [phi:main::@4->print_byte#0] -- register_copy - //SEG30 [39] phi (byte) print_byte::b#4 = (byte) print_byte::b#0 [phi:main::@4->print_byte#1] -- register_copy - jsr print_byte - //SEG31 [16] phi from main::@4 to main::@5 [phi:main::@4->main::@5] - //SEG32 main::@5 - //SEG33 [17] call print_str param-assignment [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] ) - //SEG34 [51] phi from main::@5 to print_str [phi:main::@5->print_str] - //SEG35 [51] phi (byte*) print_str::str#6 = (const string) main::str [phi:main::@5->print_str#0] -- pbuz1=pbuc1 + lda div16u.return+1 + sta res+1 + //SEG39 [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 ] ) -- vwuz1=vwuz2 + lda dividend + sta print_word.w + lda dividend+1 + sta print_word.w+1 + //SEG40 [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 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG41 [22] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] ) + //SEG42 [45] phi from test_16u::@3 to print_word [phi:test_16u::@3->print_word] + //SEG43 [45] phi (byte*) char_cursor#71 = (byte*~) char_cursor#84 [phi:test_16u::@3->print_word#0] -- register_copy + //SEG44 [45] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:test_16u::@3->print_word#1] -- register_copy + jsr print_word + //SEG45 [23] phi from test_16u::@3 to test_16u::@4 [phi:test_16u::@3->test_16u::@4] + //SEG46 test_16u::@4 + //SEG47 [24] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] ) + //SEG48 [63] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str] + //SEG49 [63] phi (byte*) print_str::str#9 = (const string) test_16u::str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG36 main::@6 - //SEG37 [18] (byte) print_byte::b#1 ← (byte) main::divisor#0 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#1 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#1 char_cursor#2 ] ) -- vbuxx=vbuz1 - ldx divisor - //SEG38 [19] call print_byte param-assignment [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] ) - //SEG39 [39] phi from main::@6 to print_byte [phi:main::@6->print_byte] - //SEG40 [39] phi (byte*) char_cursor#41 = (byte*) char_cursor#2 [phi:main::@6->print_byte#0] -- register_copy - //SEG41 [39] phi (byte) print_byte::b#4 = (byte) print_byte::b#1 [phi:main::@6->print_byte#1] -- register_copy - jsr print_byte - //SEG42 [20] phi from main::@6 to main::@7 [phi:main::@6->main::@7] - //SEG43 main::@7 - //SEG44 [21] call print_str param-assignment [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] ) - //SEG45 [51] phi from main::@7 to print_str [phi:main::@7->print_str] - //SEG46 [51] phi (byte*) print_str::str#6 = (const string) main::str1 [phi:main::@7->print_str#0] -- pbuz1=pbuc1 + //SEG50 test_16u::@5 + //SEG51 [25] (word) print_word::w#1 ← (word) test_16u::divisor#0 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#1 char_cursor#2 ] ) -- vwuz1=vwuz2 + lda divisor + sta print_word.w + lda divisor+1 + sta print_word.w+1 + //SEG52 [26] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] ) + //SEG53 [45] phi from test_16u::@5 to print_word [phi:test_16u::@5->print_word] + //SEG54 [45] phi (byte*) char_cursor#71 = (byte*) char_cursor#2 [phi:test_16u::@5->print_word#0] -- register_copy + //SEG55 [45] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:test_16u::@5->print_word#1] -- register_copy + jsr print_word + //SEG56 [27] phi from test_16u::@5 to test_16u::@6 [phi:test_16u::@5->test_16u::@6] + //SEG57 test_16u::@6 + //SEG58 [28] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] ) + //SEG59 [63] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str] + //SEG60 [63] phi (byte*) print_str::str#9 = (const string) test_16u::str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG47 main::@8 - //SEG48 [22] (byte) print_byte::b#2 ← (byte) main::res#0 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#2 ] ) -- vbuxx=vbuz1 - ldx res - //SEG49 [23] call print_byte param-assignment [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - //SEG50 [39] phi from main::@8 to print_byte [phi:main::@8->print_byte] - //SEG51 [39] phi (byte*) char_cursor#41 = (byte*) char_cursor#2 [phi:main::@8->print_byte#0] -- register_copy - //SEG52 [39] phi (byte) print_byte::b#4 = (byte) print_byte::b#2 [phi:main::@8->print_byte#1] -- register_copy - jsr print_byte - //SEG53 [24] phi from main::@8 to main::@9 [phi:main::@8->main::@9] - //SEG54 main::@9 - //SEG55 [25] call print_str param-assignment [ main::i#10 line_cursor#13 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#2 ] ) - //SEG56 [51] phi from main::@9 to print_str [phi:main::@9->print_str] - //SEG57 [51] phi (byte*) print_str::str#6 = (const string) main::str2 [phi:main::@9->print_str#0] -- pbuz1=pbuc1 + //SEG61 test_16u::@7 + //SEG62 [29] (word) print_word::w#2 ← (word) test_16u::res#0 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#2 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#2 char_cursor#2 ] ) -- vwuz1=vwuz2 + lda res + sta print_word.w + lda res+1 + sta print_word.w+1 + //SEG63 [30] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + //SEG64 [45] phi from test_16u::@7 to print_word [phi:test_16u::@7->print_word] + //SEG65 [45] phi (byte*) char_cursor#71 = (byte*) char_cursor#2 [phi:test_16u::@7->print_word#0] -- register_copy + //SEG66 [45] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:test_16u::@7->print_word#1] -- register_copy + jsr print_word + //SEG67 [31] phi from test_16u::@7 to test_16u::@8 [phi:test_16u::@7->test_16u::@8] + //SEG68 test_16u::@8 + //SEG69 [32] call print_str param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] ) + //SEG70 [63] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str] + //SEG71 [63] phi (byte*) print_str::str#9 = (const string) test_16u::str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG58 main::@10 - //SEG59 [26] (byte) print_byte::b#3 ← *((const byte*) main::rem#0) [ main::i#10 line_cursor#13 print_byte::b#3 char_cursor#2 ] ( main:2 [ main::i#10 line_cursor#13 print_byte::b#3 char_cursor#2 ] ) -- vbuxx=_deref_pbuc1 - ldx rem - //SEG60 [27] call print_byte param-assignment [ main::i#10 line_cursor#13 char_cursor#28 ] ( main:2 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - //SEG61 [39] phi from main::@10 to print_byte [phi:main::@10->print_byte] - //SEG62 [39] phi (byte*) char_cursor#41 = (byte*) char_cursor#2 [phi:main::@10->print_byte#0] -- register_copy - //SEG63 [39] phi (byte) print_byte::b#4 = (byte) print_byte::b#3 [phi:main::@10->print_byte#1] -- register_copy - jsr print_byte - //SEG64 [28] phi from main::@10 to main::@11 [phi:main::@10->main::@11] - //SEG65 main::@11 - //SEG66 [29] call print_ln param-assignment [ main::i#10 line_cursor#1 ] ( main:2 [ main::i#10 line_cursor#1 ] ) - //SEG67 [34] phi from main::@11 to print_ln [phi:main::@11->print_ln] + //SEG72 test_16u::@9 + //SEG73 [33] (word) print_word::w#3 ← (word) div16u::rem#8 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#3 char_cursor#2 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#3 char_cursor#2 ] ) -- vwuz1=vwuz2 + lda div16u.rem + sta print_word.w + lda div16u.rem+1 + sta print_word.w+1 + //SEG74 [34] call print_word param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + //SEG75 [45] phi from test_16u::@9 to print_word [phi:test_16u::@9->print_word] + //SEG76 [45] phi (byte*) char_cursor#71 = (byte*) char_cursor#2 [phi:test_16u::@9->print_word#0] -- register_copy + //SEG77 [45] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:test_16u::@9->print_word#1] -- register_copy + jsr print_word + //SEG78 [35] phi from test_16u::@9 to test_16u::@10 [phi:test_16u::@9->test_16u::@10] + //SEG79 test_16u::@10 + //SEG80 [36] call print_ln param-assignment [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] ) + //SEG81 [40] phi from test_16u::@10 to print_ln [phi:test_16u::@10->print_ln] + //SEG82 [40] phi (byte*) line_cursor#22 = (byte*) line_cursor#1 [phi:test_16u::@10->print_ln#0] -- register_copy jsr print_ln - //SEG68 main::@12 - //SEG69 [30] (byte) main::i#1 ← ++ (byte) main::i#10 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1=_inc_vbuz1 - inc i - //SEG70 [31] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto main::@13 [ main::i#1 line_cursor#1 ] ( main:2 [ main::i#1 line_cursor#1 ] ) -- vbuz1_neq_vbuc1_then_la1 - lda i - cmp #6 - bne b13 - //SEG71 main::@return - //SEG72 [32] return [ ] ( main:2 [ ] ) + //SEG83 test_16u::@11 + //SEG84 [37] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 + lda #2 + clc + adc i + sta i + //SEG85 [38] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 12) goto test_16u::@1 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ( main:2::test_16u:9 [ test_16u::i#1 div16u::rem#8 line_cursor#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + cmp #$c + bne b1 + //SEG86 test_16u::@return + //SEG87 [39] return [ ] ( main:2::test_16u:9 [ ] ) rts - //SEG73 main::@13 - b13: - //SEG74 [33] (byte*~) char_cursor#48 ← (byte*) line_cursor#1 [ main::i#1 char_cursor#48 line_cursor#1 ] ( main:2 [ main::i#1 char_cursor#48 line_cursor#1 ] ) -- pbuz1=pbuz2 - lda line_cursor - sta char_cursor - lda line_cursor+1 - sta char_cursor+1 - //SEG75 [6] phi from main::@13 to main::@1 [phi:main::@13->main::@1] - //SEG76 [6] phi (byte*) line_cursor#13 = (byte*) line_cursor#1 [phi:main::@13->main::@1#0] -- register_copy - //SEG77 [6] phi (byte*) char_cursor#42 = (byte*~) char_cursor#48 [phi:main::@13->main::@1#1] -- register_copy - //SEG78 [6] phi (byte) main::i#10 = (byte) main::i#1 [phi:main::@13->main::@1#2] -- register_copy - jmp b1 str: .text " / @" str1: .text " = @" str2: .text " @" - dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff - divisors: .byte 5, 7, $b, $d, $11, $13 + dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff + divisors: .word 5, 7, $b, $d, $11, $13 } -//SEG79 print_ln +//SEG88 print_ln print_ln: { - //SEG80 [35] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG81 [35] phi (byte*) line_cursor#6 = (byte*) line_cursor#13 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG82 print_ln::@1 + //SEG89 [41] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG90 [41] phi (byte*) line_cursor#11 = (byte*) line_cursor#22 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG91 print_ln::@1 b1: - //SEG83 [36] (byte*) line_cursor#1 ← (byte*) line_cursor#6 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 char_cursor#28 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG92 [42] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 char_cursor#11 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda line_cursor clc adc #$28 @@ -3510,7 +5834,7 @@ print_ln: { bcc !+ inc line_cursor+1 !: - //SEG84 [37] if((byte*) line_cursor#1<(byte*) char_cursor#28) goto print_ln::@1 [ line_cursor#1 char_cursor#28 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 char_cursor#28 ] ) -- pbuz1_lt_pbuz2_then_la1 + //SEG93 [43] if((byte*) line_cursor#1<(byte*) char_cursor#11) goto print_ln::@1 [ line_cursor#1 char_cursor#11 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 char_cursor#11 ] ) -- pbuz1_lt_pbuz2_then_la1 lda line_cursor+1 cmp char_cursor+1 bcc b1 @@ -3519,193 +5843,444 @@ print_ln: { cmp char_cursor bcc b1 !: - //SEG85 print_ln::@return - //SEG86 [38] return [ line_cursor#1 ] ( main:2::print_ln:29 [ main::i#10 line_cursor#1 ] ) + //SEG94 print_ln::@return + //SEG95 [44] return [ line_cursor#1 ] ( main:2::test_16u:9::print_ln:36 [ test_16u::i#10 div16u::rem#8 line_cursor#1 ] main:2::test_8u:7::print_ln:111 [ test_8u::i#10 line_cursor#1 ] ) rts } -//SEG87 print_byte +//SEG96 print_word +print_word: { + .label w = 5 + //SEG97 [46] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_word::w#4 char_cursor#71 print_byte::b#0 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#71 print_byte::b#0 ] ) -- vbuxx=_hi_vwuz1 + lda w+1 + tax + //SEG98 [47] call print_byte param-assignment [ char_cursor#11 print_word::w#4 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_word::w#4 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_word::w#4 ] ) + //SEG99 [51] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG100 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#71 [phi:print_word->print_byte#0] -- register_copy + //SEG101 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + jsr print_byte + //SEG102 print_word::@1 + //SEG103 [48] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#1 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#1 ] ) -- vbuxx=_lo_vwuz1 + lda w + tax + //SEG104 [49] call print_byte param-assignment [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + //SEG105 [51] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG106 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG107 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + jsr print_byte + //SEG108 print_word::@return + //SEG109 [50] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] ) + rts +} +//SEG110 print_byte print_byte: { - //SEG88 [40] (byte~) print_byte::$0 ← (byte) print_byte::b#4 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#4 char_cursor#41 print_byte::$0 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_byte::$0 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_byte::$0 ] ) -- vbuaa=vbuxx_ror_4 + //SEG111 [52] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 char_cursor#72 print_byte::$0 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_byte::$0 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_byte::$0 ] ) -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG89 [41] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#4 char_cursor#41 print_char::ch#0 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_char::ch#0 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#41 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG112 [53] (byte) print_char::ch#0 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#6 char_cursor#72 print_char::ch#0 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_char::ch#0 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#72 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda hextab,y - //SEG90 [42] call print_char param-assignment [ char_cursor#28 print_byte::b#4 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_byte::b#4 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_byte::b#4 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::b#4 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::b#4 ] ) - //SEG91 [47] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG92 [47] phi (byte*) char_cursor#27 = (byte*) char_cursor#41 [phi:print_byte->print_char#0] -- register_copy - //SEG93 [47] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG113 [54] call print_char param-assignment [ char_cursor#11 print_byte::b#6 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::b#6 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::b#6 ] ) + //SEG114 [59] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG115 [59] phi (byte*) char_cursor#45 = (byte*) char_cursor#72 [phi:print_byte->print_char#0] -- register_copy + //SEG116 [59] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG94 print_byte::@1 - //SEG95 [43] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#28 print_byte::$2 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_byte::$2 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_byte::$2 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::$2 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG117 print_byte::@1 + //SEG118 [55] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::$2 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG96 [44] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#28 print_char::ch#1 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 print_char::ch#1 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 print_char::ch#1 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 print_char::ch#1 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG119 [56] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_char::ch#1 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda hextab,y - //SEG97 [45] call print_char param-assignment [ char_cursor#28 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 ] ) - //SEG98 [47] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG99 [47] phi (byte*) char_cursor#27 = (byte*) char_cursor#28 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG100 [47] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG120 [57] call print_char param-assignment [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) + //SEG121 [59] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG122 [59] phi (byte*) char_cursor#45 = (byte*) char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG123 [59] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG101 print_byte::@return - //SEG102 [46] return [ char_cursor#28 ] ( main:2::print_byte:15 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27 [ main::i#10 line_cursor#13 char_cursor#28 ] ) + //SEG124 print_byte::@return + //SEG125 [58] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) rts hextab: .text "0123456789abcdef" } -//SEG103 print_char +//SEG126 print_char print_char: { - //SEG104 [48] *((byte*) char_cursor#27) ← (byte) print_char::ch#2 [ char_cursor#27 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#27 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#27 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#27 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#27 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#27 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#27 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#27 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#27 ] ) -- _deref_pbuz1=vbuaa + //SEG127 [60] *((byte*) char_cursor#45) ← (byte) print_char::ch#2 [ char_cursor#45 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#45 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#45 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#45 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#45 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#45 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#45 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#45 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (char_cursor),y - //SEG105 [49] (byte*) char_cursor#28 ← ++ (byte*) char_cursor#27 [ char_cursor#28 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] ) -- pbuz1=_inc_pbuz1 + //SEG128 [61] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#45 [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: - //SEG106 print_char::@return - //SEG107 [50] return [ char_cursor#28 ] ( main:2::print_byte:15::print_char:42 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:19::print_char:42 [ main::i#10 line_cursor#13 main::res#0 print_byte::b#4 char_cursor#28 ] main:2::print_byte:23::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:27::print_char:42 [ main::i#10 line_cursor#13 print_byte::b#4 char_cursor#28 ] main:2::print_byte:15::print_char:45 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#28 ] main:2::print_byte:19::print_char:45 [ main::i#10 line_cursor#13 main::res#0 char_cursor#28 ] main:2::print_byte:23::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] main:2::print_byte:27::print_char:45 [ main::i#10 line_cursor#13 char_cursor#28 ] ) + //SEG129 print_char::@return + //SEG130 [62] return [ char_cursor#11 ] ( main:2::test_16u:9::print_word:22::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:54 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:54 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:54 [ line_cursor#25 test_8u::i#10 print_byte::b#6 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:47::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_word::w#4 char_cursor#11 ] main:2::test_16u:9::print_word:22::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:26::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:30::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_16u:9::print_word:34::print_byte:49::print_char:57 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#11 ] main:2::test_8u:7::print_byte:97::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:101::print_char:57 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#11 ] main:2::test_8u:7::print_byte:105::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] main:2::test_8u:7::print_byte:109::print_char:57 [ line_cursor#25 test_8u::i#10 char_cursor#11 ] ) rts } -//SEG108 print_str +//SEG131 print_str print_str: { - .label str = 7 - //SEG109 [52] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG110 [52] phi (byte*) char_cursor#2 = (byte*) char_cursor#28 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG111 [52] phi (byte*) print_str::str#4 = (byte*) print_str::str#6 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG112 print_str::@1 + .label str = 5 + //SEG132 [64] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG133 [64] phi (byte*) char_cursor#2 = (byte*) char_cursor#11 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG134 [64] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG135 print_str::@1 b1: - //SEG113 [53] if(*((byte*) print_str::str#4)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG136 [65] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG114 print_str::@return - //SEG115 [54] return [ char_cursor#2 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 ] ) + //SEG137 print_str::@return + //SEG138 [66] return [ char_cursor#2 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 ] ) rts - //SEG116 print_str::@2 + //SEG139 print_str::@2 b2: - //SEG117 [55] *((byte*) char_cursor#2) ← *((byte*) print_str::str#4) [ char_cursor#2 print_str::str#4 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 char_cursor#2 print_str::str#4 ] main:2::print_str:25 [ main::i#10 line_cursor#13 char_cursor#2 print_str::str#4 ] ) -- _deref_pbuz1=_deref_pbuz2 + //SEG140 [67] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 char_cursor#2 print_str::str#7 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (char_cursor),y - //SEG118 [56] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#4 char_cursor#1 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_str::str#4 char_cursor#1 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 print_str::str#4 char_cursor#1 ] main:2::print_str:25 [ main::i#10 line_cursor#13 print_str::str#4 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG141 [68] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_str::str#7 char_cursor#1 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 print_str::str#7 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc char_cursor bne !+ inc char_cursor+1 !: - //SEG119 [57] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:17 [ main::i#10 line_cursor#13 main::divisor#0 main::res#0 print_str::str#0 char_cursor#1 ] main:2::print_str:21 [ main::i#10 line_cursor#13 main::res#0 print_str::str#0 char_cursor#1 ] main:2::print_str:25 [ main::i#10 line_cursor#13 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG142 [69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::test_16u:9::print_str:24 [ test_16u::i#10 div16u::rem#8 test_16u::divisor#0 test_16u::res#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_16u:9::print_str:28 [ test_16u::i#10 div16u::rem#8 test_16u::res#0 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_16u:9::print_str:32 [ test_16u::i#10 div16u::rem#8 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:99 [ line_cursor#25 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:103 [ line_cursor#25 test_8u::i#10 test_8u::res#0 print_str::str#0 char_cursor#1 ] main:2::test_8u:7::print_str:107 [ line_cursor#25 test_8u::i#10 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG120 div8u -div8u: { - .label dividend = 9 - .label divisor = $c - .label quotient = $a - .label return = $a - //SEG121 [59] phi from div8u to div8u::@1 [phi:div8u->div8u::@1] - //SEG122 [59] phi (byte) div8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#0] -- vbuxx=vbuc1 +//SEG143 div16u +div16u: { + .label dividend = 5 + .label divisor = $f + .label return = 5 + .label rem = 9 + .label quotient = 7 + .label return_1 = 7 + //SEG144 [71] phi from div16u to div16u::@1 [phi:div16u->div16u::@1] + //SEG145 [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 - //SEG123 [59] phi (byte) div8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#1] -- vbuz1=vbuc1 + //SEG146 [71] phi (word) div16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->div16u::@1#1] -- vwuz1=vbuc1 txa sta quotient - //SEG124 [59] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8u->div8u::@1#2] -- register_copy - //SEG125 [59] phi (byte) div8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#3] -- vbuyy=vbuc1 - tay - //SEG126 [59] phi from div8u::@3 to div8u::@1 [phi:div8u::@3->div8u::@1] - //SEG127 [59] phi (byte) div8u::i#2 = (byte) div8u::i#1 [phi:div8u::@3->div8u::@1#0] -- register_copy - //SEG128 [59] phi (byte) div8u::quotient#3 = (byte) div8u::return#1 [phi:div8u::@3->div8u::@1#1] -- register_copy - //SEG129 [59] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:div8u::@3->div8u::@1#2] -- register_copy - //SEG130 [59] phi (byte) div8u::rem#4 = (byte) div8u::rem#8 [phi:div8u::@3->div8u::@1#3] -- register_copy - //SEG131 div8u::@1 + sta quotient+1 + //SEG147 [71] phi (word) div16u::dividend#2 = (word) div16u::dividend#0 [phi:div16u->div16u::@1#2] -- register_copy + //SEG148 [71] phi (word) div16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->div16u::@1#3] -- vwuz1=vbuc1 + sta rem + sta rem+1 + //SEG149 [71] phi from div16u::@3 to div16u::@1 [phi:div16u::@3->div16u::@1] + //SEG150 [71] phi (byte) div16u::i#2 = (byte) div16u::i#1 [phi:div16u::@3->div16u::@1#0] -- register_copy + //SEG151 [71] phi (word) div16u::quotient#3 = (word) div16u::return#1 [phi:div16u::@3->div16u::@1#1] -- register_copy + //SEG152 [71] phi (word) div16u::dividend#2 = (word) div16u::dividend#1 [phi:div16u::@3->div16u::@1#2] -- register_copy + //SEG153 [71] phi (word) div16u::rem#4 = (word) div16u::rem#8 [phi:div16u::@3->div16u::@1#3] -- register_copy + //SEG154 div16u::@1 b1: - //SEG132 [60] (byte) div8u::rem#1 ← (byte) div8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) -- vbuyy=vbuyy_rol_1 + //SEG155 [72] (word) div16u::rem#1 ← (word) div16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ) -- vwuz1=vwuz1_rol_1 + asl rem + rol rem+1 + //SEG156 [73] (byte~) div16u::$1 ← > (word) div16u::dividend#2 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$1 ] ) -- vbuaa=_hi_vwuz1 + lda dividend+1 + //SEG157 [74] (byte~) div16u::$2 ← (byte~) div16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 div16u::$2 ] ) -- vbuaa=vbuaa_band_vbuc1 + and #$80 + //SEG158 [75] if((byte~) div16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div16u::@2 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#1 ] ) -- vbuaa_eq_0_then_la1 + cmp #0 + beq b2 + //SEG159 div16u::@4 + //SEG160 [76] (word) div16u::rem#2 ← ++ (word) div16u::rem#1 [ div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::dividend#2 div16u::quotient#3 div16u::i#2 div16u::rem#2 ] ) -- vwuz1=_inc_vwuz1 + inc rem + bne !+ + inc rem+1 + !: + //SEG161 [77] phi from div16u::@1 div16u::@4 to div16u::@2 [phi:div16u::@1/div16u::@4->div16u::@2] + //SEG162 [77] phi (word) div16u::rem#5 = (word) div16u::rem#1 [phi:div16u::@1/div16u::@4->div16u::@2#0] -- register_copy + //SEG163 div16u::@2 + b2: + //SEG164 [78] (word) div16u::dividend#1 ← (word) div16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::quotient#3 div16u::i#2 div16u::dividend#1 div16u::rem#5 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::quotient#3 div16u::i#2 div16u::dividend#1 div16u::rem#5 ] ) -- vwuz1=vwuz1_rol_1 + asl dividend + rol dividend+1 + //SEG165 [79] (word) div16u::quotient#1 ← (word) div16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ) -- vwuz1=vwuz1_rol_1 + asl quotient + rol quotient+1 + //SEG166 [80] if((word) div16u::rem#5<(word) div16u::divisor#0) goto div16u::@3 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#1 ] ) -- vwuz1_lt_vwuz2_then_la1 + lda rem+1 + cmp divisor+1 + bcc b3 + bne !+ + lda rem + cmp divisor + bcc b3 + !: + //SEG167 div16u::@5 + //SEG168 [81] (word) div16u::quotient#2 ← ++ (word) div16u::quotient#1 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#2 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::rem#5 div16u::quotient#2 ] ) -- vwuz1=_inc_vwuz1 + inc quotient + bne !+ + inc quotient+1 + !: + //SEG169 [82] (word) div16u::rem#3 ← (word) div16u::rem#5 - (word) div16u::divisor#0 [ div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::quotient#2 div16u::rem#3 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::divisor#0 div16u::i#2 div16u::dividend#1 div16u::quotient#2 div16u::rem#3 ] ) -- vwuz1=vwuz1_minus_vwuz2 + lda rem + sec + sbc divisor + sta rem + lda rem+1 + sbc divisor+1 + sta rem+1 + //SEG170 [83] phi from div16u::@2 div16u::@5 to div16u::@3 [phi:div16u::@2/div16u::@5->div16u::@3] + //SEG171 [83] phi (word) div16u::return#1 = (word) div16u::quotient#1 [phi:div16u::@2/div16u::@5->div16u::@3#0] -- register_copy + //SEG172 [83] phi (word) div16u::rem#8 = (word) div16u::rem#5 [phi:div16u::@2/div16u::@5->div16u::@3#1] -- register_copy + //SEG173 div16u::@3 + b3: + //SEG174 [84] (byte) div16u::i#1 ← ++ (byte) div16u::i#2 [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG175 [85] if((byte) div16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto div16u::@1 [ div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::divisor#0 div16u::return#1 div16u::dividend#1 div16u::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + cpx #$10 + bne b1 + //SEG176 div16u::@return + //SEG177 [86] return [ div16u::rem#8 div16u::return#1 ] ( main:2::test_16u:9::div16u:17 [ test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 line_cursor#1 div16u::rem#8 div16u::return#1 ] ) + rts +} +//SEG178 test_8u +test_8u: { + .label rem = $ff + .label dividend = $13 + .label divisor = $14 + .label res = $b + .label i = 2 + //SEG179 [88] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] + //SEG180 [88] phi (byte*) line_cursor#25 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 + lda #<$400 + sta line_cursor + lda #>$400 + sta line_cursor+1 + //SEG181 [88] phi (byte*) char_cursor#75 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 + lda #<$400 + sta char_cursor + lda #>$400 + sta char_cursor+1 + //SEG182 [88] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 + lda #0 + sta i + //SEG183 test_8u::@1 + b1: + //SEG184 [89] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy i + lda dividends,y + sta dividend + //SEG185 [90] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + lda divisors,y + sta divisor + //SEG186 [91] (byte) div8u::dividend#0 ← (byte) test_8u::dividend#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 ] ) -- vbuz1=vbuz2 + lda dividend + sta div8u.dividend + //SEG187 [92] (byte) div8u::divisor#0 ← (byte) test_8u::divisor#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::dividend#0 div8u::divisor#0 ] ) + // (byte) div8u::divisor#0 = (byte) test_8u::divisor#0 // register copy zp ZP_BYTE:20 + //SEG188 [93] call div8u param-assignment [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ) + //SEG189 [116] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] + jsr div8u + //SEG190 [94] (byte) div8u::return#0 ← (byte) div8u::return#1 [ line_cursor#25 char_cursor#75 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::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#0 ] ) -- vbuaa=vbuz1 + lda div8u.return + //SEG191 test_8u::@3 + //SEG192 [95] (byte) test_8u::res#0 ← (byte) div8u::return#0 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 test_8u::res#0 ] ) -- vbuz1=vbuaa + sta res + //SEG193 [96] (byte) print_byte::b#2 ← (byte) test_8u::dividend#0 [ line_cursor#25 print_byte::b#2 char_cursor#75 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 print_byte::b#2 char_cursor#75 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) -- vbuxx=vbuz1 + ldx dividend + //SEG194 [97] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) + //SEG195 [51] phi from test_8u::@3 to print_byte [phi:test_8u::@3->print_byte] + //SEG196 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#75 [phi:test_8u::@3->print_byte#0] -- register_copy + //SEG197 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:test_8u::@3->print_byte#1] -- register_copy + jsr print_byte + //SEG198 [98] phi from test_8u::@3 to test_8u::@4 [phi:test_8u::@3->test_8u::@4] + //SEG199 test_8u::@4 + //SEG200 [99] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 ] ) + //SEG201 [63] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str] + //SEG202 [63] phi (byte*) print_str::str#9 = (const string) test_8u::str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + //SEG203 test_8u::@5 + //SEG204 [100] (byte) print_byte::b#3 ← (byte) test_8u::divisor#0 [ line_cursor#25 char_cursor#2 print_byte::b#3 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#3 test_8u::i#10 test_8u::res#0 ] ) -- vbuxx=vbuz1 + ldx divisor + //SEG205 [101] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 test_8u::res#0 ] ) + //SEG206 [51] phi from test_8u::@5 to print_byte [phi:test_8u::@5->print_byte] + //SEG207 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#2 [phi:test_8u::@5->print_byte#0] -- register_copy + //SEG208 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:test_8u::@5->print_byte#1] -- register_copy + jsr print_byte + //SEG209 [102] phi from test_8u::@5 to test_8u::@6 [phi:test_8u::@5->test_8u::@6] + //SEG210 test_8u::@6 + //SEG211 [103] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::res#0 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 test_8u::res#0 ] ) + //SEG212 [63] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str] + //SEG213 [63] phi (byte*) print_str::str#9 = (const string) test_8u::str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + //SEG214 test_8u::@7 + //SEG215 [104] (byte) print_byte::b#4 ← (byte) test_8u::res#0 [ line_cursor#25 char_cursor#2 print_byte::b#4 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#4 test_8u::i#10 ] ) -- vbuxx=vbuz1 + ldx res + //SEG216 [105] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ) + //SEG217 [51] phi from test_8u::@7 to print_byte [phi:test_8u::@7->print_byte] + //SEG218 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#2 [phi:test_8u::@7->print_byte#0] -- register_copy + //SEG219 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:test_8u::@7->print_byte#1] -- register_copy + jsr print_byte + //SEG220 [106] phi from test_8u::@7 to test_8u::@8 [phi:test_8u::@7->test_8u::@8] + //SEG221 test_8u::@8 + //SEG222 [107] call print_str param-assignment [ line_cursor#25 char_cursor#2 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 test_8u::i#10 ] ) + //SEG223 [63] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str] + //SEG224 [63] phi (byte*) print_str::str#9 = (const string) test_8u::str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + //SEG225 test_8u::@9 + //SEG226 [108] (byte) print_byte::b#5 ← *((const byte*) test_8u::rem#0) [ line_cursor#25 char_cursor#2 print_byte::b#5 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#2 print_byte::b#5 test_8u::i#10 ] ) -- vbuxx=_deref_pbuc1 + ldx rem + //SEG227 [109] call print_byte param-assignment [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#25 char_cursor#11 test_8u::i#10 ] ) + //SEG228 [51] phi from test_8u::@9 to print_byte [phi:test_8u::@9->print_byte] + //SEG229 [51] phi (byte*) char_cursor#72 = (byte*) char_cursor#2 [phi:test_8u::@9->print_byte#0] -- register_copy + //SEG230 [51] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:test_8u::@9->print_byte#1] -- register_copy + jsr print_byte + //SEG231 [110] phi from test_8u::@9 to test_8u::@10 [phi:test_8u::@9->test_8u::@10] + //SEG232 test_8u::@10 + //SEG233 [111] call print_ln param-assignment [ line_cursor#1 test_8u::i#10 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#10 ] ) + //SEG234 [40] phi from test_8u::@10 to print_ln [phi:test_8u::@10->print_ln] + //SEG235 [40] phi (byte*) line_cursor#22 = (byte*) line_cursor#25 [phi:test_8u::@10->print_ln#0] -- register_copy + jsr print_ln + //SEG236 test_8u::@11 + //SEG237 [112] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 [ line_cursor#1 test_8u::i#1 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 ] ) -- vbuz1=_inc_vbuz1 + inc i + //SEG238 [113] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@12 [ line_cursor#1 test_8u::i#1 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda i + cmp #6 + bne b12 + //SEG239 test_8u::@return + //SEG240 [114] return [ line_cursor#1 ] ( main:2::test_8u:7 [ line_cursor#1 ] ) + rts + //SEG241 test_8u::@12 + b12: + //SEG242 [115] (byte*~) char_cursor#98 ← (byte*) line_cursor#1 [ line_cursor#1 test_8u::i#1 char_cursor#98 ] ( main:2::test_8u:7 [ line_cursor#1 test_8u::i#1 char_cursor#98 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG243 [88] phi from test_8u::@12 to test_8u::@1 [phi:test_8u::@12->test_8u::@1] + //SEG244 [88] phi (byte*) line_cursor#25 = (byte*) line_cursor#1 [phi:test_8u::@12->test_8u::@1#0] -- register_copy + //SEG245 [88] phi (byte*) char_cursor#75 = (byte*~) char_cursor#98 [phi:test_8u::@12->test_8u::@1#1] -- register_copy + //SEG246 [88] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy + jmp b1 + str: .text " / @" + str1: .text " = @" + str2: .text " @" + dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff + divisors: .byte 5, 7, $b, $d, $11, $13 +} +//SEG247 div8u +div8u: { + .label dividend = $b + .label divisor = $14 + .label quotient = $c + .label return = $c + //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 + //SEG250 [117] phi (byte) div8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#1] -- vbuz1=vbuc1 + txa + sta quotient + //SEG251 [117] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8u->div8u::@1#2] -- register_copy + //SEG252 [117] phi (byte) div8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8u->div8u::@1#3] -- vbuyy=vbuc1 + tay + //SEG253 [117] phi from div8u::@3 to div8u::@1 [phi:div8u::@3->div8u::@1] + //SEG254 [117] phi (byte) div8u::i#2 = (byte) div8u::i#1 [phi:div8u::@3->div8u::@1#0] -- register_copy + //SEG255 [117] phi (byte) div8u::quotient#3 = (byte) div8u::return#1 [phi:div8u::@3->div8u::@1#1] -- register_copy + //SEG256 [117] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:div8u::@3->div8u::@1#2] -- register_copy + //SEG257 [117] phi (byte) div8u::rem#4 = (byte) div8u::rem#8 [phi:div8u::@3->div8u::@1#3] -- register_copy + //SEG258 div8u::@1 + b1: + //SEG259 [118] (byte) div8u::rem#1 ← (byte) div8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) -- vbuyy=vbuyy_rol_1 tya asl tay - //SEG133 [61] (byte~) div8u::$1 ← (byte) div8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ) -- vbuaa=vbuz1_band_vbuc1 + //SEG260 [119] (byte~) div8u::$1 ← (byte) div8u::dividend#2 & (byte/word/signed word/dword/signed dword) 128 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 div8u::$1 ] ) -- vbuaa=vbuz1_band_vbuc1 lda #$80 and dividend - //SEG134 [62] if((byte~) div8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8u::@2 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) -- vbuaa_eq_0_then_la1 + //SEG261 [120] if((byte~) div8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8u::@2 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#1 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG135 div8u::@4 - //SEG136 [63] (byte) div8u::rem#2 ← ++ (byte) div8u::rem#1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ) -- vbuyy=_inc_vbuyy + //SEG262 div8u::@4 + //SEG263 [121] (byte) div8u::rem#2 ← ++ (byte) div8u::rem#1 [ div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::dividend#2 div8u::quotient#3 div8u::i#2 div8u::rem#2 ] ) -- vbuyy=_inc_vbuyy iny - //SEG137 [64] phi from div8u::@1 div8u::@4 to div8u::@2 [phi:div8u::@1/div8u::@4->div8u::@2] - //SEG138 [64] phi (byte) div8u::rem#5 = (byte) div8u::rem#1 [phi:div8u::@1/div8u::@4->div8u::@2#0] -- register_copy - //SEG139 div8u::@2 + //SEG264 [122] phi from div8u::@1 div8u::@4 to div8u::@2 [phi:div8u::@1/div8u::@4->div8u::@2] + //SEG265 [122] phi (byte) div8u::rem#5 = (byte) div8u::rem#1 [phi:div8u::@1/div8u::@4->div8u::@2#0] -- register_copy + //SEG266 div8u::@2 b2: - //SEG140 [65] (byte) div8u::dividend#1 ← (byte) div8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ) -- vbuz1=vbuz1_rol_1 + //SEG267 [123] (byte) div8u::dividend#1 ← (byte) div8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::quotient#3 div8u::i#2 div8u::dividend#1 div8u::rem#5 ] ) -- vbuz1=vbuz1_rol_1 asl dividend - //SEG141 [66] (byte) div8u::quotient#1 ← (byte) div8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) -- vbuz1=vbuz1_rol_1 + //SEG268 [124] (byte) div8u::quotient#1 ← (byte) div8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) -- vbuz1=vbuz1_rol_1 asl quotient - //SEG142 [67] if((byte) div8u::rem#5<(byte) div8u::divisor#0) goto div8u::@3 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) -- vbuyy_lt_vbuz1_then_la1 + //SEG269 [125] if((byte) div8u::rem#5<(byte) div8u::divisor#0) goto div8u::@3 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#1 ] ) -- vbuyy_lt_vbuz1_then_la1 cpy divisor bcc b3 - //SEG143 div8u::@5 - //SEG144 [68] (byte) div8u::quotient#2 ← ++ (byte) div8u::quotient#1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ) -- vbuz1=_inc_vbuz1 + //SEG270 div8u::@5 + //SEG271 [126] (byte) div8u::quotient#2 ← ++ (byte) div8u::quotient#1 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::rem#5 div8u::quotient#2 ] ) -- vbuz1=_inc_vbuz1 inc quotient - //SEG145 [69] (byte) div8u::rem#3 ← (byte) div8u::rem#5 - (byte) div8u::divisor#0 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ) -- vbuyy=vbuyy_minus_vbuz1 + //SEG272 [127] (byte) div8u::rem#3 ← (byte) div8u::rem#5 - (byte) div8u::divisor#0 [ div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::i#2 div8u::dividend#1 div8u::quotient#2 div8u::rem#3 ] ) -- vbuyy=vbuyy_minus_vbuz1 tya sec sbc divisor tay - //SEG146 [70] phi from div8u::@2 div8u::@5 to div8u::@3 [phi:div8u::@2/div8u::@5->div8u::@3] - //SEG147 [70] phi (byte) div8u::return#1 = (byte) div8u::quotient#1 [phi:div8u::@2/div8u::@5->div8u::@3#0] -- register_copy - //SEG148 [70] phi (byte) div8u::rem#8 = (byte) div8u::rem#5 [phi:div8u::@2/div8u::@5->div8u::@3#1] -- register_copy - //SEG149 div8u::@3 + //SEG273 [128] phi from div8u::@2 div8u::@5 to div8u::@3 [phi:div8u::@2/div8u::@5->div8u::@3] + //SEG274 [128] phi (byte) div8u::return#1 = (byte) div8u::quotient#1 [phi:div8u::@2/div8u::@5->div8u::@3#0] -- register_copy + //SEG275 [128] phi (byte) div8u::rem#8 = (byte) div8u::rem#5 [phi:div8u::@2/div8u::@5->div8u::@3#1] -- register_copy + //SEG276 div8u::@3 b3: - //SEG150 [71] (byte) div8u::i#1 ← ++ (byte) div8u::i#2 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG277 [129] (byte) div8u::i#1 ← ++ (byte) div8u::i#2 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG151 [72] if((byte) div8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto div8u::@1 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG278 [130] if((byte) div8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto div8u::@1 [ div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::divisor#0 div8u::return#1 div8u::rem#8 div8u::dividend#1 div8u::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1 - //SEG152 div8u::@6 - //SEG153 [73] *((const byte*) main::rem#0) ← (byte) div8u::rem#8 [ div8u::return#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ) -- _deref_pbuc1=vbuyy - sty main.rem - //SEG154 div8u::@return - //SEG155 [74] return [ div8u::return#1 ] ( main:2::div8u:11 [ main::i#10 char_cursor#42 line_cursor#13 main::dividend#0 main::divisor#0 div8u::return#1 ] ) + //SEG279 div8u::@6 + //SEG280 [131] *((const byte*) test_8u::rem#0) ← (byte) div8u::rem#8 [ div8u::return#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ) -- _deref_pbuc1=vbuyy + sty test_8u.rem + //SEG281 div8u::@return + //SEG282 [132] return [ div8u::return#1 ] ( main:2::test_8u:7::div8u:93 [ line_cursor#25 char_cursor#75 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 div8u::return#1 ] ) rts } -//SEG156 print_cls +//SEG283 print_cls print_cls: { .label sc = 3 - //SEG157 [76] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG158 [76] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //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 sta sc lda #>$400 sta sc+1 - //SEG159 [76] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG160 [76] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG161 print_cls::@1 + //SEG286 [134] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG287 [134] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG288 print_cls::@1 b1: - //SEG162 [77] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG289 [135] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG163 [78] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG290 [136] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG164 [79] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 + //SEG291 [137] if((byte*) print_cls::sc#1!=(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG165 print_cls::@return - //SEG166 [80] return [ ] ( main:2::print_cls:5 [ ] ) + //SEG292 print_cls::@return + //SEG293 [138] return [ ] ( main:2::print_cls:5 [ ] ) rts } diff --git a/src/test/java/dk/camelot64/kickc/test/ref/division.sym b/src/test/java/dk/camelot64/kickc/test/ref/division.sym index 4b819899a..4356d45b7 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/division.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/division.sym @@ -1,14 +1,48 @@ -(label) @10 +(label) @13 (label) @begin (label) @end (byte*) char_cursor -(byte*) char_cursor#1 char_cursor zp ZP_WORD:5 101.0 -(byte*) char_cursor#2 char_cursor zp ZP_WORD:5 33.8 -(byte*) char_cursor#27 char_cursor zp ZP_WORD:5 4.0 -(byte*) char_cursor#28 char_cursor zp ZP_WORD:5 5.349999999999999 -(byte*) char_cursor#41 char_cursor zp ZP_WORD:5 15.333333333333332 -(byte*) char_cursor#42 char_cursor zp ZP_WORD:5 2.4444444444444446 -(byte*~) char_cursor#48 char_cursor zp ZP_WORD:5 22.0 +(byte*) char_cursor#1 char_cursor zp ZP_WORD:7 101.0 +(byte*) char_cursor#11 char_cursor zp ZP_WORD:7 3.40625 +(byte*) char_cursor#2 char_cursor zp ZP_WORD:7 23.1875 +(byte*) char_cursor#45 char_cursor zp ZP_WORD:7 4.0 +(byte*) char_cursor#71 char_cursor zp ZP_WORD:7 23.0 +(byte*) char_cursor#72 char_cursor zp ZP_WORD:7 16.666666666666664 +(byte*) char_cursor#75 char_cursor zp ZP_WORD:7 2.4444444444444446 +(byte*~) char_cursor#84 char_cursor zp ZP_WORD:7 22.0 +(byte*~) char_cursor#98 char_cursor zp ZP_WORD:7 22.0 +(word()) div16u((word) div16u::dividend , (word) div16u::divisor) +(byte~) div16u::$1 reg byte a 202.0 +(byte~) div16u::$2 reg byte a 202.0 +(label) div16u::@1 +(label) div16u::@2 +(label) div16u::@3 +(label) div16u::@4 +(label) div16u::@5 +(label) div16u::@return +(word) div16u::dividend +(word) div16u::dividend#0 dividend zp ZP_WORD:5 4.333333333333333 +(word) div16u::dividend#1 dividend zp ZP_WORD:5 25.25 +(word) div16u::dividend#2 dividend zp ZP_WORD:5 43.57142857142858 +(word) div16u::divisor +(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:7 151.5 +(word) div16u::quotient#2 quotient zp ZP_WORD:7 101.0 +(word) div16u::quotient#3 quotient zp ZP_WORD:7 25.25 +(word) div16u::rem +(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:5 22.0 +(word) div16u::return#1 return#1 zp ZP_WORD:7 62.8 (byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor , (byte*) div8u::remainder) (byte~) div8u::$1 reg byte a 202.0 (label) div8u::@1 @@ -19,18 +53,18 @@ (label) div8u::@6 (label) div8u::@return (byte) div8u::dividend -(byte) div8u::dividend#0 dividend zp ZP_BYTE:9 4.333333333333333 -(byte) div8u::dividend#1 dividend zp ZP_BYTE:9 25.25 -(byte) div8u::dividend#2 dividend zp ZP_BYTE:9 50.83333333333333 +(byte) div8u::dividend#0 dividend zp ZP_BYTE:11 4.333333333333333 +(byte) div8u::dividend#1 dividend zp ZP_BYTE:11 25.25 +(byte) div8u::dividend#2 dividend zp ZP_BYTE:11 50.83333333333333 (byte) div8u::divisor -(byte) div8u::divisor#0 divisor zp ZP_BYTE:12 13.3125 +(byte) div8u::divisor#0 divisor zp ZP_BYTE:20 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:10 151.5 -(byte) div8u::quotient#2 quotient zp ZP_BYTE:10 101.0 -(byte) div8u::quotient#3 quotient zp ZP_BYTE:10 28.857142857142858 +(byte) div8u::quotient#1 quotient zp ZP_BYTE:12 151.5 +(byte) div8u::quotient#2 quotient zp ZP_BYTE:12 101.0 +(byte) div8u::quotient#3 quotient zp ZP_BYTE:12 28.857142857142858 (byte) div8u::rem (byte) div8u::rem#1 reg byte y 101.0 (byte) div8u::rem#2 reg byte y 202.0 @@ -41,53 +75,29 @@ (byte*) div8u::remainder (byte) div8u::return (byte) div8u::return#0 reg byte a 22.0 -(byte) div8u::return#1 return zp ZP_BYTE:10 52.33333333333333 +(byte) div8u::return#1 return zp ZP_BYTE:12 52.33333333333333 (byte*) line_cursor -(byte*) line_cursor#1 line_cursor zp ZP_WORD:3 46.42857142857143 -(byte*) line_cursor#13 line_cursor zp ZP_WORD:3 0.5416666666666666 -(byte*) line_cursor#6 line_cursor zp ZP_WORD:3 204.0 +(byte*) line_cursor#1 line_cursor zp ZP_WORD:3 9.131578947368421 +(byte*) line_cursor#11 line_cursor zp ZP_WORD:3 204.0 +(byte*) line_cursor#22 line_cursor zp ZP_WORD:3 24.0 +(byte*) line_cursor#25 line_cursor zp ZP_WORD:3 0.9565217391304348 (void()) main() (label) main::@1 -(label) main::@10 -(label) main::@11 -(label) main::@12 -(label) main::@13 -(label) main::@4 -(label) main::@5 -(label) main::@6 -(label) main::@7 -(label) main::@8 -(label) main::@9 +(label) main::@2 (label) main::@return -(byte) main::dividend -(byte) main::dividend#0 dividend zp ZP_BYTE:11 4.714285714285714 -(byte[]) main::dividends -(const byte[]) main::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) main::divisor -(byte) main::divisor#0 divisor zp ZP_BYTE:12 3.3000000000000003 -(byte[]) main::divisors -(const byte[]) main::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) main::i -(byte) main::i#1 i zp ZP_BYTE:2 11.0 -(byte) main::i#10 i zp ZP_BYTE:2 1.8333333333333333 -(byte*) main::rem -(const byte*) main::rem#0 rem = ((byte*))(byte/word/signed word/dword/signed dword) 255 -(byte) main::res -(byte) main::res#0 res zp ZP_BYTE:9 2.4444444444444446 -(const string) main::str str = (string) " / @" -(const string) main::str1 str1 = (string) " = @" -(const string) main::str2 str2 = (string) " @" (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 reg byte a 4.0 (byte~) print_byte::$2 reg byte a 4.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b -(byte) print_byte::b#0 reg byte x 22.0 -(byte) print_byte::b#1 reg byte x 22.0 +(byte) print_byte::b#0 reg byte x 4.0 +(byte) print_byte::b#1 reg byte x 4.0 (byte) print_byte::b#2 reg byte x 22.0 (byte) print_byte::b#3 reg byte x 22.0 -(byte) print_byte::b#4 reg byte x 12.0 +(byte) print_byte::b#4 reg byte x 22.0 +(byte) print_byte::b#5 reg byte x 22.0 +(byte) print_byte::b#6 reg byte x 13.0 (byte[]) print_byte::hextab (const string) print_byte::hextab#0 hextab = (string) "0123456789abcdef" (void()) print_char((byte) print_char::ch) @@ -110,23 +120,100 @@ (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp ZP_WORD:7 202.0 -(byte*) print_str::str#4 str zp ZP_WORD:7 101.5 -(byte*) print_str::str#6 str zp ZP_WORD:7 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 +(word) print_word::w +(word) print_word::w#0 w zp ZP_WORD:5 11.0 +(word) print_word::w#1 w zp ZP_WORD:5 22.0 +(word) print_word::w#2 w zp ZP_WORD:5 22.0 +(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:9 110.0 +(void()) test_16u() +(label) test_16u::@1 +(label) test_16u::@10 +(label) test_16u::@11 +(label) test_16u::@3 +(label) test_16u::@4 +(label) test_16u::@5 +(label) test_16u::@6 +(label) test_16u::@7 +(label) test_16u::@8 +(label) test_16u::@9 +(label) test_16u::@return +(word) test_16u::dividend +(word) test_16u::dividend#0 dividend zp ZP_WORD:13 4.714285714285714 +(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: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:17 2.2 +(const string) test_16u::str str = (string) " / @" +(const string) test_16u::str1 str1 = (string) " = @" +(const string) test_16u::str2 str2 = (string) " @" +(void()) test_8u() +(label) test_8u::@1 +(label) test_8u::@10 +(label) test_8u::@11 +(label) test_8u::@12 +(label) test_8u::@3 +(label) test_8u::@4 +(label) test_8u::@5 +(label) test_8u::@6 +(label) test_8u::@7 +(label) test_8u::@8 +(label) test_8u::@9 +(label) test_8u::@return +(byte) test_8u::dividend +(byte) test_8u::dividend#0 dividend zp ZP_BYTE:19 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:20 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:2 11.0 +(byte) test_8u::i#10 i zp ZP_BYTE:2 1.8333333333333333 +(byte*) test_8u::rem +(const byte*) test_8u::rem#0 rem = ((byte*))(byte/word/signed word/dword/signed dword) 255 +(byte) test_8u::res +(byte) test_8u::res#0 res zp ZP_BYTE:11 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 [ main::i#10 main::i#1 ] -zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] -reg byte x [ print_byte::b#4 print_byte::b#3 print_byte::b#0 print_byte::b#1 print_byte::b#2 ] +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 print_str::str#7 print_str::str#9 print_str::str#0 div16u::dividend#2 div16u::dividend#0 div16u::dividend#1 div16u::return#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:5 [ char_cursor#27 char_cursor#41 char_cursor#2 char_cursor#42 char_cursor#48 char_cursor#28 char_cursor#1 ] -zp ZP_WORD:7 [ print_str::str#4 print_str::str#6 print_str::str#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::quotient#3 div16u::return#1 div16u::quotient#1 div16u::quotient#2 ] +zp ZP_WORD:9 [ div16u::rem#4 rem16u#16 div16u::rem#8 div16u::rem#5 div16u::rem#1 div16u::rem#2 div16u::rem#3 ] +reg byte x [ div16u::i#2 div16u::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:9 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 main::res#0 ] -zp ZP_BYTE:10 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] +zp ZP_BYTE:11 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 test_8u::res#0 ] +zp ZP_BYTE:12 [ div8u::quotient#3 div8u::return#1 div8u::quotient#1 div8u::quotient#2 ] reg byte x [ div8u::i#2 div8u::i#1 ] -zp ZP_BYTE:11 [ main::dividend#0 ] -zp ZP_BYTE:12 [ main::divisor#0 div8u::divisor#0 ] -reg byte a [ div8u::return#0 ] +zp ZP_WORD:13 [ test_16u::dividend#0 ] +zp ZP_WORD:15 [ test_16u::divisor#0 div16u::divisor#0 ] +zp ZP_WORD:17 [ test_16u::res#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:19 [ test_8u::dividend#0 ] +zp ZP_BYTE:20 [ test_8u::divisor#0 div8u::divisor#0 ] +reg byte a [ div8u::return#0 ] reg byte a [ div8u::$1 ]