1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-27 04:49:27 +00:00

Fixed tests

This commit is contained in:
Jesper Gravgaard 2019-06-30 15:30:08 +02:00
parent ee11c66a79
commit 30068dbf92
54 changed files with 19590 additions and 18895 deletions

View File

@ -7,7 +7,8 @@ import dk.camelot64.kickc.model.values.RValue;
*/
public class SymbolTypeArray extends SymbolTypePointer {
/** The fixed size of the array. Can be null, if the size is not bound. (It will be constant before the compilation is done) */
/** The fixed size of the array. Can be null, if the size is not bound.
* If it si non-null it must be constant before the compilation is done. */
private RValue size;
public SymbolTypeArray(SymbolType elementType, RValue size) {

View File

@ -230,7 +230,13 @@ testInt: {
print_sword: {
.label w = 8
lda w+1
bpl b1
bmi b1
lda #' '
jsr print_char
b2:
jsr print_word
rts
b1:
lda #'-'
jsr print_char
sec
@ -240,9 +246,7 @@ print_sword: {
lda #0
sbc w+1
sta w+1
b1:
jsr print_word
rts
jmp b2
}
testShort: {
.const u = $578

View File

@ -31,7 +31,7 @@ main::@return: scope:[main] from main::@4
[14] return
to:@return
testLong: scope:[testLong] from main::@4
[15] (byte*~) print_char_cursor#156 ← (byte*) print_line_cursor#1
[15] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1
[16] call print_str
to:testLong::@1
testLong::@1: scope:[testLong] from testLong
@ -67,7 +67,7 @@ print_ln: scope:[print_ln] from testChar::@6 testInt::@6 testLong::@6 testShort
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
[31] (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 )
[32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28
[33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#24) goto print_ln::@1
[33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#25) goto print_ln::@1
to:print_ln::@return
print_ln::@return: scope:[print_ln] from print_ln::@1
[34] return
@ -92,7 +92,7 @@ print_sdword::@return: scope:[print_sdword] from print_sdword::@1
[43] return
to:@return
print_dword: scope:[print_dword] from print_sdword::@1 testLong::@1
[44] (byte*) print_char_cursor#140 ← phi( print_sdword::@1/(byte*) print_char_cursor#24 testLong::@1/(byte*) print_char_cursor#132 )
[44] (byte*) print_char_cursor#143 ← phi( print_sdword::@1/(byte*) print_char_cursor#25 testLong::@1/(byte*) print_char_cursor#134 )
[44] (dword) print_dword::dw#2 ← phi( print_sdword::@1/(dword) print_dword::dw#0 testLong::@1/(const dword) testLong::u#0 )
[45] (word) print_word::w#1 ← > (dword) print_dword::dw#2
[46] call print_word
@ -104,9 +104,9 @@ print_dword::@1: scope:[print_dword] from print_dword
print_dword::@return: scope:[print_dword] from print_dword::@1
[49] return
to:@return
print_word: scope:[print_word] from print_dword print_dword::@1 print_sword::@1 testInt::@1 testShort::@1
[50] (byte*) print_char_cursor#139 ← phi( print_dword/(byte*) print_char_cursor#140 print_dword::@1/(byte*) print_char_cursor#24 print_sword::@1/(byte*) print_char_cursor#24 testInt::@1/(byte*) print_char_cursor#132 testShort::@1/(byte*) print_char_cursor#132 )
[50] (word) print_word::w#5 ← phi( print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@1/(word) print_word::w#0 testInt::@1/(const word) testInt::u#0 testShort::@1/(const word) testShort::u#0 )
print_word: scope:[print_word] from print_dword print_dword::@1 print_sword::@2 testInt::@1 testShort::@1
[50] (byte*) print_char_cursor#142 ← phi( print_dword/(byte*) print_char_cursor#143 print_dword::@1/(byte*) print_char_cursor#25 print_sword::@2/(byte*) print_char_cursor#25 testInt::@1/(byte*) print_char_cursor#134 testShort::@1/(byte*) print_char_cursor#134 )
[50] (word) print_word::w#5 ← phi( print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 testInt::@1/(const word) testInt::u#0 testShort::@1/(const word) testShort::u#0 )
[51] (byte) print_byte::b#1 ← > (word) print_word::w#5
[52] call print_byte
to:print_word::@1
@ -118,35 +118,35 @@ print_word::@return: scope:[print_word] from print_word::@1
[55] return
to:@return
print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 testChar::@1
[56] (byte*) print_char_cursor#143 ← phi( print_sbyte::@2/(byte*) print_char_cursor#24 print_word/(byte*) print_char_cursor#139 print_word::@1/(byte*) print_char_cursor#24 testChar::@1/(byte*) print_char_cursor#132 )
[56] (byte*) print_char_cursor#146 ← phi( print_sbyte::@2/(byte*) print_char_cursor#25 print_word/(byte*) print_char_cursor#142 print_word::@1/(byte*) print_char_cursor#25 testChar::@1/(byte*) print_char_cursor#134 )
[56] (byte) print_byte::b#4 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 testChar::@1/(const byte) testChar::u#0 )
[57] (byte~) print_byte::$0 ← (byte) print_byte::b#4 >> (byte) 4
[58] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[58] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[59] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[60] (byte~) print_byte::$2 ← (byte) print_byte::b#4 & (byte) $f
[61] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[61] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[62] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[63] return
to:@return
print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sdword::@2 print_sword::@2 testChar::@2 testChar::@4 testInt::@2 testInt::@4 testLong::@2 testLong::@4 testShort::@2 testShort::@4
[64] (byte*) print_char_cursor#90 ← phi( print_byte/(byte*) print_char_cursor#143 print_byte::@1/(byte*) print_char_cursor#24 print_sbyte::@1/(byte*) print_char_cursor#24 print_sbyte::@3/(byte*) print_char_cursor#24 print_sdword::@2/(byte*) print_char_cursor#24 print_sword::@2/(byte*) print_char_cursor#24 testChar::@2/(byte*) print_char_cursor#24 testChar::@4/(byte*) print_char_cursor#24 testInt::@2/(byte*) print_char_cursor#24 testInt::@4/(byte*) print_char_cursor#24 testLong::@2/(byte*) print_char_cursor#24 testLong::@4/(byte*) print_char_cursor#24 testShort::@2/(byte*) print_char_cursor#24 testShort::@4/(byte*) print_char_cursor#24 )
[64] (byte) print_char::ch#14 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sdword::@2/(byte) '-' print_sword::@2/(byte) '-' testChar::@2/(byte) ' ' testChar::@4/(byte) ' ' testInt::@2/(byte) ' ' testInt::@4/(byte) ' ' testLong::@2/(byte) ' ' testLong::@4/(byte) ' ' testShort::@2/(byte) ' ' testShort::@4/(byte) ' ' )
[65] *((byte*) print_char_cursor#90) ← (byte) print_char::ch#14
[66] (byte*) print_char_cursor#24 ← ++ (byte*) print_char_cursor#90
print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sdword::@2 print_sword::@1 print_sword::@3 testChar::@2 testChar::@4 testInt::@2 testInt::@4 testLong::@2 testLong::@4 testShort::@2 testShort::@4
[64] (byte*) print_char_cursor#92 ← phi( print_byte/(byte*) print_char_cursor#146 print_byte::@1/(byte*) print_char_cursor#25 print_sbyte::@1/(byte*) print_char_cursor#25 print_sbyte::@3/(byte*) print_char_cursor#25 print_sdword::@2/(byte*) print_char_cursor#25 print_sword::@1/(byte*) print_char_cursor#25 print_sword::@3/(byte*) print_char_cursor#25 testChar::@2/(byte*) print_char_cursor#25 testChar::@4/(byte*) print_char_cursor#25 testInt::@2/(byte*) print_char_cursor#25 testInt::@4/(byte*) print_char_cursor#25 testLong::@2/(byte*) print_char_cursor#25 testLong::@4/(byte*) print_char_cursor#25 testShort::@2/(byte*) print_char_cursor#25 testShort::@4/(byte*) print_char_cursor#25 )
[64] (byte) print_char::ch#15 ← phi( print_byte/(byte) print_char::ch#5 print_byte::@1/(byte) print_char::ch#6 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sdword::@2/(byte) '-' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' testChar::@2/(byte) ' ' testChar::@4/(byte) ' ' testInt::@2/(byte) ' ' testInt::@4/(byte) ' ' testLong::@2/(byte) ' ' testLong::@4/(byte) ' ' testShort::@2/(byte) ' ' testShort::@4/(byte) ' ' )
[65] *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15
[66] (byte*) print_char_cursor#25 ← ++ (byte*) print_char_cursor#92
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[67] return
to:@return
print_str: scope:[print_str] from testChar testInt testLong testShort
[68] (byte*) print_char_cursor#150 ← phi( testChar/(byte*) 1024 testInt/(byte*~) print_char_cursor#155 testLong/(byte*~) print_char_cursor#156 testShort/(byte*~) print_char_cursor#157 )
[68] (byte*) print_char_cursor#153 ← phi( testChar/(byte*) 1024 testInt/(byte*~) print_char_cursor#158 testLong/(byte*~) print_char_cursor#159 testShort/(byte*~) print_char_cursor#160 )
[68] (byte*) print_str::str#7 ← phi( testChar/(const string) testChar::str testInt/(const string) testInt::str testLong/(const string) testLong::str testShort/(const string) testShort::str )
to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2
[69] (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#150 print_str::@2/(byte*) print_char_cursor#1 )
[69] (byte*) print_char_cursor#134 ← phi( print_str/(byte*) print_char_cursor#153 print_str::@2/(byte*) print_char_cursor#1 )
[69] (byte*) print_str::str#5 ← phi( print_str/(byte*) print_str::str#7 print_str::@2/(byte*) print_str::str#0 )
[70] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2
to:print_str::@return
@ -154,12 +154,12 @@ print_str::@return: scope:[print_str] from print_str::@1
[71] return
to:@return
print_str::@2: scope:[print_str] from print_str::@1
[72] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#5)
[73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132
[72] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#5)
[73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134
[74] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5
to:print_str::@1
testInt: scope:[testInt] from main::@3
[75] (byte*~) print_char_cursor#155 ← (byte*) print_line_cursor#1
[75] (byte*~) print_char_cursor#158 ← (byte*) print_line_cursor#1
[76] call print_str
to:testInt::@1
testInt::@1: scope:[testInt] from testInt
@ -190,118 +190,122 @@ testInt::@return: scope:[testInt] from testInt::@6
[89] return
to:@return
print_sword: scope:[print_sword] from testInt::@3 testInt::@5 testShort::@3 testShort::@5
[90] (signed word) print_sword::w#5 ← phi( testInt::@3/(const signed word) testInt::n#0 testInt::@5/(const signed word) testInt::s#0 testShort::@3/(const signed word) testShort::n#0 testShort::@5/(const signed word) testShort::s#0 )
[91] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword
[90] (signed word) print_sword::w#10 ← phi( testInt::@3/(const signed word) testInt::n#0 testInt::@5/(const signed word) testInt::s#0 testShort::@3/(const signed word) testShort::n#0 testShort::@5/(const signed word) testShort::s#0 )
[91] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword
[92] phi()
[93] call print_char
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword::@2
[94] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5
to:print_sword::@1
print_sword::@1: scope:[print_sword] from print_sword print_sword::@3
[95] (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#5 print_sword::@3/(signed word) print_sword::w#0 )
[96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6
[97] call print_word
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4
[94] (signed word) print_sword::w#7 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#10 )
[95] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7
[96] call print_word
to:print_sword::@return
print_sword::@return: scope:[print_sword] from print_sword::@1
[98] return
print_sword::@return: scope:[print_sword] from print_sword::@2
[97] return
to:@return
print_sword::@1: scope:[print_sword] from print_sword
[98] phi()
[99] call print_char
to:print_sword::@4
print_sword::@4: scope:[print_sword] from print_sword::@1
[100] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10
to:print_sword::@2
testShort: scope:[testShort] from main::@2
[99] (byte*~) print_char_cursor#157 ← (byte*) print_line_cursor#1
[100] call print_str
[101] (byte*~) print_char_cursor#160 ← (byte*) print_line_cursor#1
[102] call print_str
to:testShort::@1
testShort::@1: scope:[testShort] from testShort
[101] phi()
[102] call print_word
[103] phi()
[104] call print_word
to:testShort::@2
testShort::@2: scope:[testShort] from testShort::@1
[103] phi()
[104] call print_char
[105] phi()
[106] call print_char
to:testShort::@3
testShort::@3: scope:[testShort] from testShort::@2
[105] phi()
[106] call print_sword
[107] phi()
[108] call print_sword
to:testShort::@4
testShort::@4: scope:[testShort] from testShort::@3
[107] phi()
[108] call print_char
[109] phi()
[110] call print_char
to:testShort::@5
testShort::@5: scope:[testShort] from testShort::@4
[109] phi()
[110] call print_sword
[111] phi()
[112] call print_sword
to:testShort::@6
testShort::@6: scope:[testShort] from testShort::@5
[111] phi()
[112] call print_ln
[113] phi()
[114] call print_ln
to:testShort::@return
testShort::@return: scope:[testShort] from testShort::@6
[113] return
[115] return
to:@return
testChar: scope:[testChar] from main::@1
[114] phi()
[115] call print_str
[116] phi()
[117] call print_str
to:testChar::@1
testChar::@1: scope:[testChar] from testChar
[116] phi()
[117] call print_byte
[118] phi()
[119] call print_byte
to:testChar::@2
testChar::@2: scope:[testChar] from testChar::@1
[118] phi()
[119] call print_char
[120] phi()
[121] call print_char
to:testChar::@3
testChar::@3: scope:[testChar] from testChar::@2
[120] phi()
[121] call print_sbyte
[122] phi()
[123] call print_sbyte
to:testChar::@4
testChar::@4: scope:[testChar] from testChar::@3
[122] phi()
[123] call print_char
[124] phi()
[125] call print_char
to:testChar::@5
testChar::@5: scope:[testChar] from testChar::@4
[124] phi()
[125] call print_sbyte
[126] phi()
[127] call print_sbyte
to:testChar::@6
testChar::@6: scope:[testChar] from testChar::@5
[126] phi()
[127] call print_ln
[128] phi()
[129] call print_ln
to:testChar::@return
testChar::@return: scope:[testChar] from testChar::@6
[128] return
[130] return
to:@return
print_sbyte: scope:[print_sbyte] from testChar::@3 testChar::@5
[129] (signed byte) print_sbyte::b#3 ← phi( testChar::@3/(const signed byte) testChar::n#0 testChar::@5/(const signed byte) testChar::s#0 )
[130] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1
[131] (signed byte) print_sbyte::b#3 ← phi( testChar::@3/(const signed byte) testChar::n#0 testChar::@5/(const signed byte) testChar::s#0 )
[132] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1
to:print_sbyte::@3
print_sbyte::@3: scope:[print_sbyte] from print_sbyte
[131] phi()
[132] call print_char
[133] phi()
[134] call print_char
to:print_sbyte::@2
print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@3 print_sbyte::@4
[133] (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#3 )
[134] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5
[135] call print_byte
[135] (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#3 )
[136] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5
[137] call print_byte
to:print_sbyte::@return
print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2
[136] return
[138] return
to:@return
print_sbyte::@1: scope:[print_sbyte] from print_sbyte
[137] phi()
[138] call print_char
[139] phi()
[140] call print_char
to:print_sbyte::@4
print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@1
[139] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3
[141] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3
to:print_sbyte::@2
print_cls: scope:[print_cls] from main
[140] phi()
[142] phi()
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
[141] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
[142] *((byte*) print_cls::sc#2) ← (byte) ' '
[143] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[144] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1
[143] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
[144] *((byte*) print_cls::sc#2) ← (byte) ' '
[145] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[146] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
[145] return
[147] return
to:@return

File diff suppressed because one or more lines are too long

View File

@ -20,21 +20,21 @@
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#14 reg byte a 6.0
(byte) print_char::ch#4 reg byte a 4.0
(byte) print_char::ch#15 reg byte a 6.0
(byte) print_char::ch#5 reg byte a 4.0
(byte) print_char::ch#6 reg byte a 4.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:10 11.0
(byte*) print_char_cursor#132 print_char_cursor zp ZP_WORD:10 3.583333333333333
(byte*) print_char_cursor#139 print_char_cursor zp ZP_WORD:10 6.0
(byte*) print_char_cursor#140 print_char_cursor zp ZP_WORD:10 3.0
(byte*) print_char_cursor#143 print_char_cursor zp ZP_WORD:10 3.333333333333333
(byte*) print_char_cursor#150 print_char_cursor zp ZP_WORD:10 8.0
(byte*~) print_char_cursor#155 print_char_cursor zp ZP_WORD:10 4.0
(byte*~) print_char_cursor#156 print_char_cursor zp ZP_WORD:10 4.0
(byte*~) print_char_cursor#157 print_char_cursor zp ZP_WORD:10 4.0
(byte*) print_char_cursor#24 print_char_cursor zp ZP_WORD:10 0.5568181818181817
(byte*) print_char_cursor#90 print_char_cursor zp ZP_WORD:10 16.0
(byte*) print_char_cursor#134 print_char_cursor zp ZP_WORD:10 3.583333333333333
(byte*) print_char_cursor#142 print_char_cursor zp ZP_WORD:10 6.0
(byte*) print_char_cursor#143 print_char_cursor zp ZP_WORD:10 3.0
(byte*) print_char_cursor#146 print_char_cursor zp ZP_WORD:10 3.333333333333333
(byte*) print_char_cursor#153 print_char_cursor zp ZP_WORD:10 8.0
(byte*~) print_char_cursor#158 print_char_cursor zp ZP_WORD:10 4.0
(byte*~) print_char_cursor#159 print_char_cursor zp ZP_WORD:10 4.0
(byte*~) print_char_cursor#160 print_char_cursor zp ZP_WORD:10 4.0
(byte*) print_char_cursor#25 print_char_cursor zp ZP_WORD:10 0.5666666666666664
(byte*) print_char_cursor#92 print_char_cursor zp ZP_WORD:10 17.0
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
@ -88,11 +88,12 @@
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#5 w zp ZP_WORD:8 1.5
(signed word) print_sword::w#6 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#10 w zp ZP_WORD:8 1.0
(signed word) print_sword::w#7 w zp ZP_WORD:8 4.0
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
@ -164,10 +165,10 @@
zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ]
zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#2 print_dword::dw#0 ]
zp ZP_WORD:8 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#6 print_sword::w#5 print_sword::w#0 ]
zp ZP_WORD:8 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#7 print_sword::w#0 print_sword::w#10 ]
reg byte x [ print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ]
reg byte a [ print_char::ch#14 print_char::ch#4 print_char::ch#5 ]
zp ZP_WORD:10 [ print_char_cursor#90 print_char_cursor#143 print_char_cursor#139 print_char_cursor#140 print_char_cursor#24 print_char_cursor#132 print_char_cursor#150 print_char_cursor#155 print_char_cursor#156 print_char_cursor#157 print_char_cursor#1 ]
reg byte a [ print_char::ch#15 print_char::ch#5 print_char::ch#6 ]
zp ZP_WORD:10 [ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ]
zp ZP_WORD:12 [ print_str::str#5 print_str::str#7 print_str::str#0 ]
reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 ]
zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ]

View File

@ -456,7 +456,7 @@ init_font_hex: {
print_hextab: .text "0123456789abcdef"
.pc = CORDIC_ATAN2_ANGLES_16 "CORDIC_ATAN2_ANGLES_16"
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
.pc = CORDIC_ATAN2_ANGLES_8 "CORDIC_ATAN2_ANGLES_8"
.fill CORDIC_ITERATIONS_8, 2*256*atan(1/pow(2,i))/PI/2

View File

@ -3,7 +3,7 @@
to:@1
@1: scope:[] from @begin
kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
}}
to:@2
@2: scope:[] from @1

View File

@ -173,7 +173,7 @@ init_font_hex::@return: scope:[init_font_hex] from init_font_hex::@5
(byte) CORDIC_ITERATIONS_16#0 ← (number) $f
(word*) CORDIC_ATAN2_ANGLES_16#0 ← ((word*)) (number) $1000
kickasm(location (word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
}}
to:@2
atan2_16: scope:[atan2_16] from main::@2
@ -1733,7 +1733,7 @@ FINAL CONTROL FLOW GRAPH
to:@1
@1: scope:[] from @begin
kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
}}
to:@2
@2: scope:[] from @1
@ -2302,7 +2302,7 @@ bbegin:
jmp b1
//SEG4 @1
b1:
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
// Populate cordic angles table
jmp b2
//SEG6 @2
@ -3159,7 +3159,7 @@ init_font_hex: {
print_hextab: .text "0123456789abcdef"
.pc = CORDIC_ATAN2_ANGLES_16 "CORDIC_ATAN2_ANGLES_16"
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
.pc = CORDIC_ATAN2_ANGLES_8 "CORDIC_ATAN2_ANGLES_8"
.fill CORDIC_ITERATIONS_8, 2*256*atan(1/pow(2,i))/PI/2
@ -3438,7 +3438,7 @@ bbegin:
jmp b1
//SEG4 @1
b1:
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
// Populate cordic angles table
jmp b2
//SEG6 @2
@ -4219,7 +4219,7 @@ init_font_hex: {
print_hextab: .text "0123456789abcdef"
.pc = CORDIC_ATAN2_ANGLES_16 "CORDIC_ATAN2_ANGLES_16"
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
.pc = CORDIC_ATAN2_ANGLES_8 "CORDIC_ATAN2_ANGLES_8"
.fill CORDIC_ITERATIONS_8, 2*256*atan(1/pow(2,i))/PI/2
@ -4659,7 +4659,7 @@ Score: 370761
.label print_char_cursor = 9
//SEG3 @begin
//SEG4 @1
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
// Populate cordic angles table
//SEG6 @2
//SEG7 kickasm(location (const byte*) CORDIC_ATAN2_ANGLES_8#0 uses CORDIC_ITERATIONS_8#0) {{ .fill CORDIC_ITERATIONS_8, 2*256*atan(1/pow(2,i))/PI/2 }}
@ -5331,7 +5331,7 @@ init_font_hex: {
print_hextab: .text "0123456789abcdef"
.pc = CORDIC_ATAN2_ANGLES_16 "CORDIC_ATAN2_ANGLES_16"
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
.pc = CORDIC_ATAN2_ANGLES_8 "CORDIC_ATAN2_ANGLES_8"
.fill CORDIC_ITERATIONS_8, 2*256*atan(1/pow(2,i))/PI/2

View File

@ -363,7 +363,7 @@ init_font_hex: {
FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4
.pc = CORDIC_ATAN2_ANGLES_16 "CORDIC_ATAN2_ANGLES_16"
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
.pc = CORDIC_ATAN2_ANGLES_8 "CORDIC_ATAN2_ANGLES_8"
.fill CORDIC_ITERATIONS_8, 2*256*atan(1/pow(2,i))/PI/2

View File

@ -3,7 +3,7 @@
to:@1
@1: scope:[] from @begin
kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
}}
to:@2
@2: scope:[] from @1

View File

@ -150,7 +150,7 @@ init_font_hex::@return: scope:[init_font_hex] from init_font_hex::@5
(byte) CORDIC_ITERATIONS_16#0 ← (number) $f
(word*) CORDIC_ATAN2_ANGLES_16#0 ← ((word*)) (number) $1000
kickasm(location (word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
}}
to:@2
atan2_16: scope:[atan2_16] from main::@2
@ -1329,7 +1329,7 @@ FINAL CONTROL FLOW GRAPH
to:@1
@1: scope:[] from @begin
kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
}}
to:@2
@2: scope:[] from @1
@ -1737,7 +1737,7 @@ bbegin:
jmp b1
//SEG4 @1
b1:
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
// Populate cordic angles table
jmp b2
//SEG6 @2
@ -2375,7 +2375,7 @@ init_font_hex: {
FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4
.pc = CORDIC_ATAN2_ANGLES_16 "CORDIC_ATAN2_ANGLES_16"
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
.pc = CORDIC_ATAN2_ANGLES_8 "CORDIC_ATAN2_ANGLES_8"
.fill CORDIC_ITERATIONS_8, 2*256*atan(1/pow(2,i))/PI/2
@ -2585,7 +2585,7 @@ bbegin:
jmp b1
//SEG4 @1
b1:
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
// Populate cordic angles table
jmp b2
//SEG6 @2
@ -3177,7 +3177,7 @@ init_font_hex: {
FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4
.pc = CORDIC_ATAN2_ANGLES_16 "CORDIC_ATAN2_ANGLES_16"
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
.pc = CORDIC_ATAN2_ANGLES_8 "CORDIC_ATAN2_ANGLES_8"
.fill CORDIC_ITERATIONS_8, 2*256*atan(1/pow(2,i))/PI/2
@ -3508,7 +3508,7 @@ Score: 362377
.label SCREEN = $2800
//SEG3 @begin
//SEG4 @1
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
// Populate cordic angles table
//SEG6 @2
//SEG7 kickasm(location (const byte*) CORDIC_ATAN2_ANGLES_8#0 uses CORDIC_ITERATIONS_8#0) {{ .fill CORDIC_ITERATIONS_8, 2*256*atan(1/pow(2,i))/PI/2 }}
@ -4021,7 +4021,7 @@ init_font_hex: {
FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4
.pc = CORDIC_ATAN2_ANGLES_16 "CORDIC_ATAN2_ANGLES_16"
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
.pc = CORDIC_ATAN2_ANGLES_8 "CORDIC_ATAN2_ANGLES_8"
.fill CORDIC_ITERATIONS_8, 2*256*atan(1/pow(2,i))/PI/2

View File

@ -291,7 +291,7 @@ init_font_hex: {
FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4
.pc = CORDIC_ATAN2_ANGLES_16 "CORDIC_ATAN2_ANGLES_16"
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
.pc = CORDIC_ATAN2_ANGLES_8 "CORDIC_ATAN2_ANGLES_8"
.fill CORDIC_ITERATIONS_8, 2*256*atan(1/pow(2,i))/PI/2

View File

@ -3,7 +3,7 @@
to:@1
@1: scope:[] from @begin
kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
}}
to:@2
@2: scope:[] from @1

View File

@ -154,7 +154,7 @@ init_font_hex::@return: scope:[init_font_hex] from init_font_hex::@5
(byte) CORDIC_ITERATIONS_16#0 ← (number) $f
(word*) CORDIC_ATAN2_ANGLES_16#0 ← ((word*)) (number) $1000
kickasm(location (word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
}}
to:@6
@6: scope:[] from @5
@ -1272,7 +1272,7 @@ FINAL CONTROL FLOW GRAPH
to:@1
@1: scope:[] from @begin
kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
}}
to:@2
@2: scope:[] from @1
@ -1647,7 +1647,7 @@ bbegin:
jmp b1
//SEG4 @1
b1:
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
// Populate cordic angles table
jmp b2
//SEG6 @2
@ -2190,7 +2190,7 @@ init_font_hex: {
FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4
.pc = CORDIC_ATAN2_ANGLES_16 "CORDIC_ATAN2_ANGLES_16"
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
.pc = CORDIC_ATAN2_ANGLES_8 "CORDIC_ATAN2_ANGLES_8"
.fill CORDIC_ITERATIONS_8, 2*256*atan(1/pow(2,i))/PI/2
@ -2392,7 +2392,7 @@ bbegin:
jmp b1
//SEG4 @1
b1:
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
// Populate cordic angles table
jmp b2
//SEG6 @2
@ -2906,7 +2906,7 @@ init_font_hex: {
FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4
.pc = CORDIC_ATAN2_ANGLES_16 "CORDIC_ATAN2_ANGLES_16"
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
.pc = CORDIC_ATAN2_ANGLES_8 "CORDIC_ATAN2_ANGLES_8"
.fill CORDIC_ITERATIONS_8, 2*256*atan(1/pow(2,i))/PI/2
@ -3223,7 +3223,7 @@ Score: 237472
.label SCREEN = $2800
//SEG3 @begin
//SEG4 @1
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
//SEG5 kickasm(location (const word*) CORDIC_ATAN2_ANGLES_16#0 uses CORDIC_ITERATIONS_16#0) {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++) .word 256*2*256*atan(1/pow(2,i))/PI/2 }}
// Populate cordic angles table
//SEG6 @2
//SEG7 kickasm(location (const byte*) CORDIC_ATAN2_ANGLES_8#0 uses CORDIC_ITERATIONS_8#0) {{ .fill CORDIC_ITERATIONS_8, 2*256*atan(1/pow(2,i))/PI/2 }}
@ -3658,7 +3658,7 @@ init_font_hex: {
FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4
.pc = CORDIC_ATAN2_ANGLES_16 "CORDIC_ATAN2_ANGLES_16"
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
.word 256*2*256*atan(1/pow(2,i))/PI/2
.word 256*2*256*atan(1/pow(2,i))/PI/2
.pc = CORDIC_ATAN2_ANGLES_8 "CORDIC_ATAN2_ANGLES_8"
.fill CORDIC_ITERATIONS_8, 2*256*atan(1/pow(2,i))/PI/2

View File

@ -3,7 +3,7 @@
:BasicUpstart(main)
.pc = $80d "Program"
.label print_line_cursor = 2
.label print_char_cursor = 7
.label print_char_cursor = 6
main: {
ldy #0
b1:
@ -75,7 +75,13 @@ print_ln: {
print_sword: {
.label w = 4
lda w+1
bpl b1
bmi b1
lda #' '
jsr print_char
b2:
jsr print_word
rts
b1:
lda #'-'
jsr print_char
sec
@ -85,8 +91,17 @@ print_sword: {
lda #0
sbc w+1
sta w+1
b1:
jsr print_word
jmp b2
}
// Print a single char
// print_char(byte register(A) ch)
print_char: {
ldy #0
sta (print_char_cursor),y
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
rts
}
// Print a word as HEX
@ -102,9 +117,9 @@ print_word: {
rts
}
// Print a byte as HEX
// print_byte(byte zeropage(6) b)
// print_byte(byte zeropage(8) b)
print_byte: {
.label b = 6
.label b = 8
lda b
lsr
lsr
@ -120,17 +135,6 @@ print_byte: {
jsr print_char
rts
}
// Print a single char
// print_char(byte register(A) ch)
print_char: {
ldy #0
sta (print_char_cursor),y
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
rts
}
// Clear the screen. Also resets current line/char cursor.
print_cls: {
.label sc = 9

View File

@ -33,7 +33,7 @@ main::@2: scope:[main] from main::@6
to:main::@3
main::@3: scope:[main] from main::@2 main::@9
[16] (byte*) print_line_cursor#19 ← phi( main::@9/(byte*) print_line_cursor#1 main::@2/(byte*) 1024 )
[16] (byte*) print_char_cursor#46 ← phi( main::@9/(byte*~) print_char_cursor#63 main::@2/(byte*) 1024 )
[16] (byte*) print_char_cursor#49 ← phi( main::@9/(byte*~) print_char_cursor#63 main::@2/(byte*) 1024 )
[16] (byte) main::j#2 ← phi( main::@9/(byte) main::j#1 main::@2/(byte) 0 )
[17] (byte~) main::$8 ← (byte) main::j#2 << (byte) 1
[18] (signed word) print_sword::w#1 ← *((const signed word[]) words#0 + (byte~) main::$8)
@ -59,83 +59,85 @@ print_ln: scope:[print_ln] from main::@7
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
[27] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 )
[28] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28
[29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1
[29] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1
to:print_ln::@return
print_ln::@return: scope:[print_ln] from print_ln::@1
[30] return
to:@return
print_sword: scope:[print_sword] from main::@3
[31] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword
[31] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword
[32] phi()
[33] call print_char
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword::@2
[34] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1
to:print_sword::@1
print_sword::@1: scope:[print_sword] from print_sword print_sword::@3
[35] (byte*) print_char_cursor#41 ← phi( print_sword/(byte*) print_char_cursor#46 print_sword::@3/(byte*) print_char_cursor#12 )
[35] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 )
[36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3
[37] call print_word
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4
[34] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 )
[35] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4
[36] call print_word
to:print_sword::@return
print_sword::@return: scope:[print_sword] from print_sword::@1
[38] return
print_sword::@return: scope:[print_sword] from print_sword::@2
[37] return
to:@return
print_word: scope:[print_word] from print_sword::@1
[39] (byte) print_byte::b#0 ← > (word) print_word::w#0
[40] call print_byte
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[41] (byte) print_byte::b#1 ← < (word) print_word::w#0
[42] call print_byte
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[43] return
to:@return
print_byte: scope:[print_byte] from print_word print_word::@1
[44] (byte*) print_char_cursor#44 ← phi( print_word/(byte*) print_char_cursor#41 print_word::@1/(byte*) print_char_cursor#12 )
[44] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
[45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
[46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[47] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
[49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[50] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[51] return
to:@return
print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2
[52] (byte*) print_char_cursor#32 ← phi( print_byte/(byte*) print_char_cursor#44 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#46 )
[52] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' )
[53] *((byte*) print_char_cursor#32) ← (byte) print_char::ch#3
[54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#32
print_sword::@1: scope:[print_sword] from print_sword
[38] phi()
[39] call print_char
to:print_sword::@4
print_sword::@4: scope:[print_sword] from print_sword::@1
[40] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1
to:print_sword::@2
print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@1 print_sword::@3
[41] (byte*) print_char_cursor#34 ← phi( print_byte/(byte*) print_char_cursor#13 print_byte::@1/(byte*) print_char_cursor#13 print_sword::@1/(byte*) print_char_cursor#49 print_sword::@3/(byte*) print_char_cursor#49 )
[41] (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' )
[42] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4
[43] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#34
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[55] return
[44] return
to:@return
print_word: scope:[print_word] from print_sword::@2
[45] (byte) print_byte::b#0 ← > (word) print_word::w#0
[46] call print_byte
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[47] (byte) print_byte::b#1 ← < (word) print_word::w#0
[48] call print_byte
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[49] return
to:@return
print_byte: scope:[print_byte] from print_word print_word::@1
[50] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
[51] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
[52] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[53] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[54] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
[55] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[56] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[57] return
to:@return
print_cls: scope:[print_cls] from main::@2
[56] phi()
[58] phi()
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
[57] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
[58] *((byte*) print_cls::sc#2) ← (byte) ' '
[59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[60] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1
[59] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
[60] *((byte*) print_cls::sc#2) ← (byte) ' '
[61] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[62] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
[61] return
[63] return
to:@return
sub: scope:[sub] from main::@1 main::@4 main::@5
[62] (byte) sub::s#3 ← phi( main::@1/(byte) $80 main::@4/(byte) $40 main::@5/(byte) $40 )
[62] (byte) sub::idx#3 ← phi( main::@1/(byte) sub::idx#0 main::@4/(byte) sub::idx#1 main::@5/(byte) sub::idx#2 )
[63] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1
[64] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3
[64] (byte) sub::s#3 ← phi( main::@1/(byte) $80 main::@4/(byte) $40 main::@5/(byte) $40 )
[64] (byte) sub::idx#3 ← phi( main::@1/(byte) sub::idx#0 main::@4/(byte) sub::idx#1 main::@5/(byte) sub::idx#2 )
[65] (byte~) sub::$0 ← (byte) sub::idx#3 << (byte) 1
[66] *((const signed word[]) words#0 + (byte~) sub::$0) ← *((const signed word[]) words#0 + (byte~) sub::$0) - (byte) sub::s#3
to:sub::@return
sub::@return: scope:[sub] from sub
[65] return
[67] return
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -25,22 +25,20 @@
(label) print_byte::@1
(label) print_byte::@return
(byte) print_byte::b
(byte) print_byte::b#0 b zp ZP_BYTE:6 4.0
(byte) print_byte::b#1 b zp ZP_BYTE:6 4.0
(byte) print_byte::b#2 b zp ZP_BYTE:6 2.0
(byte) print_byte::b#0 b zp ZP_BYTE:8 4.0
(byte) print_byte::b#1 b zp ZP_BYTE:8 4.0
(byte) print_byte::b#2 b zp ZP_BYTE:8 2.0
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#1 reg byte a 4.0
(byte) print_char::ch#2 reg byte a 4.0
(byte) print_char::ch#3 reg byte a 6.0
(byte) print_char::ch#3 reg byte a 4.0
(byte) print_char::ch#4 reg byte a 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:7 5.190476190476189
(byte*) print_char_cursor#32 print_char_cursor zp ZP_WORD:7 5.0
(byte*) print_char_cursor#41 print_char_cursor zp ZP_WORD:7 2.0
(byte*) print_char_cursor#44 print_char_cursor zp ZP_WORD:7 2.0
(byte*) print_char_cursor#46 print_char_cursor zp ZP_WORD:7 3.0
(byte*~) print_char_cursor#63 print_char_cursor zp ZP_WORD:7 22.0
(byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:6 3.821428571428572
(byte*) print_char_cursor#34 print_char_cursor zp ZP_WORD:6 6.0
(byte*) print_char_cursor#49 print_char_cursor zp ZP_WORD:6 2.5
(byte*~) print_char_cursor#63 print_char_cursor zp ZP_WORD:6 22.0
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
@ -61,11 +59,12 @@
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:4 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:4 4.25
(signed word) print_sword::w#3 w zp ZP_WORD:4 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:4 2.8333333333333335
(signed word) print_sword::w#4 w zp ZP_WORD:4 4.0
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
@ -87,10 +86,10 @@
reg byte y [ main::i#2 main::i#1 ]
reg byte x [ main::j#2 main::j#1 ]
zp ZP_WORD:2 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ]
zp ZP_WORD:4 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 print_word::w#0 ]
zp ZP_BYTE:6 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ]
zp ZP_WORD:7 [ print_char_cursor#32 print_char_cursor#44 print_char_cursor#41 print_char_cursor#46 print_char_cursor#63 print_char_cursor#12 ]
zp ZP_WORD:4 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#0 ]
reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
zp ZP_WORD:6 [ print_char_cursor#34 print_char_cursor#13 print_char_cursor#49 print_char_cursor#63 ]
zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ]
reg byte a [ sub::idx#3 sub::idx#0 sub::idx#1 sub::idx#2 ]
reg byte x [ sub::s#3 ]

View File

@ -95,7 +95,13 @@ print_str: {
print_sword: {
.label w = 6
lda w+1
bpl b1
bmi b1
lda #' '
jsr print_char
b2:
jsr print_word
rts
b1:
lda #'-'
jsr print_char
sec
@ -105,8 +111,17 @@ print_sword: {
lda #0
sbc w+1
sta w+1
b1:
jsr print_word
jmp b2
}
// Print a single char
// print_char(byte register(A) ch)
print_char: {
ldy #0
sta (print_char_cursor),y
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
rts
}
// Print a word as HEX
@ -138,17 +153,6 @@ print_byte: {
jsr print_char
rts
}
// Print a single char
// print_char(byte register(A) ch)
print_char: {
ldy #0
sta (print_char_cursor),y
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
rts
}
// Clear the screen. Also resets current line/char cursor.
print_cls: {
.label sc = $a

View File

@ -16,7 +16,7 @@ main::@4: scope:[main] from main
[7] call print_cls
to:main::@1
main::@1: scope:[main] from main::@4 main::@6
[8] (byte*) print_char_cursor#49 ← phi( main::@4/(const byte*) print_line_cursor#0 main::@6/(byte*) print_char_cursor#2 )
[8] (byte*) print_char_cursor#52 ← phi( main::@4/(const byte*) print_line_cursor#0 main::@6/(byte*) print_char_cursor#2 )
[8] (signed word*) main::st1#2 ← phi( main::@4/(const signed word[$78]) main::sintab1#0 main::@6/(signed word*) main::st1#1 )
[9] (signed word) main::sw#0 ← *((signed word*) main::st1#2)
[10] if((signed word) main::sw#0<(signed byte) 0) goto main::@2
@ -26,7 +26,7 @@ main::@3: scope:[main] from main::@1
[12] call print_str
to:main::@2
main::@2: scope:[main] from main::@1 main::@3
[13] (byte*) print_char_cursor#48 ← phi( main::@1/(byte*) print_char_cursor#49 main::@3/(byte*) print_char_cursor#2 )
[13] (byte*) print_char_cursor#51 ← phi( main::@1/(byte*) print_char_cursor#52 main::@3/(byte*) print_char_cursor#2 )
[14] (signed word) print_sword::w#1 ← (signed word) main::sw#0
[15] call print_sword
to:main::@5
@ -42,11 +42,11 @@ main::@return: scope:[main] from main::@6
[20] return
to:@return
print_str: scope:[print_str] from main::@3 main::@5
[21] (byte*) print_char_cursor#51 ← phi( main::@3/(byte*) print_char_cursor#49 main::@5/(byte*) print_char_cursor#12 )
[21] (byte*) print_char_cursor#54 ← phi( main::@3/(byte*) print_char_cursor#52 main::@5/(byte*) print_char_cursor#13 )
[21] (byte*) print_str::str#5 ← phi( main::@3/(const string) main::str1 main::@5/(const string) main::str )
to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2
[22] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#51 print_str::@2/(byte*) print_char_cursor#1 )
[22] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#54 print_str::@2/(byte*) print_char_cursor#1 )
[22] (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 )
[23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2
to:print_str::@return
@ -59,262 +59,264 @@ print_str::@2: scope:[print_str] from print_str::@1
[27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3
to:print_str::@1
print_sword: scope:[print_sword] from main::@2
[28] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword
[28] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword
[29] phi()
[30] call print_char
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword::@2
[31] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1
to:print_sword::@1
print_sword::@1: scope:[print_sword] from print_sword print_sword::@3
[32] (byte*) print_char_cursor#43 ← phi( print_sword/(byte*) print_char_cursor#48 print_sword::@3/(byte*) print_char_cursor#12 )
[32] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 )
[33] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3
[34] call print_word
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4
[31] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 )
[32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4
[33] call print_word
to:print_sword::@return
print_sword::@return: scope:[print_sword] from print_sword::@1
[35] return
print_sword::@return: scope:[print_sword] from print_sword::@2
[34] return
to:@return
print_word: scope:[print_word] from print_sword::@1
[36] (byte) print_byte::b#0 ← > (word) print_word::w#0
[37] call print_byte
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[38] (byte) print_byte::b#1 ← < (word) print_word::w#0
[39] call print_byte
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[40] return
to:@return
print_byte: scope:[print_byte] from print_word print_word::@1
[41] (byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#43 print_word::@1/(byte*) print_char_cursor#12 )
[41] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
[42] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
[43] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[44] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[45] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
[46] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[47] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[48] return
to:@return
print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2
[49] (byte*) print_char_cursor#33 ← phi( print_byte/(byte*) print_char_cursor#46 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#48 )
[49] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' )
[50] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3
[51] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33
print_sword::@1: scope:[print_sword] from print_sword
[35] phi()
[36] call print_char
to:print_sword::@4
print_sword::@4: scope:[print_sword] from print_sword::@1
[37] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1
to:print_sword::@2
print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@1 print_sword::@3
[38] (byte*) print_char_cursor#35 ← phi( print_byte/(byte*) print_char_cursor#13 print_byte::@1/(byte*) print_char_cursor#13 print_sword::@1/(byte*) print_char_cursor#51 print_sword::@3/(byte*) print_char_cursor#51 )
[38] (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' )
[39] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4
[40] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#35
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[52] return
[41] return
to:@return
print_word: scope:[print_word] from print_sword::@2
[42] (byte) print_byte::b#0 ← > (word) print_word::w#0
[43] call print_byte
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[44] (byte) print_byte::b#1 ← < (word) print_word::w#0
[45] call print_byte
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[46] return
to:@return
print_byte: scope:[print_byte] from print_word print_word::@1
[47] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
[48] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
[49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[50] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[51] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
[52] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[53] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[54] return
to:@return
print_cls: scope:[print_cls] from main::@4
[53] phi()
[55] phi()
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
[54] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 )
[55] *((byte*) print_cls::sc#2) ← (byte) ' '
[56] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[57] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1
[56] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 )
[57] *((byte*) print_cls::sc#2) ← (byte) ' '
[58] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[59] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
[58] return
[60] return
to:@return
sin16s_gen: scope:[sin16s_gen] from main
[59] phi()
[60] call div32u16u
[61] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
[61] phi()
[62] call div32u16u
[63] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
to:sin16s_gen::@2
sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen
[62] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2
[64] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2
to:sin16s_gen::@1
sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@3
[63] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(word) sin16s_gen::i#1 )
[63] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@2/(const signed word[$78]) main::sintab1#0 sin16s_gen::@3/(signed word*) sin16s_gen::sintab#0 )
[63] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(dword) sin16s_gen::x#1 )
[64] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2
[65] call sin16s
[66] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
[65] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(word) sin16s_gen::i#1 )
[65] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@2/(const signed word[$78]) main::sintab1#0 sin16s_gen::@3/(signed word*) sin16s_gen::sintab#0 )
[65] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(dword) sin16s_gen::x#1 )
[66] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2
[67] call sin16s
[68] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
to:sin16s_gen::@3
sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@1
[67] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0
[68] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1
[69] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
[70] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0
[71] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2
[72] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1
[69] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0
[70] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1
[71] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
[72] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0
[73] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2
[74] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1
to:sin16s_gen::@return
sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@3
[73] return
[75] return
to:@return
sin16s: scope:[sin16s] from sin16s_gen::@1
[74] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
[76] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
to:sin16s::@4
sin16s::@4: scope:[sin16s] from sin16s
[75] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
[77] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
to:sin16s::@1
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
[76] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 )
[76] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
[77] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
[78] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 )
[78] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
[79] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
to:sin16s::@5
sin16s::@5: scope:[sin16s] from sin16s::@1
[78] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
[80] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
to:sin16s::@2
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
[79] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
[80] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3
[81] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
[82] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
[83] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
[84] call mulu16_sel
[85] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
[81] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
[82] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3
[83] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
[84] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
[85] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
[86] call mulu16_sel
[87] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
to:sin16s::@7
sin16s::@7: scope:[sin16s] from sin16s::@2
[86] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
[87] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
[88] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
[89] call mulu16_sel
[90] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
[88] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
[89] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
[90] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
[91] call mulu16_sel
[92] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
to:sin16s::@8
sin16s::@8: scope:[sin16s] from sin16s::@7
[91] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
[92] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
[93] call mulu16_sel
[94] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
[93] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
[94] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
[95] call mulu16_sel
[96] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
to:sin16s::@9
sin16s::@9: scope:[sin16s] from sin16s::@8
[95] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
[96] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
[97] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
[98] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
[99] call mulu16_sel
[100] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
[97] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
[98] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
[99] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
[100] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
[101] call mulu16_sel
[102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
to:sin16s::@10
sin16s::@10: scope:[sin16s] from sin16s::@9
[101] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
[102] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
[103] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
[104] call mulu16_sel
[105] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
[103] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
[104] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
[105] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
[106] call mulu16_sel
[107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
to:sin16s::@11
sin16s::@11: scope:[sin16s] from sin16s::@10
[106] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
[107] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4
[108] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
[109] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12
[108] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
[109] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4
[110] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
[111] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12
to:sin16s::@6
sin16s::@6: scope:[sin16s] from sin16s::@11
[110] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
[112] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
to:sin16s::@3
sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6
[111] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
[113] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
to:sin16s::@return
sin16s::@return: scope:[sin16s] from sin16s::@3
[112] return
[114] return
to:@return
sin16s::@12: scope:[sin16s] from sin16s::@11
[113] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
[115] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
to:sin16s::@3
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9
[114] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 )
[114] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 )
[114] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 )
[115] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5
[116] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5
[117] call mul16u
[118] (dword) mul16u::return#2 ← (dword) mul16u::res#2
[116] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 )
[116] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 )
[116] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 )
[117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5
[118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5
[119] call mul16u
[120] (dword) mul16u::return#2 ← (dword) mul16u::res#2
to:mulu16_sel::@1
mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel
[119] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2
[120] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
[121] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
[121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2
[122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
[123] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
to:mulu16_sel::@return
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1
[122] return
[124] return
to:@return
mul16u: scope:[mul16u] from mulu16_sel
[123] phi()
[125] phi()
to:mul16u::@1
mul16u::@1: scope:[mul16u] from mul16u mul16u::@3
[124] (dword) mul16u::mb#2 ← phi( mul16u/(word) mul16u::b#0 mul16u::@3/(dword) mul16u::mb#1 )
[124] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 )
[124] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@3/(word) mul16u::a#0 )
[125] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2
[126] (dword) mul16u::mb#2 ← phi( mul16u/(word) mul16u::b#0 mul16u::@3/(dword) mul16u::mb#1 )
[126] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 )
[126] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@3/(word) mul16u::a#0 )
[127] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2
to:mul16u::@return
mul16u::@return: scope:[mul16u] from mul16u::@1
[126] return
[128] return
to:@return
mul16u::@2: scope:[mul16u] from mul16u::@1
[127] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1
[128] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
[129] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1
[130] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
to:mul16u::@4
mul16u::@4: scope:[mul16u] from mul16u::@2
[129] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
[131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
to:mul16u::@3
mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4
[130] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
[131] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1
[132] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
[132] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
[133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1
[134] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
to:mul16u::@1
div32u16u: scope:[div32u16u] from sin16s_gen
[133] phi()
[134] call divr16u
[135] (word) divr16u::return#2 ← (word) divr16u::return#0
[135] phi()
[136] call divr16u
[137] (word) divr16u::return#2 ← (word) divr16u::return#0
to:div32u16u::@1
div32u16u::@1: scope:[div32u16u] from div32u16u
[136] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
[137] (word) divr16u::rem#4 ← (word) rem16u#1
[138] call divr16u
[139] (word) divr16u::return#3 ← (word) divr16u::return#0
[138] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
[139] (word) divr16u::rem#4 ← (word) rem16u#1
[140] call divr16u
[141] (word) divr16u::return#3 ← (word) divr16u::return#0
to:div32u16u::@2
div32u16u::@2: scope:[div32u16u] from div32u16u::@1
[140] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
[141] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
[142] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
[143] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
to:div32u16u::@return
div32u16u::@return: scope:[div32u16u] from div32u16u::@2
[142] return
[144] return
to:@return
divr16u: scope:[divr16u] from div32u16u div32u16u::@1
[143] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 )
[143] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 )
[145] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 )
[145] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 )
to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
[144] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
[144] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
[144] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
[144] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
[145] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1
[146] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
[147] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
[148] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
[146] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
[146] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
[146] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
[146] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
[147] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1
[148] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
[149] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
[150] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1
[149] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
[151] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
to:divr16u::@2
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
[150] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
[151] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1
[152] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
[153] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3
[152] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
[153] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1
[154] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
[155] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3
to:divr16u::@5
divr16u::@5: scope:[divr16u] from divr16u::@2
[154] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
[155] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0
[156] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
[157] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0
to:divr16u::@3
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
[156] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
[156] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
[157] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
[158] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
[158] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
[158] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
[159] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
[160] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
to:divr16u::@6
divr16u::@6: scope:[divr16u] from divr16u::@3
[159] (word) rem16u#1 ← (word) divr16u::rem#11
[161] (word) rem16u#1 ← (word) divr16u::rem#11
to:divr16u::@return
divr16u::@return: scope:[divr16u] from divr16u::@6
[160] return
[162] return
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -137,19 +137,17 @@
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#1 reg byte a 4.0
(byte) print_char::ch#2 reg byte a 4.0
(byte) print_char::ch#3 reg byte a 6.0
(byte) print_char::ch#3 reg byte a 4.0
(byte) print_char::ch#4 reg byte a 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:8 101.0
(byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:8 1.1176470588235294
(byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:8 0.7083333333333334
(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:8 40.875
(byte*) print_char_cursor#33 print_char_cursor zp ZP_WORD:8 5.0
(byte*) print_char_cursor#43 print_char_cursor zp ZP_WORD:8 2.0
(byte*) print_char_cursor#46 print_char_cursor zp ZP_WORD:8 2.0
(byte*) print_char_cursor#48 print_char_cursor zp ZP_WORD:8 6.5
(byte*) print_char_cursor#49 print_char_cursor zp ZP_WORD:8 8.25
(byte*) print_char_cursor#51 print_char_cursor zp ZP_WORD:8 24.0
(byte*) print_char_cursor#35 print_char_cursor zp ZP_WORD:8 6.0
(byte*) print_char_cursor#51 print_char_cursor zp ZP_WORD:8 5.200000000000001
(byte*) print_char_cursor#52 print_char_cursor zp ZP_WORD:8 8.25
(byte*) print_char_cursor#54 print_char_cursor zp ZP_WORD:8 24.0
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
@ -173,11 +171,12 @@
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:6 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:6 4.25
(signed word) print_sword::w#3 w zp ZP_WORD:6 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:6 2.8333333333333335
(signed word) print_sword::w#4 w zp ZP_WORD:6 4.0
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
@ -252,10 +251,10 @@
zp ZP_WORD:2 [ main::st1#2 main::st1#1 ]
zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 ]
zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 print_word::w#0 ]
zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 print_word::w#0 ]
reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
zp ZP_WORD:8 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ]
reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ]
zp ZP_WORD:8 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ]
zp ZP_WORD:10 [ print_cls::sc#2 print_cls::sc#1 ]
zp ZP_DWORD:12 [ sin16s_gen::x#2 sin16s_gen::x#1 ]
zp ZP_WORD:16 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ]

View File

@ -15,7 +15,7 @@
.const PI_HALF_u4f12 = $1922
.label print_line_cursor = $400
.label rem16u = $29
.label print_char_cursor = $b
.label print_char_cursor = $a
main: {
.label wavelength = $78
.label sw = 8
@ -112,7 +112,13 @@ print_str: {
print_sword: {
.label w = 8
lda w+1
bpl b1
bmi b1
lda #' '
jsr print_char
b2:
jsr print_word
rts
b1:
lda #'-'
jsr print_char
sec
@ -122,8 +128,17 @@ print_sword: {
lda #0
sbc w+1
sta w+1
b1:
jsr print_word
jmp b2
}
// Print a single char
// print_char(byte register(A) ch)
print_char: {
ldy #0
sta (print_char_cursor),y
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
rts
}
// Print a word as HEX
@ -139,9 +154,9 @@ print_word: {
rts
}
// Print a byte as HEX
// print_byte(byte zeropage($a) b)
// print_byte(byte zeropage($c) b)
print_byte: {
.label b = $a
.label b = $c
lda b
lsr
lsr
@ -157,17 +172,6 @@ print_byte: {
jsr print_char
rts
}
// Print a single char
// print_char(byte register(A) ch)
print_char: {
ldy #0
sta (print_char_cursor),y
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
rts
}
// Clear the screen. Also resets current line/char cursor.
print_cls: {
.label sc = $d

View File

@ -21,7 +21,7 @@ main::@5: scope:[main] from main::@4
to:main::@1
main::@1: scope:[main] from main::@5 main::@7
[10] (byte) main::i#2 ← phi( main::@5/(byte) 0 main::@7/(byte) main::i#1 )
[10] (byte*) print_char_cursor#49 ← phi( main::@5/(const byte*) print_line_cursor#0 main::@7/(byte*) print_char_cursor#2 )
[10] (byte*) print_char_cursor#52 ← phi( main::@5/(const byte*) print_line_cursor#0 main::@7/(byte*) print_char_cursor#2 )
[10] (signed word*) main::st2#2 ← phi( main::@5/(const signed word[$78]) main::sintab2#0 main::@7/(signed word*) main::st2#1 )
[10] (signed word*) main::st1#2 ← phi( main::@5/(const signed word[$78]) main::sintab1#0 main::@7/(signed word*) main::st1#1 )
[11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2)
@ -32,7 +32,7 @@ main::@3: scope:[main] from main::@1
[14] call print_str
to:main::@2
main::@2: scope:[main] from main::@1 main::@3
[15] (byte*) print_char_cursor#48 ← phi( main::@1/(byte*) print_char_cursor#49 main::@3/(byte*) print_char_cursor#2 )
[15] (byte*) print_char_cursor#51 ← phi( main::@1/(byte*) print_char_cursor#52 main::@3/(byte*) print_char_cursor#2 )
[16] (signed word) print_sword::w#1 ← (signed word) main::sw#0
[17] call print_sword
to:main::@6
@ -50,11 +50,11 @@ main::@return: scope:[main] from main::@7
[24] return
to:@return
print_str: scope:[print_str] from main::@3 main::@6
[25] (byte*) print_char_cursor#51 ← phi( main::@3/(byte*) print_char_cursor#49 main::@6/(byte*) print_char_cursor#12 )
[25] (byte*) print_char_cursor#54 ← phi( main::@3/(byte*) print_char_cursor#52 main::@6/(byte*) print_char_cursor#13 )
[25] (byte*) print_str::str#5 ← phi( main::@3/(const string) main::str1 main::@6/(const string) main::str )
to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2
[26] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#51 print_str::@2/(byte*) print_char_cursor#1 )
[26] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#54 print_str::@2/(byte*) print_char_cursor#1 )
[26] (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 )
[27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2
to:print_str::@return
@ -67,357 +67,359 @@ print_str::@2: scope:[print_str] from print_str::@1
[31] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3
to:print_str::@1
print_sword: scope:[print_sword] from main::@2
[32] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword
[32] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword
[33] phi()
[34] call print_char
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword::@2
[35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1
to:print_sword::@1
print_sword::@1: scope:[print_sword] from print_sword print_sword::@3
[36] (byte*) print_char_cursor#43 ← phi( print_sword/(byte*) print_char_cursor#48 print_sword::@3/(byte*) print_char_cursor#12 )
[36] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 )
[37] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3
[38] call print_word
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4
[35] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 )
[36] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4
[37] call print_word
to:print_sword::@return
print_sword::@return: scope:[print_sword] from print_sword::@1
[39] return
print_sword::@return: scope:[print_sword] from print_sword::@2
[38] return
to:@return
print_word: scope:[print_word] from print_sword::@1
[40] (byte) print_byte::b#0 ← > (word) print_word::w#0
[41] call print_byte
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[42] (byte) print_byte::b#1 ← < (word) print_word::w#0
[43] call print_byte
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[44] return
to:@return
print_byte: scope:[print_byte] from print_word print_word::@1
[45] (byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#43 print_word::@1/(byte*) print_char_cursor#12 )
[45] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
[46] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
[47] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[48] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[49] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
[50] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[51] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[52] return
to:@return
print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2
[53] (byte*) print_char_cursor#33 ← phi( print_byte/(byte*) print_char_cursor#46 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#48 )
[53] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' )
[54] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3
[55] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33
print_sword::@1: scope:[print_sword] from print_sword
[39] phi()
[40] call print_char
to:print_sword::@4
print_sword::@4: scope:[print_sword] from print_sword::@1
[41] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1
to:print_sword::@2
print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@1 print_sword::@3
[42] (byte*) print_char_cursor#35 ← phi( print_byte/(byte*) print_char_cursor#13 print_byte::@1/(byte*) print_char_cursor#13 print_sword::@1/(byte*) print_char_cursor#51 print_sword::@3/(byte*) print_char_cursor#51 )
[42] (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' )
[43] *((byte*) print_char_cursor#35) ← (byte) print_char::ch#4
[44] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#35
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[56] return
[45] return
to:@return
print_word: scope:[print_word] from print_sword::@2
[46] (byte) print_byte::b#0 ← > (word) print_word::w#0
[47] call print_byte
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[48] (byte) print_byte::b#1 ← < (word) print_word::w#0
[49] call print_byte
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[50] return
to:@return
print_byte: scope:[print_byte] from print_word print_word::@1
[51] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
[52] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
[53] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[54] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[55] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
[56] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[57] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[58] return
to:@return
print_cls: scope:[print_cls] from main::@5
[57] phi()
[59] phi()
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
[58] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 )
[59] *((byte*) print_cls::sc#2) ← (byte) ' '
[60] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[61] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1
[60] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 )
[61] *((byte*) print_cls::sc#2) ← (byte) ' '
[62] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[63] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word) $3e8) goto print_cls::@1
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
[62] return
[64] return
to:@return
sin16s_genb: scope:[sin16s_genb] from main::@4
[63] phi()
[64] call div32u16u
[65] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0
[65] phi()
[66] call div32u16u
[67] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0
to:sin16s_genb::@2
sin16s_genb::@2: scope:[sin16s_genb] from sin16s_genb
[66] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3
[68] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3
to:sin16s_genb::@1
sin16s_genb::@1: scope:[sin16s_genb] from sin16s_genb::@2 sin16s_genb::@3
[67] (word) sin16s_genb::i#2 ← phi( sin16s_genb::@2/(byte) 0 sin16s_genb::@3/(word) sin16s_genb::i#1 )
[67] (signed word*) sin16s_genb::sintab#2 ← phi( sin16s_genb::@2/(const signed word[$78]) main::sintab2#0 sin16s_genb::@3/(signed word*) sin16s_genb::sintab#0 )
[67] (dword) sin16s_genb::x#2 ← phi( sin16s_genb::@2/(byte) 0 sin16s_genb::@3/(dword) sin16s_genb::x#1 )
[68] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2
[69] call sin16sb
[70] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1
[69] (word) sin16s_genb::i#2 ← phi( sin16s_genb::@2/(byte) 0 sin16s_genb::@3/(word) sin16s_genb::i#1 )
[69] (signed word*) sin16s_genb::sintab#2 ← phi( sin16s_genb::@2/(const signed word[$78]) main::sintab2#0 sin16s_genb::@3/(signed word*) sin16s_genb::sintab#0 )
[69] (dword) sin16s_genb::x#2 ← phi( sin16s_genb::@2/(byte) 0 sin16s_genb::@3/(dword) sin16s_genb::x#1 )
[70] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2
[71] call sin16sb
[72] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1
to:sin16s_genb::@3
sin16s_genb::@3: scope:[sin16s_genb] from sin16s_genb::@1
[71] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0
[72] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2
[73] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
[74] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0
[75] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2
[76] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1
[73] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0
[74] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2
[75] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
[76] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0
[77] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2
[78] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1
to:sin16s_genb::@return
sin16s_genb::@return: scope:[sin16s_genb] from sin16s_genb::@3
[77] return
[79] return
to:@return
sin16sb: scope:[sin16sb] from sin16s_genb::@1
[78] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1
[80] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1
to:sin16sb::@4
sin16sb::@4: scope:[sin16sb] from sin16sb
[79] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0
[81] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0
to:sin16sb::@1
sin16sb::@1: scope:[sin16sb] from sin16sb sin16sb::@4
[80] (byte) sin16sb::isUpper#2 ← phi( sin16sb/(byte) 0 sin16sb::@4/(byte) 1 )
[80] (word) sin16sb::x#4 ← phi( sin16sb/(word) sin16sb::x#0 sin16sb::@4/(word) sin16sb::x#1 )
[81] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2
[82] (byte) sin16sb::isUpper#2 ← phi( sin16sb/(byte) 0 sin16sb::@4/(byte) 1 )
[82] (word) sin16sb::x#4 ← phi( sin16sb/(word) sin16sb::x#0 sin16sb::@4/(word) sin16sb::x#1 )
[83] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2
to:sin16sb::@5
sin16sb::@5: scope:[sin16sb] from sin16sb::@1
[82] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4
[84] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4
to:sin16sb::@2
sin16sb::@2: scope:[sin16sb] from sin16sb::@1 sin16sb::@5
[83] (word) sin16sb::x#6 ← phi( sin16sb::@1/(word) sin16sb::x#4 sin16sb::@5/(word) sin16sb::x#2 )
[84] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3
[85] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0
[86] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0
[87] call mulu16_sel
[88] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17
[85] (word) sin16sb::x#6 ← phi( sin16sb::@1/(word) sin16sb::x#4 sin16sb::@5/(word) sin16sb::x#2 )
[86] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte) 3
[87] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0
[88] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0
[89] call mulu16_sel
[90] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17
to:sin16sb::@7
sin16sb::@7: scope:[sin16sb] from sin16sb::@2
[89] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18
[90] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0
[91] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0
[92] call mulu16_sel
[93] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17
[91] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18
[92] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0
[93] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0
[94] call mulu16_sel
[95] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17
to:sin16sb::@8
sin16sb::@8: scope:[sin16sb] from sin16sb::@7
[94] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19
[95] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0
[96] call mulu16_sel
[97] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17
[96] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19
[97] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0
[98] call mulu16_sel
[99] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17
to:sin16sb::@9
sin16sb::@9: scope:[sin16sb] from sin16sb::@8
[98] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20
[99] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0
[100] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0
[101] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0
[102] call mulu16_sel
[103] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17
[100] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20
[101] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0
[102] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0
[103] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0
[104] call mulu16_sel
[105] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17
to:sin16sb::@10
sin16sb::@10: scope:[sin16sb] from sin16sb::@9
[104] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10
[105] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0
[106] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0
[107] call mulu16_sel
[108] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17
[106] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10
[107] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0
[108] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0
[109] call mulu16_sel
[110] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17
to:sin16sb::@11
sin16sb::@11: scope:[sin16sb] from sin16sb::@10
[109] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11
[110] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4
[111] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0
[112] if((byte) sin16sb::isUpper#2==(byte) 0) goto sin16sb::@12
[111] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11
[112] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte) 4
[113] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0
[114] if((byte) sin16sb::isUpper#2==(byte) 0) goto sin16sb::@12
to:sin16sb::@6
sin16sb::@6: scope:[sin16sb] from sin16sb::@11
[113] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1
[115] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1
to:sin16sb::@3
sin16sb::@3: scope:[sin16sb] from sin16sb::@12 sin16sb::@6
[114] (signed word) sin16sb::return#1 ← phi( sin16sb::@12/(signed word~) sin16sb::return#5 sin16sb::@6/(signed word) sin16sb::sinx#1 )
[116] (signed word) sin16sb::return#1 ← phi( sin16sb::@12/(signed word~) sin16sb::return#5 sin16sb::@6/(signed word) sin16sb::sinx#1 )
to:sin16sb::@return
sin16sb::@return: scope:[sin16sb] from sin16sb::@3
[115] return
[117] return
to:@return
sin16sb::@12: scope:[sin16sb] from sin16sb::@11
[116] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1
[118] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1
to:sin16sb::@3
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9 sin16sb::@10 sin16sb::@2 sin16sb::@7 sin16sb::@8 sin16sb::@9
[117] (byte) mulu16_sel::select#10 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 sin16sb::@9/(byte) 0 sin16sb::@10/(byte) 0 sin16sb::@2/(byte) 0 sin16sb::@7/(byte) 1 sin16sb::@8/(byte) 1 )
[117] (word) mulu16_sel::v2#10 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 sin16sb::@9/(word) mulu16_sel::v2#8 sin16sb::@10/(word) mulu16_sel::v2#9 sin16sb::@2/(word) mulu16_sel::v2#5 sin16sb::@7/(word) mulu16_sel::v2#6 sin16sb::@8/(word)(number) $10000/(number) 6 )
[117] (word) mulu16_sel::v1#10 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 sin16sb::@9/(word) mulu16_sel::v1#8 sin16sb::@10/(word) mulu16_sel::v1#9 sin16sb::@2/(word) mulu16_sel::v1#5 sin16sb::@7/(word) mulu16_sel::v1#6 sin16sb::@8/(word) mulu16_sel::v1#7 )
[118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10
[119] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10
[120] call mul16u
[121] (dword) mul16u::return#2 ← (dword) mul16u::res#2
[119] (byte) mulu16_sel::select#10 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 sin16sb::@9/(byte) 0 sin16sb::@10/(byte) 0 sin16sb::@2/(byte) 0 sin16sb::@7/(byte) 1 sin16sb::@8/(byte) 1 )
[119] (word) mulu16_sel::v2#10 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 sin16sb::@9/(word) mulu16_sel::v2#8 sin16sb::@10/(word) mulu16_sel::v2#9 sin16sb::@2/(word) mulu16_sel::v2#5 sin16sb::@7/(word) mulu16_sel::v2#6 sin16sb::@8/(word)(number) $10000/(number) 6 )
[119] (word) mulu16_sel::v1#10 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 sin16sb::@9/(word) mulu16_sel::v1#8 sin16sb::@10/(word) mulu16_sel::v1#9 sin16sb::@2/(word) mulu16_sel::v1#5 sin16sb::@7/(word) mulu16_sel::v1#6 sin16sb::@8/(word) mulu16_sel::v1#7 )
[120] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10
[121] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10
[122] call mul16u
[123] (dword) mul16u::return#2 ← (dword) mul16u::res#2
to:mulu16_sel::@1
mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel
[122] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2
[123] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10
[124] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1
[124] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2
[125] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10
[126] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1
to:mulu16_sel::@return
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1
[125] return
[127] return
to:@return
mul16u: scope:[mul16u] from mulu16_sel
[126] phi()
[128] phi()
to:mul16u::@1
mul16u::@1: scope:[mul16u] from mul16u mul16u::@3
[127] (dword) mul16u::mb#2 ← phi( mul16u/(word) mul16u::b#0 mul16u::@3/(dword) mul16u::mb#1 )
[127] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 )
[127] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@3/(word) mul16u::a#0 )
[128] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2
[129] (dword) mul16u::mb#2 ← phi( mul16u/(word) mul16u::b#0 mul16u::@3/(dword) mul16u::mb#1 )
[129] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 )
[129] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@3/(word) mul16u::a#0 )
[130] if((word) mul16u::a#2!=(byte) 0) goto mul16u::@2
to:mul16u::@return
mul16u::@return: scope:[mul16u] from mul16u::@1
[129] return
[131] return
to:@return
mul16u::@2: scope:[mul16u] from mul16u::@1
[130] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1
[131] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
[132] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte) 1
[133] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
to:mul16u::@4
mul16u::@4: scope:[mul16u] from mul16u::@2
[132] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
[134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
to:mul16u::@3
mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4
[133] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
[134] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1
[135] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
[135] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
[136] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte) 1
[137] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
to:mul16u::@1
div32u16u: scope:[div32u16u] from sin16s_gen sin16s_genb
[136] phi()
[137] call divr16u
[138] (word) divr16u::return#2 ← (word) divr16u::return#0
[138] phi()
[139] call divr16u
[140] (word) divr16u::return#2 ← (word) divr16u::return#0
to:div32u16u::@1
div32u16u::@1: scope:[div32u16u] from div32u16u
[139] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
[140] (word) divr16u::rem#4 ← (word) rem16u#1
[141] call divr16u
[142] (word) divr16u::return#3 ← (word) divr16u::return#0
[141] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
[142] (word) divr16u::rem#4 ← (word) rem16u#1
[143] call divr16u
[144] (word) divr16u::return#3 ← (word) divr16u::return#0
to:div32u16u::@2
div32u16u::@2: scope:[div32u16u] from div32u16u::@1
[143] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
[144] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
[145] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
[146] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
to:div32u16u::@return
div32u16u::@return: scope:[div32u16u] from div32u16u::@2
[145] return
[147] return
to:@return
divr16u: scope:[divr16u] from div32u16u div32u16u::@1
[146] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 )
[146] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 )
[148] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 )
[148] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 )
to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
[147] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
[147] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
[147] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
[147] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
[148] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1
[149] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
[150] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
[151] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
[149] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
[149] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
[149] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
[149] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
[150] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1
[151] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
[152] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
[153] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1
[152] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
[154] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
to:divr16u::@2
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
[153] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
[154] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1
[155] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
[156] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3
[155] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
[156] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1
[157] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
[158] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3
to:divr16u::@5
divr16u::@5: scope:[divr16u] from divr16u::@2
[157] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
[158] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0
[159] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
[160] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0
to:divr16u::@3
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
[159] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
[159] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
[160] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
[161] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
[161] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
[161] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
[162] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
[163] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
to:divr16u::@6
divr16u::@6: scope:[divr16u] from divr16u::@3
[162] (word) rem16u#1 ← (word) divr16u::rem#11
[164] (word) rem16u#1 ← (word) divr16u::rem#11
to:divr16u::@return
divr16u::@return: scope:[divr16u] from divr16u::@6
[163] return
[165] return
to:@return
sin16s_gen: scope:[sin16s_gen] from main
[164] phi()
[165] call div32u16u
[166] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
[166] phi()
[167] call div32u16u
[168] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
to:sin16s_gen::@2
sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen
[167] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2
[169] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2
to:sin16s_gen::@1
sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@3
[168] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(word) sin16s_gen::i#1 )
[168] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@2/(const signed word[$78]) main::sintab1#0 sin16s_gen::@3/(signed word*) sin16s_gen::sintab#0 )
[168] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(dword) sin16s_gen::x#1 )
[169] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2
[170] call sin16s
[171] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
[170] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(word) sin16s_gen::i#1 )
[170] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@2/(const signed word[$78]) main::sintab1#0 sin16s_gen::@3/(signed word*) sin16s_gen::sintab#0 )
[170] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@2/(byte) 0 sin16s_gen::@3/(dword) sin16s_gen::x#1 )
[171] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2
[172] call sin16s
[173] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
to:sin16s_gen::@3
sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@1
[172] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0
[173] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1
[174] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
[175] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0
[176] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2
[177] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1
[174] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0
[175] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1
[176] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
[177] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0
[178] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2
[179] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1
to:sin16s_gen::@return
sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@3
[178] return
[180] return
to:@return
sin16s: scope:[sin16s] from sin16s_gen::@1
[179] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
[181] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
to:sin16s::@4
sin16s::@4: scope:[sin16s] from sin16s
[180] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
[182] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
to:sin16s::@1
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
[181] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 )
[181] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
[182] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
[183] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 )
[183] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
[184] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
to:sin16s::@5
sin16s::@5: scope:[sin16s] from sin16s::@1
[183] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
[185] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
to:sin16s::@2
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
[184] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
[185] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3
[186] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
[187] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
[188] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
[189] call mulu16_sel
[190] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17
[186] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
[187] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3
[188] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
[189] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
[190] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
[191] call mulu16_sel
[192] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17
to:sin16s::@7
sin16s::@7: scope:[sin16s] from sin16s::@2
[191] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
[192] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
[193] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
[194] call mulu16_sel
[195] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17
[193] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
[194] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
[195] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
[196] call mulu16_sel
[197] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17
to:sin16s::@8
sin16s::@8: scope:[sin16s] from sin16s::@7
[196] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
[197] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
[198] call mulu16_sel
[199] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17
[198] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
[199] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
[200] call mulu16_sel
[201] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17
to:sin16s::@9
sin16s::@9: scope:[sin16s] from sin16s::@8
[200] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14
[201] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
[202] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
[203] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
[204] call mulu16_sel
[205] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17
[202] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14
[203] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
[204] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
[205] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
[206] call mulu16_sel
[207] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17
to:sin16s::@10
sin16s::@10: scope:[sin16s] from sin16s::@9
[206] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15
[207] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
[208] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
[209] call mulu16_sel
[210] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17
[208] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15
[209] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
[210] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
[211] call mulu16_sel
[212] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17
to:sin16s::@11
sin16s::@11: scope:[sin16s] from sin16s::@10
[211] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16
[212] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4
[213] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
[214] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12
[213] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16
[214] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4
[215] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
[216] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12
to:sin16s::@6
sin16s::@6: scope:[sin16s] from sin16s::@11
[215] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
[217] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
to:sin16s::@3
sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6
[216] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
[218] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
to:sin16s::@return
sin16s::@return: scope:[sin16s] from sin16s::@3
[217] return
[219] return
to:@return
sin16s::@12: scope:[sin16s] from sin16s::@11
[218] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
[220] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
to:sin16s::@3

File diff suppressed because it is too large Load Diff

View File

@ -159,25 +159,23 @@
(label) print_byte::@1
(label) print_byte::@return
(byte) print_byte::b
(byte) print_byte::b#0 b zp ZP_BYTE:10 4.0
(byte) print_byte::b#1 b zp ZP_BYTE:10 4.0
(byte) print_byte::b#2 b zp ZP_BYTE:10 2.0
(byte) print_byte::b#0 b zp ZP_BYTE:12 4.0
(byte) print_byte::b#1 b zp ZP_BYTE:12 4.0
(byte) print_byte::b#2 b zp ZP_BYTE:12 2.0
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#1 reg byte a 4.0
(byte) print_char::ch#2 reg byte a 4.0
(byte) print_char::ch#3 reg byte a 6.0
(byte) print_char::ch#3 reg byte a 4.0
(byte) print_char::ch#4 reg byte a 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:11 101.0
(byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:11 1.1176470588235294
(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:11 32.7
(byte*) print_char_cursor#33 print_char_cursor zp ZP_WORD:11 5.0
(byte*) print_char_cursor#43 print_char_cursor zp ZP_WORD:11 2.0
(byte*) print_char_cursor#46 print_char_cursor zp ZP_WORD:11 2.0
(byte*) print_char_cursor#48 print_char_cursor zp ZP_WORD:11 6.5
(byte*) print_char_cursor#49 print_char_cursor zp ZP_WORD:11 8.25
(byte*) print_char_cursor#51 print_char_cursor zp ZP_WORD:11 24.0
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:10 101.0
(byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:10 0.7083333333333334
(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:10 32.7
(byte*) print_char_cursor#35 print_char_cursor zp ZP_WORD:10 6.0
(byte*) print_char_cursor#51 print_char_cursor zp ZP_WORD:10 5.200000000000001
(byte*) print_char_cursor#52 print_char_cursor zp ZP_WORD:10 8.25
(byte*) print_char_cursor#54 print_char_cursor zp ZP_WORD:10 24.0
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
@ -201,11 +199,12 @@
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:8 4.25
(signed word) print_sword::w#3 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:8 2.8333333333333335
(signed word) print_sword::w#4 w zp ZP_WORD:8 4.0
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
@ -345,10 +344,10 @@ zp ZP_WORD:2 [ main::st1#2 main::st1#1 ]
zp ZP_WORD:4 [ main::st2#2 main::st2#1 ]
reg byte x [ main::i#2 main::i#1 ]
zp ZP_WORD:6 [ print_str::str#3 print_str::str#5 print_str::str#0 ]
zp ZP_WORD:8 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 print_word::w#0 ]
zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ]
zp ZP_WORD:11 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 ]
zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 main::sw#0 print_word::w#0 ]
reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
zp ZP_WORD:10 [ print_char_cursor#35 print_char_cursor#54 print_char_cursor#51 print_char_cursor#52 print_char_cursor#2 print_char_cursor#13 print_char_cursor#1 ]
zp ZP_BYTE:12 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
zp ZP_WORD:13 [ print_cls::sc#2 print_cls::sc#1 ]
zp ZP_DWORD:15 [ sin16s_genb::x#2 sin16s_genb::x#1 ]
zp ZP_WORD:19 [ sin16s_genb::sintab#2 sin16s_genb::sintab#0 ]

View File

@ -7,7 +7,7 @@
.const PI_u4f12 = $3244
// PI/2 in u[4.12] format
.const PI_HALF_u4f12 = $1922
.label print_char_cursor = $f
.label print_char_cursor = $b
.label print_line_cursor = 8
main: {
.label tabsize = $14
@ -241,9 +241,9 @@ print_char: {
rts
}
// Print a zero-terminated string
// print_str(byte* zeropage($b) str)
// print_str(byte* zeropage($d) str)
print_str: {
.label str = $b
.label str = $d
b1:
ldy #0
lda (str),y
@ -265,11 +265,17 @@ print_str: {
jmp b1
}
// Print a signed word as HEX
// print_sword(signed word zeropage($d) w)
// print_sword(signed word zeropage($f) w)
print_sword: {
.label w = $d
.label w = $f
lda w+1
bpl b1
bmi b1
lda #' '
jsr print_char
b2:
jsr print_word
rts
b1:
lda #'-'
jsr print_char
sec
@ -279,14 +285,12 @@ print_sword: {
lda #0
sbc w+1
sta w+1
b1:
jsr print_word
rts
jmp b2
}
// Print a word as HEX
// print_word(word zeropage($d) w)
// print_word(word zeropage($f) w)
print_word: {
.label w = $d
.label w = $f
lda w+1
sta print_byte.b
jsr print_byte

View File

@ -86,7 +86,7 @@ sin8u_table::@14: scope:[sin8u_table] from sin8u_table::@13
[43] (byte) sin8u_table::sinx_tr#0 ← (const byte) sin8u_table::mid#0 + (byte~) sin8u_table::$21
[44] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0
[45] (byte*) sin8u_table::sintab#1 ← ++ (byte*) sin8u_table::sintab#2
[46] (byte*~) print_char_cursor#113 ← (byte*) print_line_cursor#1
[46] (byte*~) print_char_cursor#116 ← (byte*) print_line_cursor#1
[47] call print_str
to:sin8u_table::@15
sin8u_table::@15: scope:[sin8u_table] from sin8u_table::@14
@ -135,41 +135,41 @@ print_ln: scope:[print_ln] from sin8u_table::@12 sin8u_table::@22
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
[69] (byte*) print_line_cursor#12 ← phi( print_ln/(byte*) print_line_cursor#23 print_ln::@1/(byte*) print_line_cursor#1 )
[70] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte) $28
[71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1
[71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1
to:print_ln::@return
print_ln::@return: scope:[print_ln] from print_ln::@1
[72] return
to:@return
print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 sin8u_table::@11 sin8u_table::@21 sin8u_table::@5 sin8u_table::@7 sin8u_table::@9
[73] (byte*) print_char_cursor#100 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#99 print_word::@1/(byte*) print_char_cursor#18 sin8u_table::@9/(byte*) print_char_cursor#2 sin8u_table::@11/(byte*) print_char_cursor#2 sin8u_table::@21/(byte*) print_char_cursor#2 sin8u_table::@5/(byte*) print_char_cursor#2 sin8u_table::@7/(byte*) print_char_cursor#2 )
[73] (byte*) print_char_cursor#103 ← phi( print_sbyte::@2/(byte*) print_char_cursor#19 print_word/(byte*) print_char_cursor#102 print_word::@1/(byte*) print_char_cursor#19 sin8u_table::@9/(byte*) print_char_cursor#2 sin8u_table::@11/(byte*) print_char_cursor#2 sin8u_table::@21/(byte*) print_char_cursor#2 sin8u_table::@5/(byte*) print_char_cursor#2 sin8u_table::@7/(byte*) print_char_cursor#2 )
[73] (byte) print_byte::b#8 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 sin8u_table::@9/(const byte) sin8u_table::amplitude#0 sin8u_table::@11/(const byte) sin8u_table::mid#0 sin8u_table::@21/(byte) print_byte::b#7 sin8u_table::@5/(const byte) sin8u_table::min#0 sin8u_table::@7/(const byte) sin8u_table::max#0 )
[74] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4
[75] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[75] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[76] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f
[78] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[78] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[79] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[80] return
to:@return
print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2
[81] (byte*) print_char_cursor#64 ← phi( print_byte/(byte*) print_char_cursor#100 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#2 print_sbyte::@3/(byte*) print_char_cursor#2 print_sword::@2/(byte*) print_char_cursor#2 )
[81] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' )
[82] *((byte*) print_char_cursor#64) ← (byte) print_char::ch#5
[83] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#64
print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@1 print_sword::@3
[81] (byte*) print_char_cursor#66 ← phi( print_byte/(byte*) print_char_cursor#103 print_byte::@1/(byte*) print_char_cursor#19 print_sbyte::@1/(byte*) print_char_cursor#2 print_sbyte::@3/(byte*) print_char_cursor#2 print_sword::@1/(byte*) print_char_cursor#2 print_sword::@3/(byte*) print_char_cursor#2 )
[81] (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' )
[82] *((byte*) print_char_cursor#66) ← (byte) print_char::ch#6
[83] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#66
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[84] return
to:@return
print_str: scope:[print_str] from sin8u_table::@10 sin8u_table::@14 sin8u_table::@16 sin8u_table::@18 sin8u_table::@2 sin8u_table::@20 sin8u_table::@4 sin8u_table::@6 sin8u_table::@8
[85] (byte*) print_char_cursor#105 ← phi( sin8u_table::@10/(byte*) print_char_cursor#18 sin8u_table::@14/(byte*~) print_char_cursor#113 sin8u_table::@16/(byte*) print_char_cursor#18 sin8u_table::@18/(byte*) print_char_cursor#18 sin8u_table::@20/(byte*) print_char_cursor#18 sin8u_table::@2/(byte*) 1024 sin8u_table::@4/(byte*) print_char_cursor#18 sin8u_table::@6/(byte*) print_char_cursor#18 sin8u_table::@8/(byte*) print_char_cursor#18 )
[85] (byte*) print_char_cursor#108 ← phi( sin8u_table::@10/(byte*) print_char_cursor#19 sin8u_table::@14/(byte*~) print_char_cursor#116 sin8u_table::@16/(byte*) print_char_cursor#19 sin8u_table::@18/(byte*) print_char_cursor#19 sin8u_table::@20/(byte*) print_char_cursor#19 sin8u_table::@2/(byte*) 1024 sin8u_table::@4/(byte*) print_char_cursor#19 sin8u_table::@6/(byte*) print_char_cursor#19 sin8u_table::@8/(byte*) print_char_cursor#19 )
[85] (byte*) print_str::str#12 ← phi( sin8u_table::@10/(const string) sin8u_table::str4 sin8u_table::@14/(const string) sin8u_table::str5 sin8u_table::@16/(const string) sin8u_table::str6 sin8u_table::@18/(const string) sin8u_table::str7 sin8u_table::@20/(const string) sin8u_table::str8 sin8u_table::@2/(const string) sin8u_table::str sin8u_table::@4/(const string) sin8u_table::str1 sin8u_table::@6/(const string) sin8u_table::str2 sin8u_table::@8/(const string) sin8u_table::str3 )
to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2
[86] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#105 print_str::@2/(byte*) print_char_cursor#1 )
[86] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#108 print_str::@2/(byte*) print_char_cursor#1 )
[86] (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#12 print_str::@2/(byte*) print_str::str#0 )
[87] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2
to:print_str::@return
@ -182,252 +182,255 @@ print_str::@2: scope:[print_str] from print_str::@1
[91] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10
to:print_str::@1
print_sword: scope:[print_sword] from sin8u_table::@19
[92] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword
[92] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword
[93] phi()
[94] call print_char
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword::@2
[95] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1
to:print_sword::@1
print_sword::@1: scope:[print_sword] from print_sword print_sword::@3
[96] (byte*) print_char_cursor#94 ← phi( print_sword/(byte*) print_char_cursor#2 print_sword::@3/(byte*) print_char_cursor#18 )
[96] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 )
[97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3
[98] call print_word
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4
[95] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 )
[96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4
[97] call print_word
to:print_sword::@return
print_sword::@return: scope:[print_sword] from print_sword::@1
[99] return
print_sword::@return: scope:[print_sword] from print_sword::@2
[98] return
to:@return
print_word: scope:[print_word] from print_sword::@1 sin8u_table::@15 sin8u_table::@3
[100] (byte*) print_char_cursor#99 ← phi( print_sword::@1/(byte*) print_char_cursor#94 sin8u_table::@15/(byte*) print_char_cursor#2 sin8u_table::@3/(byte*) print_char_cursor#2 )
[100] (word) print_word::w#3 ← phi( print_sword::@1/(word) print_word::w#0 sin8u_table::@15/(word) print_word::w#2 sin8u_table::@3/(word) print_word::w#1 )
[101] (byte) print_byte::b#1 ← > (word) print_word::w#3
[102] call print_byte
print_sword::@1: scope:[print_sword] from print_sword
[99] phi()
[100] call print_char
to:print_sword::@4
print_sword::@4: scope:[print_sword] from print_sword::@1
[101] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1
to:print_sword::@2
print_word: scope:[print_word] from print_sword::@2 sin8u_table::@15 sin8u_table::@3
[102] (byte*) print_char_cursor#102 ← phi( print_sword::@2/(byte*) print_char_cursor#19 sin8u_table::@15/(byte*) print_char_cursor#2 sin8u_table::@3/(byte*) print_char_cursor#2 )
[102] (word) print_word::w#3 ← phi( print_sword::@2/(word) print_word::w#0 sin8u_table::@15/(word) print_word::w#2 sin8u_table::@3/(word) print_word::w#1 )
[103] (byte) print_byte::b#1 ← > (word) print_word::w#3
[104] call print_byte
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[103] (byte) print_byte::b#2 ← < (word) print_word::w#3
[104] call print_byte
[105] (byte) print_byte::b#2 ← < (word) print_word::w#3
[106] call print_byte
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[105] return
[107] return
to:@return
print_sbyte: scope:[print_sbyte] from sin8u_table::@17
[106] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1
[108] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1
to:print_sbyte::@3
print_sbyte::@3: scope:[print_sbyte] from print_sbyte
[107] phi()
[108] call print_char
[109] phi()
[110] call print_char
to:print_sbyte::@2
print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@3 print_sbyte::@4
[109] (signed byte) print_sbyte::b#4 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#1 )
[110] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#4
[111] call print_byte
[111] (signed byte) print_sbyte::b#4 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#1 )
[112] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#4
[113] call print_byte
to:print_sbyte::@return
print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2
[112] return
[114] return
to:@return
print_sbyte::@1: scope:[print_sbyte] from print_sbyte
[113] phi()
[114] call print_char
[115] phi()
[116] call print_char
to:print_sbyte::@4
print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@1
[115] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1
[117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1
to:print_sbyte::@2
mul8su: scope:[mul8su] from sin8u_table::@13
[116] (byte) mul8u::a#1 ← (byte)(signed byte) mul8su::a#0
[117] call mul8u
[118] (word) mul8u::return#2 ← (word) mul8u::res#2
[118] (byte) mul8u::a#1 ← (byte)(signed byte) mul8su::a#0
[119] call mul8u
[120] (word) mul8u::return#2 ← (word) mul8u::res#2
to:mul8su::@3
mul8su::@3: scope:[mul8su] from mul8su
[119] (word) mul8su::m#0 ← (word) mul8u::return#2
[120] if((signed byte) mul8su::a#0>=(signed byte) 0) goto mul8su::@1
[121] (word) mul8su::m#0 ← (word) mul8u::return#2
[122] if((signed byte) mul8su::a#0>=(signed byte) 0) goto mul8su::@1
to:mul8su::@2
mul8su::@2: scope:[mul8su] from mul8su::@3
[121] (byte~) mul8su::$7 ← > (word) mul8su::m#0
[122] (byte~) mul8su::$10 ← (byte~) mul8su::$7 - (const byte) mul8su::b#0
[123] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10
[123] (byte~) mul8su::$7 ← > (word) mul8su::m#0
[124] (byte~) mul8su::$10 ← (byte~) mul8su::$7 - (const byte) mul8su::b#0
[125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10
to:mul8su::@1
mul8su::@1: scope:[mul8su] from mul8su::@2 mul8su::@3
[124] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@3/(word) mul8su::m#0 )
[126] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@3/(word) mul8su::m#0 )
to:mul8su::@return
mul8su::@return: scope:[mul8su] from mul8su::@1
[125] return
[127] return
to:@return
mul8u: scope:[mul8u] from mul8su mulu8_sel
[126] (byte) mul8u::a#6 ← phi( mul8su/(byte) mul8u::a#1 mulu8_sel/(byte) mul8u::a#2 )
[126] (word) mul8u::mb#0 ← phi( mul8su/(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 )
[128] (byte) mul8u::a#6 ← phi( mul8su/(byte) mul8u::a#1 mulu8_sel/(byte) mul8u::a#2 )
[128] (word) mul8u::mb#0 ← phi( mul8su/(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 )
to:mul8u::@1
mul8u::@1: scope:[mul8u] from mul8u mul8u::@3
[127] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 )
[127] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 )
[127] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 )
[128] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2
[129] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 )
[129] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 )
[129] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 )
[130] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2
to:mul8u::@return
mul8u::@return: scope:[mul8u] from mul8u::@1
[129] return
[131] return
to:@return
mul8u::@2: scope:[mul8u] from mul8u::@1
[130] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1
[131] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3
[132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1
[133] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3
to:mul8u::@4
mul8u::@4: scope:[mul8u] from mul8u::@2
[132] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
[134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
to:mul8u::@3
mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4
[133] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 )
[134] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1
[135] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1
[135] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 )
[136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1
[137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1
to:mul8u::@1
sin8s: scope:[sin8s] from sin8u_table::@1
[136] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1
[138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1
to:sin8s::@5
sin8s::@5: scope:[sin8s] from sin8s
[137] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0
[139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0
to:sin8s::@1
sin8s::@1: scope:[sin8s] from sin8s sin8s::@5
[138] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte) 0 sin8s::@5/(byte) 1 )
[138] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 )
[139] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2
[140] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte) 0 sin8s::@5/(byte) 1 )
[140] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 )
[141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2
to:sin8s::@6
sin8s::@6: scope:[sin8s] from sin8s::@1
[140] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4
[142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4
to:sin8s::@2
sin8s::@2: scope:[sin8s] from sin8s::@1 sin8s::@6
[141] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 )
[142] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3
[143] (byte) sin8s::x1#0 ← > (word~) sin8s::$4
[144] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0
[145] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0
[146] call mulu8_sel
[147] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12
[143] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 )
[144] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3
[145] (byte) sin8s::x1#0 ← > (word~) sin8s::$4
[146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0
[147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0
[148] call mulu8_sel
[149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12
to:sin8s::@9
sin8s::@9: scope:[sin8s] from sin8s::@2
[148] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0
[149] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0
[150] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0
[151] call mulu8_sel
[152] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12
[150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0
[151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0
[152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0
[153] call mulu8_sel
[154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12
to:sin8s::@10
sin8s::@10: scope:[sin8s] from sin8s::@9
[153] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1
[154] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0
[155] call mulu8_sel
[156] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12
[155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1
[156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0
[157] call mulu8_sel
[158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12
to:sin8s::@11
sin8s::@11: scope:[sin8s] from sin8s::@10
[157] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2
[158] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0
[159] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0
[160] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0
[161] call mulu8_sel
[162] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12
[159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2
[160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0
[161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0
[162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0
[163] call mulu8_sel
[164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12
to:sin8s::@12
sin8s::@12: scope:[sin8s] from sin8s::@11
[163] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10
[164] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0
[165] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0
[166] call mulu8_sel
[167] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12
[165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10
[166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0
[167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0
[168] call mulu8_sel
[169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12
to:sin8s::@13
sin8s::@13: scope:[sin8s] from sin8s::@12
[168] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11
[169] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4
[170] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0
[171] if((byte) sin8s::usinx#1<(byte) $80) goto sin8s::@3
[170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11
[171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4
[172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0
[173] if((byte) sin8s::usinx#1<(byte) $80) goto sin8s::@3
to:sin8s::@7
sin8s::@7: scope:[sin8s] from sin8s::@13
[172] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1
[174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1
to:sin8s::@3
sin8s::@3: scope:[sin8s] from sin8s::@13 sin8s::@7
[173] (byte) sin8s::usinx#4 ← phi( sin8s::@13/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 )
[174] if((byte) sin8s::isUpper#10==(byte) 0) goto sin8s::@14
[175] (byte) sin8s::usinx#4 ← phi( sin8s::@13/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 )
[176] if((byte) sin8s::isUpper#10==(byte) 0) goto sin8s::@14
to:sin8s::@8
sin8s::@8: scope:[sin8s] from sin8s::@3
[175] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4
[177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4
to:sin8s::@4
sin8s::@4: scope:[sin8s] from sin8s::@14 sin8s::@8
[176] (signed byte) sin8s::return#0 ← phi( sin8s::@14/(signed byte~) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 )
[178] (signed byte) sin8s::return#0 ← phi( sin8s::@14/(signed byte~) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 )
to:sin8s::@return
sin8s::@return: scope:[sin8s] from sin8s::@4
[177] return
[179] return
to:@return
sin8s::@14: scope:[sin8s] from sin8s::@3
[178] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4
[180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4
to:sin8s::@4
mulu8_sel: scope:[mulu8_sel] from sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@2 sin8s::@9
[179] (byte) mulu8_sel::select#5 ← phi( sin8s::@9/(byte) 1 sin8s::@10/(byte) 1 sin8s::@11/(byte) 0 sin8s::@12/(byte) 0 sin8s::@2/(byte) 0 )
[179] (byte) mulu8_sel::v2#5 ← phi( sin8s::@9/(byte) mulu8_sel::v2#1 sin8s::@10/(const byte) sin8s::DIV_6#0 sin8s::@11/(byte) mulu8_sel::v2#3 sin8s::@12/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 )
[179] (byte) mulu8_sel::v1#5 ← phi( sin8s::@9/(byte) mulu8_sel::v1#1 sin8s::@10/(byte) mulu8_sel::v1#2 sin8s::@11/(byte) mulu8_sel::v1#3 sin8s::@12/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 )
[180] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5
[181] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5
[182] call mul8u
[183] (word) mul8u::return#3 ← (word) mul8u::res#2
[181] (byte) mulu8_sel::select#5 ← phi( sin8s::@9/(byte) 1 sin8s::@10/(byte) 1 sin8s::@11/(byte) 0 sin8s::@12/(byte) 0 sin8s::@2/(byte) 0 )
[181] (byte) mulu8_sel::v2#5 ← phi( sin8s::@9/(byte) mulu8_sel::v2#1 sin8s::@10/(const byte) sin8s::DIV_6#0 sin8s::@11/(byte) mulu8_sel::v2#3 sin8s::@12/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 )
[181] (byte) mulu8_sel::v1#5 ← phi( sin8s::@9/(byte) mulu8_sel::v1#1 sin8s::@10/(byte) mulu8_sel::v1#2 sin8s::@11/(byte) mulu8_sel::v1#3 sin8s::@12/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 )
[182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5
[183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5
[184] call mul8u
[185] (word) mul8u::return#3 ← (word) mul8u::res#2
to:mulu8_sel::@1
mulu8_sel::@1: scope:[mulu8_sel] from mulu8_sel
[184] (word~) mulu8_sel::$0 ← (word) mul8u::return#3
[185] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5
[186] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1
[186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3
[187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5
[188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1
to:mulu8_sel::@return
mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@1
[187] return
[189] return
to:@return
div16u: scope:[div16u] from sin8u_table
[188] phi()
[189] call divr16u
[190] (word) divr16u::return#2 ← (word) divr16u::return#0
[190] phi()
[191] call divr16u
[192] (word) divr16u::return#2 ← (word) divr16u::return#0
to:div16u::@1
div16u::@1: scope:[div16u] from div16u
[191] (word) div16u::return#0 ← (word) divr16u::return#2
[193] (word) div16u::return#0 ← (word) divr16u::return#2
to:div16u::@return
div16u::@return: scope:[div16u] from div16u::@1
[192] return
[194] return
to:@return
divr16u: scope:[divr16u] from div16u
[193] phi()
[195] phi()
to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
[194] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
[194] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
[194] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 )
[194] (word) divr16u::rem#4 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::rem#9 )
[195] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1
[196] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2
[197] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
[198] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
[196] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
[196] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
[196] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 )
[196] (word) divr16u::rem#4 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::rem#9 )
[197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1
[198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2
[199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
[200] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1
[199] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
[201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
to:divr16u::@2
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
[200] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
[201] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1
[202] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
[203] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3
[202] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
[203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1
[204] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
[205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3
to:divr16u::@5
divr16u::@5: scope:[divr16u] from divr16u::@2
[204] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
[205] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0
[206] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
[207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0
to:divr16u::@3
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
[206] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
[206] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 )
[207] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
[208] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
[208] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
[208] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 )
[209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
[210] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
to:divr16u::@return
divr16u::@return: scope:[divr16u] from divr16u::@3
[209] return
[211] return
to:@return
print_cls: scope:[print_cls] from main
[210] phi()
[212] phi()
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
[211] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
[212] *((byte*) print_cls::sc#2) ← (byte) ' '
[213] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[214] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1
[213] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
[214] *((byte*) print_cls::sc#2) ← (byte) ' '
[215] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[216] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
[215] return
[217] return
to:@return

File diff suppressed because one or more lines are too long

View File

@ -135,19 +135,18 @@
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#3 reg byte a 4.0
(byte) print_char::ch#4 reg byte a 4.0
(byte) print_char::ch#5 reg byte a 6.0
(byte) print_char::ch#5 reg byte a 4.0
(byte) print_char::ch#6 reg byte a 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:15 101.0
(byte*) print_char_cursor#100 print_char_cursor zp ZP_WORD:15 9.0
(byte*) print_char_cursor#105 print_char_cursor zp ZP_WORD:15 54.0
(byte*~) print_char_cursor#113 print_char_cursor zp ZP_WORD:15 22.0
(byte*) print_char_cursor#18 print_char_cursor zp ZP_WORD:15 3.454545454545454
(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:15 12.777777777777777
(byte*) print_char_cursor#64 print_char_cursor zp ZP_WORD:15 7.0
(byte*) print_char_cursor#94 print_char_cursor zp ZP_WORD:15 3.0
(byte*) print_char_cursor#99 print_char_cursor zp ZP_WORD:15 8.5
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:11 101.0
(byte*) print_char_cursor#102 print_char_cursor zp ZP_WORD:11 8.5
(byte*) print_char_cursor#103 print_char_cursor zp ZP_WORD:11 9.0
(byte*) print_char_cursor#108 print_char_cursor zp ZP_WORD:11 54.0
(byte*~) print_char_cursor#116 print_char_cursor zp ZP_WORD:11 22.0
(byte*) print_char_cursor#19 print_char_cursor zp ZP_WORD:11 3.2340425531914887
(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:11 12.321428571428571
(byte*) print_char_cursor#66 print_char_cursor zp ZP_WORD:11 8.0
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
@ -179,26 +178,27 @@
(label) print_str::@2
(label) print_str::@return
(byte*) print_str::str
(byte*) print_str::str#0 str zp ZP_WORD:11 202.0
(byte*) print_str::str#10 str zp ZP_WORD:11 101.5
(byte*) print_str::str#12 str zp ZP_WORD:11 2.0
(byte*) print_str::str#0 str zp ZP_WORD:13 202.0
(byte*) print_str::str#10 str zp ZP_WORD:13 101.5
(byte*) print_str::str#12 str zp ZP_WORD:13 2.0
(void()) print_sword((signed word) print_sword::w)
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:13 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:13 4.25
(signed word) print_sword::w#3 w zp ZP_WORD:13 4.0
(signed word) print_sword::w#0 w zp ZP_WORD:15 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:15 2.8333333333333335
(signed word) print_sword::w#4 w zp ZP_WORD:15 4.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:13 4.0
(word) print_word::w#1 w zp ZP_WORD:13 4.0
(word) print_word::w#2 w zp ZP_WORD:13 22.0
(word) print_word::w#3 w zp ZP_WORD:13 6.333333333333334
(word) print_word::w#0 w zp ZP_WORD:15 4.0
(word) print_word::w#1 w zp ZP_WORD:15 4.0
(word) print_word::w#2 w zp ZP_WORD:15 22.0
(word) print_word::w#3 w zp ZP_WORD:15 6.333333333333334
(signed byte()) sin8s((word) sin8s::x)
(word~) sin8s::$4 $4 zp ZP_WORD:22 4.0
(label) sin8s::@1
@ -320,10 +320,10 @@ zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ]
zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ]
zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ]
zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#0 print_byte::b#1 print_byte::b#2 print_byte::b#7 print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ]
reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ]
zp ZP_WORD:11 [ print_str::str#10 print_str::str#12 print_str::str#0 ]
zp ZP_WORD:13 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ]
zp ZP_WORD:15 [ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#113 print_char_cursor#1 ]
reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
zp ZP_WORD:11 [ print_char_cursor#108 print_char_cursor#66 print_char_cursor#103 print_char_cursor#19 print_char_cursor#102 print_char_cursor#2 print_char_cursor#116 print_char_cursor#1 ]
zp ZP_WORD:13 [ print_str::str#10 print_str::str#12 print_str::str#0 ]
zp ZP_WORD:15 [ print_sword::w#4 print_sword::w#0 print_sword::w#1 print_word::w#3 print_word::w#0 print_word::w#2 print_word::w#1 ]
zp ZP_WORD:17 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 sin8u_table::sinx_sc#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mulu8_sel::$0 mulu8_sel::$1 ]
reg byte a [ mul8u::b#1 ]
reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#1 mul8u::a#2 mul8u::a#0 ]

View File

@ -12,7 +12,7 @@
.const FF = $57
// filled circle
.const TT = $51
.label print_char_cursor = $c
.label print_char_cursor = $a
.label print_line_cursor = 5
main: {
.label w1 = $11
@ -105,9 +105,9 @@ print_ln: {
rts
}
// Compare two words using an operator
// compare(signed word zeropage($a) w1, signed word zeropage($13) w2, byte register(X) op)
// compare(signed word zeropage($c) w1, signed word zeropage($13) w2, byte register(X) op)
compare: {
.label w1 = $a
.label w1 = $c
.label w2 = $13
.label ops = 7
.label r = 9
@ -303,11 +303,17 @@ print_char: {
rts
}
// Print a signed word as HEX
// print_sword(signed word zeropage($a) w)
// print_sword(signed word zeropage($c) w)
print_sword: {
.label w = $a
.label w = $c
lda w+1
bpl b1
bmi b1
lda #' '
jsr print_char
b2:
jsr print_word
rts
b1:
lda #'-'
jsr print_char
sec
@ -317,14 +323,12 @@ print_sword: {
lda #0
sbc w+1
sta w+1
b1:
jsr print_word
rts
jmp b2
}
// Print a word as HEX
// print_word(word zeropage($a) w)
// print_word(word zeropage($c) w)
print_word: {
.label w = $a
.label w = $c
lda w+1
sta print_byte.b
jsr print_byte

View File

@ -14,7 +14,7 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@7
[6] (byte*) print_line_cursor#31 ← phi( main/(byte*) 1024 main::@7/(byte*) print_line_cursor#23 )
[6] (byte) main::s#7 ← phi( main/(byte) 0 main::@7/(byte) main::s#10 )
[6] (byte*) print_char_cursor#80 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#76 )
[6] (byte*) print_char_cursor#83 ← phi( main/(byte*) 1024 main::@7/(byte*) print_char_cursor#79 )
[6] (byte) main::i#2 ← phi( main/(byte) 0 main::@7/(byte) main::i#1 )
[7] (byte~) main::$8 ← (byte) main::i#2 << (byte) 1
[8] (signed word) main::w1#0 ← *((const signed word[]) swords#0 + (byte~) main::$8)
@ -22,7 +22,7 @@ main::@1: scope:[main] from main main::@7
main::@2: scope:[main] from main::@1 main::@6
[9] (byte*) print_line_cursor#29 ← phi( main::@1/(byte*) print_line_cursor#31 main::@6/(byte*) print_line_cursor#23 )
[9] (byte) main::s#5 ← phi( main::@1/(byte) main::s#7 main::@6/(byte) main::s#10 )
[9] (byte*) print_char_cursor#75 ← phi( main::@1/(byte*) print_char_cursor#80 main::@6/(byte*) print_char_cursor#76 )
[9] (byte*) print_char_cursor#78 ← phi( main::@1/(byte*) print_char_cursor#83 main::@6/(byte*) print_char_cursor#79 )
[9] (byte) main::j#2 ← phi( main::@1/(byte) 0 main::@6/(byte) main::j#1 )
[10] (byte~) main::$9 ← (byte) main::j#2 << (byte) 1
[11] (signed word) main::w2#0 ← *((const signed word[]) swords#0 + (byte~) main::$9)
@ -30,7 +30,7 @@ main::@2: scope:[main] from main::@1 main::@6
main::@3: scope:[main] from main::@2 main::@4
[12] (byte*) print_line_cursor#19 ← phi( main::@2/(byte*) print_line_cursor#29 main::@4/(byte*) print_line_cursor#23 )
[12] (byte) main::s#3 ← phi( main::@2/(byte) main::s#5 main::@4/(byte) main::s#10 )
[12] (byte*) print_char_cursor#67 ← phi( main::@2/(byte*) print_char_cursor#75 main::@4/(byte*) print_char_cursor#76 )
[12] (byte*) print_char_cursor#70 ← phi( main::@2/(byte*) print_char_cursor#78 main::@4/(byte*) print_char_cursor#79 )
[12] (byte) main::op#2 ← phi( main::@2/(byte) 0 main::@4/(byte) main::op#1 )
[13] (signed word) compare::w1#0 ← (signed word) main::w1#0
[14] (signed word) compare::w2#0 ← (signed word) main::w2#0
@ -51,7 +51,7 @@ main::@10: scope:[main] from main::@5
main::@4: scope:[main] from main::@10 main::@9
[22] (byte*) print_line_cursor#23 ← phi( main::@9/(byte*) print_line_cursor#19 main::@10/(byte*) print_line_cursor#1 )
[22] (byte) main::s#10 ← phi( main::@9/(byte) main::s#1 main::@10/(byte) 0 )
[22] (byte*) print_char_cursor#76 ← phi( main::@9/(byte*) print_char_cursor#14 main::@10/(byte*~) print_char_cursor#128 )
[22] (byte*) print_char_cursor#79 ← phi( main::@9/(byte*) print_char_cursor#15 main::@10/(byte*~) print_char_cursor#128 )
[23] (byte) main::op#1 ← ++ (byte) main::op#2
[24] if((byte) main::op#1!=(byte) 6) goto main::@3
to:main::@6
@ -72,7 +72,7 @@ print_ln: scope:[print_ln] from main::@5
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
[31] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 )
[32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28
[33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#14) goto print_ln::@1
[33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#15) goto print_ln::@1
to:print_ln::@return
print_ln::@return: scope:[print_ln] from print_ln::@1
[34] return
@ -114,7 +114,7 @@ compare::@21: scope:[compare] from compare::@6
[47] call print_char
to:compare::@7
compare::@7: scope:[compare] from compare::@21 compare::@6
[48] (byte*) print_char_cursor#70 ← phi( compare::@6/(byte*) print_char_cursor#67 compare::@21/(byte*) print_char_cursor#14 )
[48] (byte*) print_char_cursor#73 ← phi( compare::@6/(byte*) print_char_cursor#70 compare::@21/(byte*) print_char_cursor#15 )
[49] (signed word) print_sword::w#1 ← (signed word) compare::w1#0
[50] call print_sword
to:compare::@29
@ -130,12 +130,12 @@ compare::@22: scope:[compare] from compare::@30
[55] call print_char
to:compare::@8
compare::@8: scope:[compare] from compare::@22 compare::@30
[56] (byte*) print_char_cursor#71 ← phi( compare::@30/(byte*) print_char_cursor#2 compare::@22/(byte*) print_char_cursor#14 )
[56] (byte*) print_char_cursor#74 ← phi( compare::@30/(byte*) print_char_cursor#2 compare::@22/(byte*) print_char_cursor#15 )
[57] (signed word) print_sword::w#2 ← (signed word) compare::w2#0
[58] call print_sword
to:compare::@31
compare::@31: scope:[compare] from compare::@8
[59] (byte) print_char::ch#4 ← (byte) compare::r#10
[59] (byte) print_char::ch#5 ← (byte) compare::r#10
[60] call print_char
to:compare::@return
compare::@return: scope:[compare] from compare::@31
@ -186,87 +186,89 @@ compare::@20: scope:[compare] from compare::@1
compare::@28: scope:[compare] from compare::@1 compare::@20
[76] (byte) compare::r#22 ← phi( compare::@1/(const byte) FF#0 compare::@20/(const byte) TT#0 )
to:compare::@6
print_char: scope:[print_char] from compare::@21 compare::@22 compare::@31 print_byte print_byte::@1 print_sword::@2
[77] (byte*) print_char_cursor#43 ← phi( compare::@21/(byte*) print_char_cursor#67 compare::@22/(byte*) print_char_cursor#2 compare::@31/(byte*) print_char_cursor#14 print_byte/(byte*) print_char_cursor#63 print_byte::@1/(byte*) print_char_cursor#14 print_sword::@2/(byte*) print_char_cursor#61 )
[77] (byte) print_char::ch#6 ← phi( compare::@21/(byte) ' ' compare::@22/(byte) ' ' compare::@31/(byte) print_char::ch#4 print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' )
[78] *((byte*) print_char_cursor#43) ← (byte) print_char::ch#6
[79] (byte*) print_char_cursor#14 ← ++ (byte*) print_char_cursor#43
print_char: scope:[print_char] from compare::@21 compare::@22 compare::@31 print_byte print_byte::@1 print_sword::@1 print_sword::@3
[77] (byte*) print_char_cursor#45 ← phi( compare::@21/(byte*) print_char_cursor#70 compare::@22/(byte*) print_char_cursor#2 compare::@31/(byte*) print_char_cursor#15 print_byte/(byte*) print_char_cursor#15 print_byte::@1/(byte*) print_char_cursor#15 print_sword::@1/(byte*) print_char_cursor#62 print_sword::@3/(byte*) print_char_cursor#62 )
[77] (byte) print_char::ch#7 ← phi( compare::@21/(byte) ' ' compare::@22/(byte) ' ' compare::@31/(byte) print_char::ch#5 print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' )
[78] *((byte*) print_char_cursor#45) ← (byte) print_char::ch#7
[79] (byte*) print_char_cursor#15 ← ++ (byte*) print_char_cursor#45
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[80] return
to:@return
print_sword: scope:[print_sword] from compare::@7 compare::@8
[81] (byte*) print_char_cursor#61 ← phi( compare::@7/(byte*) print_char_cursor#70 compare::@8/(byte*) print_char_cursor#71 )
[81] (byte*) print_char_cursor#62 ← phi( compare::@7/(byte*) print_char_cursor#73 compare::@8/(byte*) print_char_cursor#74 )
[81] (signed word) print_sword::w#3 ← phi( compare::@7/(signed word) print_sword::w#1 compare::@8/(signed word) print_sword::w#2 )
[82] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword
[82] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword
[83] phi()
[84] call print_char
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword::@2
[85] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3
to:print_sword::@1
print_sword::@1: scope:[print_sword] from print_sword print_sword::@3
[86] (byte*) print_char_cursor#60 ← phi( print_sword/(byte*) print_char_cursor#61 print_sword::@3/(byte*) print_char_cursor#14 )
[86] (signed word) print_sword::w#4 ← phi( print_sword/(signed word) print_sword::w#3 print_sword::@3/(signed word) print_sword::w#0 )
[87] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4
[88] call print_word
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4
[85] (signed word) print_sword::w#5 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#3 )
[86] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5
[87] call print_word
to:print_sword::@return
print_sword::@return: scope:[print_sword] from print_sword::@1
[89] return
print_sword::@return: scope:[print_sword] from print_sword::@2
[88] return
to:@return
print_word: scope:[print_word] from print_sword::@1
[90] (byte) print_byte::b#0 ← > (word) print_word::w#0
[91] call print_byte
print_sword::@1: scope:[print_sword] from print_sword
[89] phi()
[90] call print_char
to:print_sword::@4
print_sword::@4: scope:[print_sword] from print_sword::@1
[91] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3
to:print_sword::@2
print_word: scope:[print_word] from print_sword::@2
[92] (byte) print_byte::b#0 ← > (word) print_word::w#0
[93] call print_byte
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[92] (byte) print_byte::b#1 ← < (word) print_word::w#0
[93] call print_byte
[94] (byte) print_byte::b#1 ← < (word) print_word::w#0
[95] call print_byte
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[94] return
[96] return
to:@return
print_byte: scope:[print_byte] from print_word print_word::@1
[95] (byte*) print_char_cursor#63 ← phi( print_word/(byte*) print_char_cursor#60 print_word::@1/(byte*) print_char_cursor#14 )
[95] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
[96] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
[97] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[98] call print_char
[97] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
[98] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
[99] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[100] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[99] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
[100] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[101] call print_char
[101] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
[102] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[103] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[102] return
[104] return
to:@return
print_str: scope:[print_str] from compare::@29
[103] phi()
[105] phi()
to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2
[104] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#14 print_str::@2/(byte*) print_char_cursor#1 )
[104] (byte*) print_str::str#2 ← phi( print_str/(byte*) print_str::str#1 print_str::@2/(byte*) print_str::str#0 )
[105] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2
[106] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#15 print_str::@2/(byte*) print_char_cursor#1 )
[106] (byte*) print_str::str#2 ← phi( print_str/(byte*) print_str::str#1 print_str::@2/(byte*) print_str::str#0 )
[107] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2
to:print_str::@return
print_str::@return: scope:[print_str] from print_str::@1
[106] return
[108] return
to:@return
print_str::@2: scope:[print_str] from print_str::@1
[107] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2)
[108] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2
[109] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2
[109] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2)
[110] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2
[111] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2
to:print_str::@1
print_cls: scope:[print_cls] from main
[110] phi()
[112] phi()
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
[111] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
[112] *((byte*) print_cls::sc#2) ← (byte) ' '
[113] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[114] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1
[113] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
[114] *((byte*) print_cls::sc#2) ← (byte) ' '
[115] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[116] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
[115] return
[117] return
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -69,7 +69,7 @@
(byte) compare::r#21 r zp ZP_BYTE:9 2.0
(byte) compare::r#22 r zp ZP_BYTE:9 2.0
(signed word) compare::w1
(signed word) compare::w1#0 w1 zp ZP_WORD:10 31.78125
(signed word) compare::w1#0 w1 zp ZP_WORD:12 31.78125
(signed word) compare::w2
(signed word) compare::w2#0 w2 zp ZP_WORD:19 26.076923076923077
(void()) main()
@ -116,25 +116,23 @@
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#1 reg byte a 4.0
(byte) print_char::ch#2 reg byte a 4.0
(byte) print_char::ch#4 reg byte a 4.0
(byte) print_char::ch#6 reg byte a 8.0
(byte) print_char::ch#3 reg byte a 4.0
(byte) print_char::ch#5 reg byte a 4.0
(byte) print_char::ch#7 reg byte a 8.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:12 10001.0
(byte*~) print_char_cursor#128 print_char_cursor zp ZP_WORD:12 2002.0
(byte*) print_char_cursor#14 print_char_cursor zp ZP_WORD:12 344.3125
(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:12 4287.0
(byte*) print_char_cursor#43 print_char_cursor zp ZP_WORD:12 8.0
(byte*) print_char_cursor#60 print_char_cursor zp ZP_WORD:12 2.0
(byte*) print_char_cursor#61 print_char_cursor zp ZP_WORD:12 2.6666666666666665
(byte*) print_char_cursor#63 print_char_cursor zp ZP_WORD:12 2.0
(byte*) print_char_cursor#67 print_char_cursor zp ZP_WORD:12 35.677419354838705
(byte*) print_char_cursor#70 print_char_cursor zp ZP_WORD:12 3.0
(byte*) print_char_cursor#71 print_char_cursor zp ZP_WORD:12 3.0
(byte*) print_char_cursor#75 print_char_cursor zp ZP_WORD:12 71.0
(byte*) print_char_cursor#76 print_char_cursor zp ZP_WORD:12 445.0
(byte*) print_char_cursor#80 print_char_cursor zp ZP_WORD:12 7.333333333333333
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:10 10001.0
(byte*~) print_char_cursor#128 print_char_cursor zp ZP_WORD:10 2002.0
(byte*) print_char_cursor#15 print_char_cursor zp ZP_WORD:10 282.46153846153845
(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:10 4287.0
(byte*) print_char_cursor#45 print_char_cursor zp ZP_WORD:10 9.0
(byte*) print_char_cursor#62 print_char_cursor zp ZP_WORD:10 2.0
(byte*) print_char_cursor#70 print_char_cursor zp ZP_WORD:10 35.677419354838705
(byte*) print_char_cursor#73 print_char_cursor zp ZP_WORD:10 3.0
(byte*) print_char_cursor#74 print_char_cursor zp ZP_WORD:10 3.0
(byte*) print_char_cursor#78 print_char_cursor zp ZP_WORD:10 71.0
(byte*) print_char_cursor#79 print_char_cursor zp ZP_WORD:10 445.0
(byte*) print_char_cursor#83 print_char_cursor zp ZP_WORD:10 7.333333333333333
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
@ -166,18 +164,19 @@
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:10 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:10 4.0
(signed word) print_sword::w#2 w zp ZP_WORD:10 4.0
(signed word) print_sword::w#3 w zp ZP_WORD:10 2.5
(signed word) print_sword::w#4 w zp ZP_WORD:10 4.0
(signed word) print_sword::w#0 w zp ZP_WORD:12 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:12 4.0
(signed word) print_sword::w#2 w zp ZP_WORD:12 4.0
(signed word) print_sword::w#3 w zp ZP_WORD:12 1.6666666666666665
(signed word) print_sword::w#5 w zp ZP_WORD:12 4.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:10 2.0
(word) print_word::w#0 w zp ZP_WORD:12 2.0
(signed word[]) swords
(const signed word[]) swords#0 swords = { (signed word) -$6fed, (signed word) $12, (signed word) $7fed }
@ -188,9 +187,9 @@ zp ZP_BYTE:4 [ main::s#3 main::s#5 main::s#7 main::s#10 main::s#1 ]
zp ZP_WORD:5 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#29 print_line_cursor#31 print_line_cursor#23 print_line_cursor#1 ]
zp ZP_WORD:7 [ compare::ops#10 print_str::str#2 print_str::str#1 print_str::str#0 ]
zp ZP_BYTE:9 [ compare::r#10 compare::r#17 compare::r#18 compare::r#19 compare::r#20 compare::r#21 compare::r#22 ]
reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#1 print_char::ch#2 ]
zp ZP_WORD:10 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 compare::w1#0 print_word::w#0 ]
zp ZP_WORD:12 [ print_char_cursor#60 print_char_cursor#43 print_char_cursor#71 print_char_cursor#2 print_char_cursor#70 print_char_cursor#67 print_char_cursor#75 print_char_cursor#80 print_char_cursor#76 print_char_cursor#14 print_char_cursor#128 print_char_cursor#63 print_char_cursor#61 print_char_cursor#1 ]
reg byte a [ print_char::ch#7 print_char::ch#5 print_char::ch#2 print_char::ch#3 ]
zp ZP_WORD:10 [ print_char_cursor#45 print_char_cursor#74 print_char_cursor#2 print_char_cursor#73 print_char_cursor#70 print_char_cursor#78 print_char_cursor#83 print_char_cursor#79 print_char_cursor#15 print_char_cursor#128 print_char_cursor#62 print_char_cursor#1 ]
zp ZP_WORD:12 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 compare::w1#0 print_word::w#0 ]
zp ZP_BYTE:14 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
zp ZP_WORD:15 [ print_cls::sc#2 print_cls::sc#1 ]
reg byte a [ main::$8 ]

View File

@ -2,7 +2,7 @@
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
.label print_char_cursor = 8
.label print_char_cursor = 7
.label print_line_cursor = 3
.label rem16u = $12
.label rem16s = $12
@ -103,7 +103,13 @@ print_ln: {
print_sword: {
.label w = 5
lda w+1
bpl b1
bmi b1
lda #' '
jsr print_char
b2:
jsr print_word
rts
b1:
lda #'-'
jsr print_char
sec
@ -113,8 +119,17 @@ print_sword: {
lda #0
sbc w+1
sta w+1
b1:
jsr print_word
jmp b2
}
// Print a single char
// print_char(byte register(A) ch)
print_char: {
ldy #0
sta (print_char_cursor),y
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
rts
}
// Print a word as HEX
@ -130,9 +145,9 @@ print_word: {
rts
}
// Print a byte as HEX
// print_byte(byte zeropage(7) b)
// print_byte(byte zeropage(9) b)
print_byte: {
.label b = 7
.label b = 9
lda b
lsr
lsr
@ -148,17 +163,6 @@ print_byte: {
jsr print_char
rts
}
// Print a single char
// print_char(byte register(A) ch)
print_char: {
ldy #0
sta (print_char_cursor),y
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
rts
}
// Print a zero-terminated string
// print_str(byte* zeropage($a) str)
print_str: {
@ -326,7 +330,7 @@ divr16u: {
rts
}
test_8s: {
.label dividend = 7
.label dividend = 9
.label divisor = $1e
.label res = $1f
.label i = $14
@ -380,9 +384,9 @@ test_8s: {
divisors: .byte 5, 7, -$b, -$d, $11, $13
}
// Print a signed byte as HEX
// print_sbyte(signed byte zeropage(7) b)
// print_sbyte(signed byte zeropage(9) b)
print_sbyte: {
.label b = 7
.label b = 9
lda b
bmi b1
lda #' '
@ -592,7 +596,7 @@ div16u: {
rts
}
test_8u: {
.label dividend = 7
.label dividend = 9
.label divisor = $21
.label res = $22
.label i = $19

View File

@ -46,7 +46,7 @@ test_16s::@1: scope:[test_16s] from test_16s test_16s::@10
test_16s::@2: scope:[test_16s] from test_16s::@1
[24] (signed word) test_16s::res#0 ← (signed word) div16s::return#2
[25] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0
[26] (byte*~) print_char_cursor#161 ← (byte*) print_line_cursor#1
[26] (byte*~) print_char_cursor#164 ← (byte*) print_line_cursor#1
[27] call print_sword
to:test_16s::@3
test_16s::@3: scope:[test_16s] from test_16s::@2
@ -90,494 +90,497 @@ print_ln: scope:[print_ln] from test_16s::@9 test_16u::@9 test_8s::@9 test_8u::
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
[46] (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 )
[47] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28
[48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1
[48] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1
to:print_ln::@return
print_ln::@return: scope:[print_ln] from print_ln::@1
[49] return
to:@return
print_sword: scope:[print_sword] from test_16s::@2 test_16s::@4 test_16s::@6 test_16s::@8
[50] (byte*) print_char_cursor#131 ← phi( test_16s::@2/(byte*~) print_char_cursor#161 test_16s::@4/(byte*) print_char_cursor#128 test_16s::@6/(byte*) print_char_cursor#128 test_16s::@8/(byte*) print_char_cursor#128 )
[50] (signed word) print_sword::w#5 ← phi( test_16s::@2/(signed word) print_sword::w#1 test_16s::@4/(signed word) print_sword::w#2 test_16s::@6/(signed word) print_sword::w#3 test_16s::@8/(signed word) print_sword::w#4 )
[51] if((signed word) print_sword::w#5>=(signed byte) 0) goto print_sword::@1
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword
[50] (byte*) print_char_cursor#132 ← phi( test_16s::@2/(byte*~) print_char_cursor#164 test_16s::@4/(byte*) print_char_cursor#130 test_16s::@6/(byte*) print_char_cursor#130 test_16s::@8/(byte*) print_char_cursor#130 )
[50] (signed word) print_sword::w#10 ← phi( test_16s::@2/(signed word) print_sword::w#1 test_16s::@4/(signed word) print_sword::w#2 test_16s::@6/(signed word) print_sword::w#3 test_16s::@8/(signed word) print_sword::w#4 )
[51] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword
[52] phi()
[53] call print_char
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword::@2
[54] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5
to:print_sword::@1
print_sword::@1: scope:[print_sword] from print_sword print_sword::@3
[55] (byte*) print_char_cursor#130 ← phi( print_sword/(byte*) print_char_cursor#131 print_sword::@3/(byte*) print_char_cursor#18 )
[55] (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#5 print_sword::@3/(signed word) print_sword::w#0 )
[56] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6
[57] call print_word
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4
[54] (signed word) print_sword::w#7 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#10 )
[55] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7
[56] call print_word
to:print_sword::@return
print_sword::@return: scope:[print_sword] from print_sword::@1
[58] return
print_sword::@return: scope:[print_sword] from print_sword::@2
[57] return
to:@return
print_word: scope:[print_word] from print_sword::@1 test_16u::@2 test_16u::@4 test_16u::@6 test_16u::@8
[59] (byte*) print_char_cursor#135 ← phi( print_sword::@1/(byte*) print_char_cursor#130 test_16u::@2/(byte*~) print_char_cursor#172 test_16u::@4/(byte*) print_char_cursor#128 test_16u::@6/(byte*) print_char_cursor#128 test_16u::@8/(byte*) print_char_cursor#128 )
[59] (word) print_word::w#5 ← phi( print_sword::@1/(word) print_word::w#0 test_16u::@2/(word) print_word::w#1 test_16u::@4/(word) print_word::w#2 test_16u::@6/(word) print_word::w#3 test_16u::@8/(word) print_word::w#4 )
[60] (byte) print_byte::b#1 ← > (word) print_word::w#5
[61] call print_byte
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[62] (byte) print_byte::b#2 ← < (word) print_word::w#5
[63] call print_byte
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[64] return
to:@return
print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 test_8u::@2 test_8u::@4 test_8u::@6 test_8u::@8
[65] (byte*) print_char_cursor#136 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#18 test_8u::@2/(byte*) print_char_cursor#138 test_8u::@4/(byte*) print_char_cursor#128 test_8u::@6/(byte*) print_char_cursor#128 test_8u::@8/(byte*) print_char_cursor#128 )
[65] (byte) print_byte::b#7 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@2/(byte) print_byte::b#3 test_8u::@4/(byte) print_byte::b#4 test_8u::@6/(byte) print_byte::b#5 test_8u::@8/(byte) print_byte::b#6 )
[66] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4
[67] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[68] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[69] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f
[70] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[71] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[72] return
to:@return
print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2
[73] (byte*) print_char_cursor#82 ← phi( print_byte/(byte*) print_char_cursor#136 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#132 print_sbyte::@3/(byte*) print_char_cursor#132 print_sword::@2/(byte*) print_char_cursor#131 )
[73] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' )
[74] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5
[75] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82
print_sword::@1: scope:[print_sword] from print_sword
[58] phi()
[59] call print_char
to:print_sword::@4
print_sword::@4: scope:[print_sword] from print_sword::@1
[60] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10
to:print_sword::@2
print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@1 print_sword::@3
[61] (byte*) print_char_cursor#84 ← phi( print_byte/(byte*) print_char_cursor#139 print_byte::@1/(byte*) print_char_cursor#19 print_sbyte::@1/(byte*) print_char_cursor#135 print_sbyte::@3/(byte*) print_char_cursor#135 print_sword::@1/(byte*) print_char_cursor#132 print_sword::@3/(byte*) print_char_cursor#132 )
[61] (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' )
[62] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#6
[63] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#84
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[76] return
[64] return
to:@return
print_word: scope:[print_word] from print_sword::@2 test_16u::@2 test_16u::@4 test_16u::@6 test_16u::@8
[65] (byte*) print_char_cursor#138 ← phi( print_sword::@2/(byte*) print_char_cursor#19 test_16u::@2/(byte*~) print_char_cursor#173 test_16u::@4/(byte*) print_char_cursor#130 test_16u::@6/(byte*) print_char_cursor#130 test_16u::@8/(byte*) print_char_cursor#130 )
[65] (word) print_word::w#5 ← phi( print_sword::@2/(word) print_word::w#0 test_16u::@2/(word) print_word::w#1 test_16u::@4/(word) print_word::w#2 test_16u::@6/(word) print_word::w#3 test_16u::@8/(word) print_word::w#4 )
[66] (byte) print_byte::b#1 ← > (word) print_word::w#5
[67] call print_byte
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[68] (byte) print_byte::b#2 ← < (word) print_word::w#5
[69] call print_byte
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[70] return
to:@return
print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 test_8u::@2 test_8u::@4 test_8u::@6 test_8u::@8
[71] (byte*) print_char_cursor#139 ← phi( print_sbyte::@2/(byte*) print_char_cursor#19 print_word/(byte*) print_char_cursor#138 print_word::@1/(byte*) print_char_cursor#19 test_8u::@2/(byte*) print_char_cursor#141 test_8u::@4/(byte*) print_char_cursor#130 test_8u::@6/(byte*) print_char_cursor#130 test_8u::@8/(byte*) print_char_cursor#130 )
[71] (byte) print_byte::b#7 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@2/(byte) print_byte::b#3 test_8u::@4/(byte) print_byte::b#4 test_8u::@6/(byte) print_byte::b#5 test_8u::@8/(byte) print_byte::b#6 )
[72] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte) 4
[73] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[74] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[75] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte) $f
[76] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[77] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[78] return
to:@return
print_str: scope:[print_str] from test_16s::@3 test_16s::@5 test_16s::@7 test_16u::@3 test_16u::@5 test_16u::@7 test_8s::@3 test_8s::@5 test_8s::@7 test_8u::@3 test_8u::@5 test_8u::@7
[77] (byte*) print_str::str#15 ← phi( test_16s::@3/(const string) str test_16s::@5/(const string) str1 test_16s::@7/(const string) str2 test_16u::@3/(const string) str test_16u::@5/(const string) str1 test_16u::@7/(const string) str2 test_8s::@3/(const string) str test_8s::@5/(const string) str1 test_8s::@7/(const string) str2 test_8u::@3/(const string) str test_8u::@5/(const string) str1 test_8u::@7/(const string) str2 )
[79] (byte*) print_str::str#15 ← phi( test_16s::@3/(const string) str test_16s::@5/(const string) str1 test_16s::@7/(const string) str2 test_16u::@3/(const string) str test_16u::@5/(const string) str1 test_16u::@7/(const string) str2 test_8s::@3/(const string) str test_8s::@5/(const string) str1 test_8s::@7/(const string) str2 test_8u::@3/(const string) str test_8u::@5/(const string) str1 test_8u::@7/(const string) str2 )
to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2
[78] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#18 print_str::@2/(byte*) print_char_cursor#1 )
[78] (byte*) print_str::str#13 ← phi( print_str/(byte*) print_str::str#15 print_str::@2/(byte*) print_str::str#0 )
[79] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2
[80] (byte*) print_char_cursor#130 ← phi( print_str/(byte*) print_char_cursor#19 print_str::@2/(byte*) print_char_cursor#1 )
[80] (byte*) print_str::str#13 ← phi( print_str/(byte*) print_str::str#15 print_str::@2/(byte*) print_str::str#0 )
[81] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2
to:print_str::@return
print_str::@return: scope:[print_str] from print_str::@1
[80] return
[82] return
to:@return
print_str::@2: scope:[print_str] from print_str::@1
[81] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13)
[82] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128
[83] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13
[83] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#13)
[84] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130
[85] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13
to:print_str::@1
div16s: scope:[div16s] from test_16s::@1
[84] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0
[85] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0
[86] call divr16s
[87] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
[86] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0
[87] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0
[88] call divr16s
[89] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
to:div16s::@1
div16s::@1: scope:[div16s] from div16s
[88] (signed word) div16s::return#0 ← (signed word) divr16s::return#3
[90] (signed word) div16s::return#0 ← (signed word) divr16s::return#3
to:div16s::@return
div16s::@return: scope:[div16s] from div16s::@1
[89] return
[91] return
to:@return
divr16s: scope:[divr16s] from div16s
[90] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1
[92] if((signed word) divr16s::dividend#0<(signed byte) 0) goto divr16s::@1
to:divr16s::@6
divr16s::@6: scope:[divr16s] from divr16s
[91] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0
[93] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0
to:divr16s::@2
divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@6
[92] (word) divr16s::dividendu#3 ← phi( divr16s::@1/(word~) divr16s::dividendu#7 divr16s::@6/(word~) divr16s::dividendu#8 )
[92] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte) 1 divr16s::@6/(byte) 0 )
[93] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3
[94] (word) divr16s::dividendu#3 ← phi( divr16s::@1/(word~) divr16s::dividendu#7 divr16s::@6/(word~) divr16s::dividendu#8 )
[94] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte) 1 divr16s::@6/(byte) 0 )
[95] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3
to:divr16s::@7
divr16s::@7: scope:[divr16s] from divr16s::@2
[94] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
[96] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
to:divr16s::@4
divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@7
[95] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@7/(byte) divr16s::neg#3 )
[95] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@7/(word~) divr16s::divisoru#5 )
[96] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3
[97] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3
[98] call divr16u
[99] (word) divr16u::return#3 ← (word) divr16u::return#0
[97] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@7/(byte) divr16s::neg#3 )
[97] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@7/(word~) divr16s::divisoru#5 )
[98] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3
[99] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3
[100] call divr16u
[101] (word) divr16u::return#3 ← (word) divr16u::return#0
to:divr16s::@9
divr16s::@9: scope:[divr16s] from divr16s::@4
[100] (word) divr16s::resultu#0 ← (word) divr16u::return#3
[101] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5
[102] (word) divr16s::resultu#0 ← (word) divr16u::return#3
[103] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5
to:divr16s::@8
divr16s::@8: scope:[divr16s] from divr16s::@9
[102] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1
[103] (signed word) rem16s#2 ← - (signed word~) divr16s::$16
[104] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0
[104] (signed word~) divr16s::$16 ← (signed word)(word) rem16u#1
[105] (signed word) rem16s#2 ← - (signed word~) divr16s::$16
[106] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0
to:divr16s::@return
divr16s::@return: scope:[divr16s] from divr16s::@5 divr16s::@8
[105] (signed word) rem16s#11 ← phi( divr16s::@8/(signed word) rem16s#2 divr16s::@5/(signed word~) rem16s#37 )
[105] (signed word) divr16s::return#2 ← phi( divr16s::@8/(signed word) divr16s::return#1 divr16s::@5/(signed word~) divr16s::return#7 )
[106] return
[107] (signed word) rem16s#11 ← phi( divr16s::@8/(signed word) rem16s#2 divr16s::@5/(signed word~) rem16s#37 )
[107] (signed word) divr16s::return#2 ← phi( divr16s::@8/(signed word) divr16s::return#1 divr16s::@5/(signed word~) divr16s::return#7 )
[108] return
to:@return
divr16s::@5: scope:[divr16s] from divr16s::@9
[107] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
[108] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1
[109] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
[110] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1
to:divr16s::@return
divr16s::@3: scope:[divr16s] from divr16s::@2
[109] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0
[110] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1
[111] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1
[111] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0
[112] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1
[113] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1
to:divr16s::@4
divr16s::@1: scope:[divr16s] from divr16s
[112] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0
[113] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1
[114] (signed word) divr16s::dividendu#1 ← - (signed word) divr16s::dividend#0
[115] (word~) divr16s::dividendu#7 ← (word)(signed word) divr16s::dividendu#1
to:divr16s::@2
divr16u: scope:[divr16u] from div16u divr16s::@4
[114] (word) divr16u::divisor#6 ← phi( div16u/(word) divr16u::divisor#0 divr16s::@4/(word) divr16u::divisor#1 )
[114] (word) divr16u::dividend#5 ← phi( div16u/(word) divr16u::dividend#1 divr16s::@4/(word) divr16u::dividend#2 )
[116] (word) divr16u::divisor#6 ← phi( div16u/(word) divr16u::divisor#0 divr16s::@4/(word) divr16u::divisor#1 )
[116] (word) divr16u::dividend#5 ← phi( div16u/(word) divr16u::dividend#1 divr16s::@4/(word) divr16u::dividend#2 )
to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
[115] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
[115] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
[115] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
[115] (word) divr16u::rem#5 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::rem#11 )
[116] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1
[117] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
[118] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
[119] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
[117] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
[117] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
[117] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
[117] (word) divr16u::rem#5 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::rem#11 )
[118] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1
[119] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
[120] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
[121] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1
[120] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
[122] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
to:divr16u::@2
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
[121] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
[122] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1
[123] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
[124] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3
[123] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
[124] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1
[125] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
[126] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3
to:divr16u::@5
divr16u::@5: scope:[divr16u] from divr16u::@2
[125] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
[126] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6
[127] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
[128] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6
to:divr16u::@3
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
[127] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
[127] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
[128] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
[129] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
[129] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
[129] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
[130] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
[131] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
to:divr16u::@6
divr16u::@6: scope:[divr16u] from divr16u::@3
[130] (word) rem16u#1 ← (word) divr16u::rem#11
[132] (word) rem16u#1 ← (word) divr16u::rem#11
to:divr16u::@return
divr16u::@return: scope:[divr16u] from divr16u::@6
[131] return
[133] return
to:@return
test_8s: scope:[test_8s] from main::@3
[132] phi()
[134] phi()
to:test_8s::@1
test_8s::@1: scope:[test_8s] from test_8s test_8s::@10
[133] (byte) test_8s::i#10 ← phi( test_8s/(byte) 0 test_8s::@10/(byte) test_8s::i#1 )
[134] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10)
[135] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10)
[136] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0
[137] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0
[138] call div8s
[139] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2
[135] (byte) test_8s::i#10 ← phi( test_8s/(byte) 0 test_8s::@10/(byte) test_8s::i#1 )
[136] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10)
[137] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10)
[138] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0
[139] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0
[140] call div8s
[141] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2
to:test_8s::@2
test_8s::@2: scope:[test_8s] from test_8s::@1
[140] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3
[141] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0
[142] (byte*~) print_char_cursor#167 ← (byte*) print_line_cursor#1
[143] call print_sbyte
[142] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3
[143] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0
[144] (byte*~) print_char_cursor#168 ← (byte*) print_line_cursor#1
[145] call print_sbyte
to:test_8s::@3
test_8s::@3: scope:[test_8s] from test_8s::@2
[144] phi()
[145] call print_str
[146] phi()
[147] call print_str
to:test_8s::@4
test_8s::@4: scope:[test_8s] from test_8s::@3
[146] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0
[147] call print_sbyte
[148] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0
[149] call print_sbyte
to:test_8s::@5
test_8s::@5: scope:[test_8s] from test_8s::@4
[148] phi()
[149] call print_str
[150] phi()
[151] call print_str
to:test_8s::@6
test_8s::@6: scope:[test_8s] from test_8s::@5
[150] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0
[151] call print_sbyte
[152] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0
[153] call print_sbyte
to:test_8s::@7
test_8s::@7: scope:[test_8s] from test_8s::@6
[152] phi()
[153] call print_str
[154] phi()
[155] call print_str
to:test_8s::@8
test_8s::@8: scope:[test_8s] from test_8s::@7
[154] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3
[155] call print_sbyte
[156] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3
[157] call print_sbyte
to:test_8s::@9
test_8s::@9: scope:[test_8s] from test_8s::@8
[156] phi()
[157] call print_ln
[158] phi()
[159] call print_ln
to:test_8s::@10
test_8s::@10: scope:[test_8s] from test_8s::@9
[158] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10
[159] if((byte) test_8s::i#1!=(byte) 6) goto test_8s::@1
[160] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10
[161] if((byte) test_8s::i#1!=(byte) 6) goto test_8s::@1
to:test_8s::@return
test_8s::@return: scope:[test_8s] from test_8s::@10
[160] return
[162] return
to:@return
print_sbyte: scope:[print_sbyte] from test_8s::@2 test_8s::@4 test_8s::@6 test_8s::@8
[161] (byte*) print_char_cursor#132 ← phi( test_8s::@2/(byte*~) print_char_cursor#167 test_8s::@4/(byte*) print_char_cursor#128 test_8s::@6/(byte*) print_char_cursor#128 test_8s::@8/(byte*) print_char_cursor#128 )
[161] (signed byte) print_sbyte::b#10 ← phi( test_8s::@2/(signed byte) print_sbyte::b#1 test_8s::@4/(signed byte) print_sbyte::b#2 test_8s::@6/(signed byte) print_sbyte::b#3 test_8s::@8/(signed byte) print_sbyte::b#4 )
[162] if((signed byte) print_sbyte::b#10<(signed byte) 0) goto print_sbyte::@1
[163] (byte*) print_char_cursor#135 ← phi( test_8s::@2/(byte*~) print_char_cursor#168 test_8s::@4/(byte*) print_char_cursor#130 test_8s::@6/(byte*) print_char_cursor#130 test_8s::@8/(byte*) print_char_cursor#130 )
[163] (signed byte) print_sbyte::b#10 ← phi( test_8s::@2/(signed byte) print_sbyte::b#1 test_8s::@4/(signed byte) print_sbyte::b#2 test_8s::@6/(signed byte) print_sbyte::b#3 test_8s::@8/(signed byte) print_sbyte::b#4 )
[164] if((signed byte) print_sbyte::b#10<(signed byte) 0) goto print_sbyte::@1
to:print_sbyte::@3
print_sbyte::@3: scope:[print_sbyte] from print_sbyte
[163] phi()
[164] call print_char
[165] phi()
[166] call print_char
to:print_sbyte::@2
print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@3 print_sbyte::@4
[165] (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#10 )
[166] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#7
[167] call print_byte
[167] (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#10 )
[168] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#7
[169] call print_byte
to:print_sbyte::@return
print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2
[168] return
[170] return
to:@return
print_sbyte::@1: scope:[print_sbyte] from print_sbyte
[169] phi()
[170] call print_char
[171] phi()
[172] call print_char
to:print_sbyte::@4
print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@1
[171] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10
[173] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10
to:print_sbyte::@2
div8s: scope:[div8s] from test_8s::@1
[172] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1
[174] if((signed byte) div8s::dividend#0<(signed byte) 0) goto div8s::@1
to:div8s::@6
div8s::@6: scope:[div8s] from div8s
[173] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0
[175] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0
to:div8s::@2
div8s::@2: scope:[div8s] from div8s::@1 div8s::@6
[174] (byte) div8s::dividendu#3 ← phi( div8s::@1/(byte~) div8s::dividendu#7 div8s::@6/(byte~) div8s::dividendu#8 )
[174] (byte) div8s::neg#3 ← phi( div8s::@1/(byte) 1 div8s::@6/(byte) 0 )
[175] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3
[176] (byte) div8s::dividendu#3 ← phi( div8s::@1/(byte~) div8s::dividendu#7 div8s::@6/(byte~) div8s::dividendu#8 )
[176] (byte) div8s::neg#3 ← phi( div8s::@1/(byte) 1 div8s::@6/(byte) 0 )
[177] if((signed byte) div8s::divisor#0<(signed byte) 0) goto div8s::@3
to:div8s::@7
div8s::@7: scope:[div8s] from div8s::@2
[176] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0
[178] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0
to:div8s::@4
div8s::@4: scope:[div8s] from div8s::@3 div8s::@7
[177] (byte) div8s::neg#4 ← phi( div8s::@3/(byte) div8s::neg#2 div8s::@7/(byte) div8s::neg#3 )
[177] (byte) div8s::divisoru#3 ← phi( div8s::@3/(byte~) div8s::divisoru#4 div8s::@7/(byte~) div8s::divisoru#5 )
[178] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3
[179] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3
[180] call div8u
[181] (byte) div8u::return#2 ← (byte) div8u::return#0
[179] (byte) div8s::neg#4 ← phi( div8s::@3/(byte) div8s::neg#2 div8s::@7/(byte) div8s::neg#3 )
[179] (byte) div8s::divisoru#3 ← phi( div8s::@3/(byte~) div8s::divisoru#4 div8s::@7/(byte~) div8s::divisoru#5 )
[180] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3
[181] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3
[182] call div8u
[183] (byte) div8u::return#2 ← (byte) div8u::return#0
to:div8s::@9
div8s::@9: scope:[div8s] from div8s::@4
[182] (byte) div8s::resultu#0 ← (byte) div8u::return#2
[183] if((byte) div8s::neg#4==(byte) 0) goto div8s::@5
[184] (byte) div8s::resultu#0 ← (byte) div8u::return#2
[185] if((byte) div8s::neg#4==(byte) 0) goto div8s::@5
to:div8s::@8
div8s::@8: scope:[div8s] from div8s::@9
[184] (signed byte~) div8s::$11 ← (signed byte)(byte) rem8u#17
[185] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11
[186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0
[186] (signed byte~) div8s::$11 ← (signed byte)(byte) rem8u#17
[187] (signed byte) rem8s#2 ← - (signed byte~) div8s::$11
[188] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0
to:div8s::@return
div8s::@return: scope:[div8s] from div8s::@5 div8s::@8
[187] (signed byte) rem8s#3 ← phi( div8s::@8/(signed byte) rem8s#2 div8s::@5/(signed byte~) rem8s#33 )
[187] (signed byte) div8s::return#2 ← phi( div8s::@8/(signed byte) div8s::return#1 div8s::@5/(signed byte~) div8s::return#7 )
[188] return
[189] (signed byte) rem8s#3 ← phi( div8s::@8/(signed byte) rem8s#2 div8s::@5/(signed byte~) rem8s#33 )
[189] (signed byte) div8s::return#2 ← phi( div8s::@8/(signed byte) div8s::return#1 div8s::@5/(signed byte~) div8s::return#7 )
[190] return
to:@return
div8s::@5: scope:[div8s] from div8s::@9
[189] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0
[190] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17
[191] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0
[192] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17
to:div8s::@return
div8s::@3: scope:[div8s] from div8s::@2
[191] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0
[192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1
[193] (byte~) div8s::divisoru#4 ← (byte)(signed byte) div8s::divisoru#1
[193] (signed byte) div8s::divisoru#1 ← - (signed byte) div8s::divisor#0
[194] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte) 1
[195] (byte~) div8s::divisoru#4 ← (byte)(signed byte) div8s::divisoru#1
to:div8s::@4
div8s::@1: scope:[div8s] from div8s
[194] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0
[195] (byte~) div8s::dividendu#7 ← (byte)(signed byte) div8s::dividendu#1
[196] (signed byte) div8s::dividendu#1 ← - (signed byte) div8s::dividend#0
[197] (byte~) div8s::dividendu#7 ← (byte)(signed byte) div8s::dividendu#1
to:div8s::@2
div8u: scope:[div8u] from div8s::@4 test_8u::@1
[196] (byte) div8u::divisor#2 ← phi( div8s::@4/(byte) div8u::divisor#0 test_8u::@1/(byte) div8u::divisor#1 )
[196] (byte) div8u::dividend#2 ← phi( div8s::@4/(byte) div8u::dividend#0 test_8u::@1/(byte) div8u::dividend#1 )
[197] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2
[198] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2
[199] call divr8u
[200] (byte) divr8u::return#0 ← (byte) divr8u::return#1
[198] (byte) div8u::divisor#2 ← phi( div8s::@4/(byte) div8u::divisor#0 test_8u::@1/(byte) div8u::divisor#1 )
[198] (byte) div8u::dividend#2 ← phi( div8s::@4/(byte) div8u::dividend#0 test_8u::@1/(byte) div8u::dividend#1 )
[199] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2
[200] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2
[201] call divr8u
[202] (byte) divr8u::return#0 ← (byte) divr8u::return#1
to:div8u::@1
div8u::@1: scope:[div8u] from div8u
[201] (byte) div8u::return#0 ← (byte) divr8u::return#0
[203] (byte) div8u::return#0 ← (byte) divr8u::return#0
to:div8u::@return
div8u::@return: scope:[div8u] from div8u::@1
[202] return
[204] return
to:@return
divr8u: scope:[divr8u] from div8u
[203] phi()
[205] phi()
to:divr8u::@1
divr8u::@1: scope:[divr8u] from divr8u divr8u::@3
[204] (byte) divr8u::i#2 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::i#1 )
[204] (byte) divr8u::quotient#3 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::return#1 )
[204] (byte) divr8u::dividend#2 ← phi( divr8u/(byte) divr8u::dividend#0 divr8u::@3/(byte) divr8u::dividend#1 )
[204] (byte) divr8u::rem#4 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::rem#10 )
[205] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte) 1
[206] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80
[207] if((byte~) divr8u::$1==(byte) 0) goto divr8u::@2
[206] (byte) divr8u::i#2 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::i#1 )
[206] (byte) divr8u::quotient#3 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::return#1 )
[206] (byte) divr8u::dividend#2 ← phi( divr8u/(byte) divr8u::dividend#0 divr8u::@3/(byte) divr8u::dividend#1 )
[206] (byte) divr8u::rem#4 ← phi( divr8u/(byte) 0 divr8u::@3/(byte) divr8u::rem#10 )
[207] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte) 1
[208] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte) $80
[209] if((byte~) divr8u::$1==(byte) 0) goto divr8u::@2
to:divr8u::@4
divr8u::@4: scope:[divr8u] from divr8u::@1
[208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1
[210] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte) 1
to:divr8u::@2
divr8u::@2: scope:[divr8u] from divr8u::@1 divr8u::@4
[209] (byte) divr8u::rem#5 ← phi( divr8u::@1/(byte) divr8u::rem#1 divr8u::@4/(byte) divr8u::rem#2 )
[210] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte) 1
[211] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte) 1
[212] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3
[211] (byte) divr8u::rem#5 ← phi( divr8u::@1/(byte) divr8u::rem#1 divr8u::@4/(byte) divr8u::rem#2 )
[212] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte) 1
[213] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte) 1
[214] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3
to:divr8u::@5
divr8u::@5: scope:[divr8u] from divr8u::@2
[213] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1
[214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0
[215] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1
[216] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0
to:divr8u::@3
divr8u::@3: scope:[divr8u] from divr8u::@2 divr8u::@5
[215] (byte) divr8u::return#1 ← phi( divr8u::@2/(byte) divr8u::quotient#1 divr8u::@5/(byte) divr8u::quotient#2 )
[215] (byte) divr8u::rem#10 ← phi( divr8u::@2/(byte) divr8u::rem#5 divr8u::@5/(byte) divr8u::rem#3 )
[216] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2
[217] if((byte) divr8u::i#1!=(byte) 8) goto divr8u::@1
[217] (byte) divr8u::return#1 ← phi( divr8u::@2/(byte) divr8u::quotient#1 divr8u::@5/(byte) divr8u::quotient#2 )
[217] (byte) divr8u::rem#10 ← phi( divr8u::@2/(byte) divr8u::rem#5 divr8u::@5/(byte) divr8u::rem#3 )
[218] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2
[219] if((byte) divr8u::i#1!=(byte) 8) goto divr8u::@1
to:divr8u::@6
divr8u::@6: scope:[divr8u] from divr8u::@3
[218] (byte) rem8u#17 ← (byte) divr8u::rem#10
[220] (byte) rem8u#17 ← (byte) divr8u::rem#10
to:divr8u::@return
divr8u::@return: scope:[divr8u] from divr8u::@6
[219] return
[221] return
to:@return
test_16u: scope:[test_16u] from main::@2
[220] phi()
[222] phi()
to:test_16u::@1
test_16u::@1: scope:[test_16u] from test_16u test_16u::@10
[221] (byte) test_16u::i#10 ← phi( test_16u/(byte) 0 test_16u::@10/(byte) test_16u::i#1 )
[222] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1
[223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11)
[224] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11)
[225] (word) div16u::dividend#0 ← (word) test_16u::dividend#0
[226] (word) div16u::divisor#0 ← (word) test_16u::divisor#0
[227] call div16u
[228] (word) div16u::return#2 ← (word) div16u::return#0
[223] (byte) test_16u::i#10 ← phi( test_16u/(byte) 0 test_16u::@10/(byte) test_16u::i#1 )
[224] (byte~) test_16u::$11 ← (byte) test_16u::i#10 << (byte) 1
[225] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte~) test_16u::$11)
[226] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte~) test_16u::$11)
[227] (word) div16u::dividend#0 ← (word) test_16u::dividend#0
[228] (word) div16u::divisor#0 ← (word) test_16u::divisor#0
[229] call div16u
[230] (word) div16u::return#2 ← (word) div16u::return#0
to:test_16u::@2
test_16u::@2: scope:[test_16u] from test_16u::@1
[229] (word) test_16u::res#0 ← (word) div16u::return#2
[230] (word) print_word::w#1 ← (word) test_16u::dividend#0
[231] (byte*~) print_char_cursor#172 ← (byte*) print_line_cursor#1
[232] call print_word
[231] (word) test_16u::res#0 ← (word) div16u::return#2
[232] (word) print_word::w#1 ← (word) test_16u::dividend#0
[233] (byte*~) print_char_cursor#173 ← (byte*) print_line_cursor#1
[234] call print_word
to:test_16u::@3
test_16u::@3: scope:[test_16u] from test_16u::@2
[233] phi()
[234] call print_str
[235] phi()
[236] call print_str
to:test_16u::@4
test_16u::@4: scope:[test_16u] from test_16u::@3
[235] (word) print_word::w#2 ← (word) test_16u::divisor#0
[236] call print_word
[237] (word) print_word::w#2 ← (word) test_16u::divisor#0
[238] call print_word
to:test_16u::@5
test_16u::@5: scope:[test_16u] from test_16u::@4
[237] phi()
[238] call print_str
[239] phi()
[240] call print_str
to:test_16u::@6
test_16u::@6: scope:[test_16u] from test_16u::@5
[239] (word) print_word::w#3 ← (word) test_16u::res#0
[240] call print_word
[241] (word) print_word::w#3 ← (word) test_16u::res#0
[242] call print_word
to:test_16u::@7
test_16u::@7: scope:[test_16u] from test_16u::@6
[241] phi()
[242] call print_str
[243] phi()
[244] call print_str
to:test_16u::@8
test_16u::@8: scope:[test_16u] from test_16u::@7
[243] (word) print_word::w#4 ← (word) rem16u#1
[244] call print_word
[245] (word) print_word::w#4 ← (word) rem16u#1
[246] call print_word
to:test_16u::@9
test_16u::@9: scope:[test_16u] from test_16u::@8
[245] phi()
[246] call print_ln
[247] phi()
[248] call print_ln
to:test_16u::@10
test_16u::@10: scope:[test_16u] from test_16u::@9
[247] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10
[248] if((byte) test_16u::i#1!=(byte) 6) goto test_16u::@1
[249] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10
[250] if((byte) test_16u::i#1!=(byte) 6) goto test_16u::@1
to:test_16u::@return
test_16u::@return: scope:[test_16u] from test_16u::@10
[249] return
[251] return
to:@return
div16u: scope:[div16u] from test_16u::@1
[250] (word) divr16u::dividend#1 ← (word) div16u::dividend#0
[251] (word) divr16u::divisor#0 ← (word) div16u::divisor#0
[252] call divr16u
[253] (word) divr16u::return#2 ← (word) divr16u::return#0
[252] (word) divr16u::dividend#1 ← (word) div16u::dividend#0
[253] (word) divr16u::divisor#0 ← (word) div16u::divisor#0
[254] call divr16u
[255] (word) divr16u::return#2 ← (word) divr16u::return#0
to:div16u::@1
div16u::@1: scope:[div16u] from div16u
[254] (word) div16u::return#0 ← (word) divr16u::return#2
[256] (word) div16u::return#0 ← (word) divr16u::return#2
to:div16u::@return
div16u::@return: scope:[div16u] from div16u::@1
[255] return
[257] return
to:@return
test_8u: scope:[test_8u] from main::@1
[256] phi()
[258] phi()
to:test_8u::@1
test_8u::@1: scope:[test_8u] from test_8u test_8u::@11
[257] (byte*) print_line_cursor#41 ← phi( test_8u/(byte*) 1024 test_8u::@11/(byte*) print_line_cursor#1 )
[257] (byte*) print_char_cursor#138 ← phi( test_8u/(byte*) 1024 test_8u::@11/(byte*~) print_char_cursor#188 )
[257] (byte) test_8u::i#10 ← phi( test_8u/(byte) 0 test_8u::@11/(byte) test_8u::i#1 )
[258] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10)
[259] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10)
[260] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0
[261] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0
[262] call div8u
[263] (byte) div8u::return#3 ← (byte) div8u::return#0
[259] (byte*) print_line_cursor#41 ← phi( test_8u/(byte*) 1024 test_8u::@11/(byte*) print_line_cursor#1 )
[259] (byte*) print_char_cursor#141 ← phi( test_8u/(byte*) 1024 test_8u::@11/(byte*~) print_char_cursor#190 )
[259] (byte) test_8u::i#10 ← phi( test_8u/(byte) 0 test_8u::@11/(byte) test_8u::i#1 )
[260] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10)
[261] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10)
[262] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0
[263] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0
[264] call div8u
[265] (byte) div8u::return#3 ← (byte) div8u::return#0
to:test_8u::@2
test_8u::@2: scope:[test_8u] from test_8u::@1
[264] (byte) test_8u::res#0 ← (byte) div8u::return#3
[265] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0
[266] call print_byte
[266] (byte) test_8u::res#0 ← (byte) div8u::return#3
[267] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0
[268] call print_byte
to:test_8u::@3
test_8u::@3: scope:[test_8u] from test_8u::@2
[267] phi()
[268] call print_str
[269] phi()
[270] call print_str
to:test_8u::@4
test_8u::@4: scope:[test_8u] from test_8u::@3
[269] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0
[270] call print_byte
[271] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0
[272] call print_byte
to:test_8u::@5
test_8u::@5: scope:[test_8u] from test_8u::@4
[271] phi()
[272] call print_str
[273] phi()
[274] call print_str
to:test_8u::@6
test_8u::@6: scope:[test_8u] from test_8u::@5
[273] (byte) print_byte::b#5 ← (byte) test_8u::res#0
[274] call print_byte
[275] (byte) print_byte::b#5 ← (byte) test_8u::res#0
[276] call print_byte
to:test_8u::@7
test_8u::@7: scope:[test_8u] from test_8u::@6
[275] phi()
[276] call print_str
[277] phi()
[278] call print_str
to:test_8u::@8
test_8u::@8: scope:[test_8u] from test_8u::@7
[277] (byte) print_byte::b#6 ← (byte) rem8u#17
[278] call print_byte
[279] (byte) print_byte::b#6 ← (byte) rem8u#17
[280] call print_byte
to:test_8u::@9
test_8u::@9: scope:[test_8u] from test_8u::@8
[279] phi()
[280] call print_ln
[281] phi()
[282] call print_ln
to:test_8u::@10
test_8u::@10: scope:[test_8u] from test_8u::@9
[281] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10
[282] if((byte) test_8u::i#1!=(byte) 6) goto test_8u::@11
[283] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10
[284] if((byte) test_8u::i#1!=(byte) 6) goto test_8u::@11
to:test_8u::@return
test_8u::@return: scope:[test_8u] from test_8u::@10
[283] return
[285] return
to:@return
test_8u::@11: scope:[test_8u] from test_8u::@10
[284] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1
[286] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1
to:test_8u::@1
print_cls: scope:[print_cls] from main
[285] phi()
[287] phi()
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
[286] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
[287] *((byte*) print_cls::sc#2) ← (byte) ' '
[288] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[289] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1
[288] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
[289] *((byte*) print_cls::sc#2) ← (byte) ' '
[290] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[291] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
[290] return
[292] return
to:@return

File diff suppressed because one or more lines are too long

View File

@ -194,35 +194,34 @@
(label) print_byte::@1
(label) print_byte::@return
(byte) print_byte::b
(byte) print_byte::b#0 b zp ZP_BYTE:7 4.0
(byte) print_byte::b#1 b zp ZP_BYTE:7 4.0
(byte) print_byte::b#2 b zp ZP_BYTE:7 4.0
(byte) print_byte::b#3 b zp ZP_BYTE:7 22.0
(byte) print_byte::b#4 b zp ZP_BYTE:7 22.0
(byte) print_byte::b#5 b zp ZP_BYTE:7 22.0
(byte) print_byte::b#6 b zp ZP_BYTE:7 22.0
(byte) print_byte::b#7 b zp ZP_BYTE:7 13.5
(byte) print_byte::b#0 b zp ZP_BYTE:9 4.0
(byte) print_byte::b#1 b zp ZP_BYTE:9 4.0
(byte) print_byte::b#2 b zp ZP_BYTE:9 4.0
(byte) print_byte::b#3 b zp ZP_BYTE:9 22.0
(byte) print_byte::b#4 b zp ZP_BYTE:9 22.0
(byte) print_byte::b#5 b zp ZP_BYTE:9 22.0
(byte) print_byte::b#6 b zp ZP_BYTE:9 22.0
(byte) print_byte::b#7 b zp ZP_BYTE:9 13.5
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#3 reg byte a 4.0
(byte) print_char::ch#4 reg byte a 4.0
(byte) print_char::ch#5 reg byte a 6.0
(byte) print_char::ch#5 reg byte a 4.0
(byte) print_char::ch#6 reg byte a 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:8 101.0
(byte*) print_char_cursor#128 print_char_cursor zp ZP_WORD:8 15.607142857142856
(byte*) print_char_cursor#130 print_char_cursor zp ZP_WORD:8 3.0
(byte*) print_char_cursor#131 print_char_cursor zp ZP_WORD:8 15.999999999999998
(byte*) print_char_cursor#132 print_char_cursor zp ZP_WORD:8 12.0
(byte*) print_char_cursor#135 print_char_cursor zp ZP_WORD:8 24.0
(byte*) print_char_cursor#136 print_char_cursor zp ZP_WORD:8 17.333333333333332
(byte*) print_char_cursor#138 print_char_cursor zp ZP_WORD:8 2.4444444444444446
(byte*~) print_char_cursor#161 print_char_cursor zp ZP_WORD:8 22.0
(byte*~) print_char_cursor#167 print_char_cursor zp ZP_WORD:8 22.0
(byte*~) print_char_cursor#172 print_char_cursor zp ZP_WORD:8 22.0
(byte*) print_char_cursor#18 print_char_cursor zp ZP_WORD:8 1.9152542372881352
(byte*~) print_char_cursor#188 print_char_cursor zp ZP_WORD:8 22.0
(byte*) print_char_cursor#82 print_char_cursor zp ZP_WORD:8 7.0
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:7 101.0
(byte*) print_char_cursor#130 print_char_cursor zp ZP_WORD:7 15.607142857142856
(byte*) print_char_cursor#132 print_char_cursor zp ZP_WORD:7 12.0
(byte*) print_char_cursor#135 print_char_cursor zp ZP_WORD:7 12.0
(byte*) print_char_cursor#138 print_char_cursor zp ZP_WORD:7 24.0
(byte*) print_char_cursor#139 print_char_cursor zp ZP_WORD:7 17.333333333333332
(byte*) print_char_cursor#141 print_char_cursor zp ZP_WORD:7 2.4444444444444446
(byte*~) print_char_cursor#164 print_char_cursor zp ZP_WORD:7 22.0
(byte*~) print_char_cursor#168 print_char_cursor zp ZP_WORD:7 22.0
(byte*~) print_char_cursor#173 print_char_cursor zp ZP_WORD:7 22.0
(byte*) print_char_cursor#19 print_char_cursor zp ZP_WORD:7 1.8225806451612903
(byte*~) print_char_cursor#190 print_char_cursor zp ZP_WORD:7 22.0
(byte*) print_char_cursor#84 print_char_cursor zp ZP_WORD:7 8.0
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
@ -246,13 +245,13 @@
(label) print_sbyte::@4
(label) print_sbyte::@return
(signed byte) print_sbyte::b
(signed byte) print_sbyte::b#0 b zp ZP_BYTE:7 4.0
(signed byte) print_sbyte::b#1 b zp ZP_BYTE:7 11.0
(signed byte) print_sbyte::b#10 b zp ZP_BYTE:7 8.333333333333332
(signed byte) print_sbyte::b#2 b zp ZP_BYTE:7 22.0
(signed byte) print_sbyte::b#3 b zp ZP_BYTE:7 22.0
(signed byte) print_sbyte::b#4 b zp ZP_BYTE:7 22.0
(signed byte) print_sbyte::b#7 b zp ZP_BYTE:7 4.0
(signed byte) print_sbyte::b#0 b zp ZP_BYTE:9 4.0
(signed byte) print_sbyte::b#1 b zp ZP_BYTE:9 11.0
(signed byte) print_sbyte::b#10 b zp ZP_BYTE:9 8.333333333333332
(signed byte) print_sbyte::b#2 b zp ZP_BYTE:9 22.0
(signed byte) print_sbyte::b#3 b zp ZP_BYTE:9 22.0
(signed byte) print_sbyte::b#4 b zp ZP_BYTE:9 22.0
(signed byte) print_sbyte::b#7 b zp ZP_BYTE:9 4.0
(byte*) print_screen
(void()) print_str((byte*) print_str::str)
(label) print_str::@1
@ -266,15 +265,16 @@
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:5 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:5 11.0
(signed word) print_sword::w#10 w zp ZP_WORD:5 8.333333333333332
(signed word) print_sword::w#2 w zp ZP_WORD:5 22.0
(signed word) print_sword::w#3 w zp ZP_WORD:5 22.0
(signed word) print_sword::w#4 w zp ZP_WORD:5 22.0
(signed word) print_sword::w#5 w zp ZP_WORD:5 12.5
(signed word) print_sword::w#6 w zp ZP_WORD:5 4.0
(signed word) print_sword::w#7 w zp ZP_WORD:5 4.0
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
@ -365,7 +365,7 @@
(label) test_8s::@9
(label) test_8s::@return
(signed byte) test_8s::dividend
(signed byte) test_8s::dividend#0 dividend zp ZP_BYTE:7 4.714285714285714
(signed byte) test_8s::dividend#0 dividend zp ZP_BYTE:9 4.714285714285714
(signed byte[]) test_8s::dividends
(const signed byte[]) test_8s::dividends#0 dividends = { (signed byte) $7f, (signed byte) -$7f, (signed byte) -$7f, (signed byte) $7f, (signed byte) $7f, (signed byte) $7f }
(signed byte) test_8s::divisor
@ -391,7 +391,7 @@
(label) test_8u::@9
(label) test_8u::@return
(byte) test_8u::dividend
(byte) test_8u::dividend#0 dividend zp ZP_BYTE:7 4.714285714285714
(byte) test_8u::dividend#0 dividend zp ZP_BYTE:9 4.714285714285714
(byte[]) test_8u::dividends
(const byte[]) test_8u::dividends#0 dividends = { (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff }
(byte) test_8u::divisor
@ -406,10 +406,10 @@
zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ]
zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ]
zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 div16s::dividend#0 test_16u::dividend#0 div16u::dividend#0 ]
zp ZP_BYTE:7 [ print_byte::b#7 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_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 test_8u::dividend#0 test_8s::dividend#0 ]
reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ]
zp ZP_WORD:8 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#161 print_char_cursor#128 print_char_cursor#18 print_char_cursor#172 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#167 print_char_cursor#188 ]
zp ZP_WORD:5 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_word::w#5 print_word::w#0 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 div16s::dividend#0 test_16u::dividend#0 div16u::dividend#0 ]
reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
zp ZP_WORD:7 [ print_char_cursor#138 print_char_cursor#84 print_char_cursor#139 print_char_cursor#19 print_char_cursor#135 print_char_cursor#132 print_char_cursor#164 print_char_cursor#130 print_char_cursor#173 print_char_cursor#141 print_char_cursor#1 print_char_cursor#168 print_char_cursor#190 ]
zp ZP_BYTE:9 [ print_byte::b#7 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_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 test_8u::dividend#0 test_8s::dividend#0 ]
zp ZP_WORD:10 [ print_str::str#13 print_str::str#15 print_str::str#0 ]
zp ZP_WORD:12 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 divr16s::dividend#0 divr16s::dividendu#1 ]
zp ZP_WORD:14 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 divr16s::divisor#0 divr16s::divisoru#1 test_16u::divisor#0 div16u::divisor#0 ]

View File

@ -319,7 +319,13 @@ print_char: {
print_sword: {
.label w = 3
lda w+1
bpl b1
bmi b1
lda #' '
jsr print_char
b2:
jsr print_word
rts
b1:
lda #'-'
jsr print_char
sec
@ -329,9 +335,7 @@ print_sword: {
lda #0
sbc w+1
sta w+1
b1:
jsr print_word
rts
jmp b2
}
// Fast multiply two signed words to a signed double word result
// Fixes offsets introduced by using unsigned multiplication

View File

@ -27,13 +27,13 @@ main::@return: scope:[main] from main::@3
[12] return
to:@return
mul16s_compare: scope:[mul16s_compare] from main::@3
[13] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1
[13] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1
to:mul16s_compare::@1
mul16s_compare::@1: scope:[mul16s_compare] from mul16s_compare mul16s_compare::@8
[14] (byte) mul16s_compare::i#12 ← phi( mul16s_compare/(byte) 0 mul16s_compare::@8/(byte) mul16s_compare::i#1 )
[14] (signed word) mul16s_compare::b#6 ← phi( mul16s_compare/(signed word) -$7fff mul16s_compare::@8/(signed word) mul16s_compare::b#1 )
[14] (signed word) mul16s_compare::a#6 ← phi( mul16s_compare/(signed word) -$7fff mul16s_compare::@8/(signed word) mul16s_compare::a#1 )
[14] (byte*) print_char_cursor#143 ← phi( mul16s_compare/(byte*~) print_char_cursor#218 mul16s_compare::@8/(byte*) print_char_cursor#128 )
[14] (byte*) print_char_cursor#146 ← phi( mul16s_compare/(byte*~) print_char_cursor#220 mul16s_compare::@8/(byte*) print_char_cursor#130 )
[15] call print_str
to:mul16s_compare::@2
mul16s_compare::@2: scope:[mul16s_compare] from mul16s_compare::@1 mul16s_compare::@5
@ -104,7 +104,7 @@ mul16s_compare::@9: scope:[mul16s_compare] from mul16s_compare::@8
[54] call print_ln
to:mul16s_compare::@13
mul16s_compare::@13: scope:[mul16s_compare] from mul16s_compare::@9
[55] (byte*~) print_char_cursor#177 ← (byte*) print_line_cursor#1
[55] (byte*~) print_char_cursor#180 ← (byte*) print_line_cursor#1
[56] call print_str
to:mul16s_compare::@14
mul16s_compare::@14: scope:[mul16s_compare] from mul16s_compare::@13
@ -112,23 +112,23 @@ mul16s_compare::@14: scope:[mul16s_compare] from mul16s_compare::@13
[58] call print_ln
to:mul16s_compare::@return
print_ln: scope:[print_ln] from mul16s_compare::@14 mul16s_compare::@9 mul16s_error::@10 mul16u_compare::@14 mul16u_compare::@9 mul16u_error::@10
[59] (byte*) print_char_cursor#129 ← phi( mul16s_compare::@9/(byte*) print_char_cursor#128 mul16s_compare::@14/(byte*) print_char_cursor#128 mul16s_error::@10/(byte*) print_char_cursor#20 mul16u_compare::@9/(byte*) print_char_cursor#128 mul16u_compare::@14/(byte*) print_char_cursor#128 mul16u_error::@10/(byte*) print_char_cursor#20 )
[59] (byte*) print_char_cursor#131 ← phi( mul16s_compare::@9/(byte*) print_char_cursor#130 mul16s_compare::@14/(byte*) print_char_cursor#130 mul16s_error::@10/(byte*) print_char_cursor#21 mul16u_compare::@9/(byte*) print_char_cursor#130 mul16u_compare::@14/(byte*) print_char_cursor#130 mul16u_error::@10/(byte*) print_char_cursor#21 )
[59] (byte*) print_line_cursor#43 ← phi( mul16s_compare::@9/(byte*) print_line_cursor#1 mul16s_compare::@14/(byte*) print_line_cursor#1 mul16s_error::@10/(byte*) print_line_cursor#1 mul16u_compare::@9/(byte*) 1024 mul16u_compare::@14/(byte*) print_line_cursor#1 mul16u_error::@10/(byte*) 1024 )
to:print_ln::@1
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
[60] (byte*) print_line_cursor#22 ← phi( print_ln/(byte*) print_line_cursor#43 print_ln::@1/(byte*) print_line_cursor#1 )
[61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte) $28
[62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1
[62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#131) goto print_ln::@1
to:print_ln::@return
print_ln::@return: scope:[print_ln] from print_ln::@1
[63] return
to:@return
print_str: scope:[print_str] from mul16s_compare::@1 mul16s_compare::@13 mul16s_error mul16s_error::@2 mul16s_error::@4 mul16s_error::@6 mul16s_error::@8 mul16u_compare::@1 mul16u_compare::@13 mul16u_error mul16u_error::@2 mul16u_error::@4 mul16u_error::@6 mul16u_error::@8
[64] (byte*) print_char_cursor#148 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#143 mul16s_compare::@13/(byte*~) print_char_cursor#177 mul16s_error/(byte*) print_char_cursor#128 mul16s_error::@2/(byte*) print_char_cursor#20 mul16s_error::@4/(byte*) print_char_cursor#20 mul16s_error::@6/(byte*) print_char_cursor#20 mul16s_error::@8/(byte*) print_char_cursor#20 mul16u_compare::@1/(byte*) print_char_cursor#139 mul16u_compare::@13/(byte*~) print_char_cursor#184 mul16u_error/(byte*) print_char_cursor#128 mul16u_error::@2/(byte*) print_char_cursor#20 mul16u_error::@4/(byte*) print_char_cursor#20 mul16u_error::@6/(byte*) print_char_cursor#20 mul16u_error::@8/(byte*) print_char_cursor#20 )
[64] (byte*) print_char_cursor#151 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#146 mul16s_compare::@13/(byte*~) print_char_cursor#180 mul16s_error/(byte*) print_char_cursor#130 mul16s_error::@2/(byte*) print_char_cursor#21 mul16s_error::@4/(byte*) print_char_cursor#21 mul16s_error::@6/(byte*) print_char_cursor#21 mul16s_error::@8/(byte*) print_char_cursor#21 mul16u_compare::@1/(byte*) print_char_cursor#142 mul16u_compare::@13/(byte*~) print_char_cursor#187 mul16u_error/(byte*) print_char_cursor#130 mul16u_error::@2/(byte*) print_char_cursor#21 mul16u_error::@4/(byte*) print_char_cursor#21 mul16u_error::@6/(byte*) print_char_cursor#21 mul16u_error::@8/(byte*) print_char_cursor#21 )
[64] (byte*) print_str::str#17 ← phi( mul16s_compare::@1/(const string) str mul16s_compare::@13/(const string) mul16s_compare::str1 mul16s_error/(const string) mul16s_error::str mul16s_error::@2/(const string) str1 mul16s_error::@4/(const string) str2 mul16s_error::@6/(const string) str3 mul16s_error::@8/(const string) str4 mul16u_compare::@1/(const string) str mul16u_compare::@13/(const string) mul16u_compare::str1 mul16u_error/(const string) mul16u_error::str mul16u_error::@2/(const string) str1 mul16u_error::@4/(const string) str2 mul16u_error::@6/(const string) str3 mul16u_error::@8/(const string) str4 )
to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2
[65] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#148 print_str::@2/(byte*) print_char_cursor#1 )
[65] (byte*) print_char_cursor#130 ← phi( print_str/(byte*) print_char_cursor#151 print_str::@2/(byte*) print_char_cursor#1 )
[65] (byte*) print_str::str#15 ← phi( print_str/(byte*) print_str::str#17 print_str::@2/(byte*) print_str::str#0 )
[66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2
to:print_str::@return
@ -136,8 +136,8 @@ print_str::@return: scope:[print_str] from print_str::@1
[67] return
to:@return
print_str::@2: scope:[print_str] from print_str::@1
[68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15)
[69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128
[68] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#15)
[69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130
[70] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#15
to:print_str::@1
mul16s_error: scope:[mul16s_error] from mul16s_compare::@7
@ -199,7 +199,7 @@ print_sdword::@3: scope:[print_sdword] from print_sdword::@2
[98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4
to:print_sdword::@1
print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@3
[99] (byte*) print_char_cursor#134 ← phi( print_sdword/(byte*) print_char_cursor#128 print_sdword::@3/(byte*) print_char_cursor#20 )
[99] (byte*) print_char_cursor#137 ← phi( print_sdword/(byte*) print_char_cursor#130 print_sdword::@3/(byte*) print_char_cursor#21 )
[99] (signed dword) print_sdword::dw#5 ← phi( print_sdword/(signed dword) print_sdword::dw#4 print_sdword::@3/(signed dword) print_sdword::dw#0 )
[100] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5
[101] call print_dword
@ -208,7 +208,7 @@ print_sdword::@return: scope:[print_sdword] from print_sdword::@1
[102] return
to:@return
print_dword: scope:[print_dword] from mul16u_error::@5 mul16u_error::@7 mul16u_error::@9 print_sdword::@1
[103] (byte*) print_char_cursor#133 ← phi( mul16u_error::@5/(byte*) print_char_cursor#128 mul16u_error::@7/(byte*) print_char_cursor#128 mul16u_error::@9/(byte*) print_char_cursor#128 print_sdword::@1/(byte*) print_char_cursor#134 )
[103] (byte*) print_char_cursor#136 ← phi( mul16u_error::@5/(byte*) print_char_cursor#130 mul16u_error::@7/(byte*) print_char_cursor#130 mul16u_error::@9/(byte*) print_char_cursor#130 print_sdword::@1/(byte*) print_char_cursor#137 )
[103] (dword) print_dword::dw#4 ← phi( mul16u_error::@5/(dword) print_dword::dw#1 mul16u_error::@7/(dword) print_dword::dw#2 mul16u_error::@9/(dword) print_dword::dw#3 print_sdword::@1/(dword) print_dword::dw#0 )
[104] (word) print_word::w#1 ← > (dword) print_dword::dw#4
[105] call print_word
@ -220,9 +220,9 @@ print_dword::@1: scope:[print_dword] from print_dword
print_dword::@return: scope:[print_dword] from print_dword::@1
[108] return
to:@return
print_word: scope:[print_word] from mul16u_error::@1 mul16u_error::@3 print_dword print_dword::@1 print_sword::@1
[109] (byte*) print_char_cursor#132 ← phi( mul16u_error::@1/(byte*) print_char_cursor#128 mul16u_error::@3/(byte*) print_char_cursor#128 print_dword/(byte*) print_char_cursor#133 print_dword::@1/(byte*) print_char_cursor#20 print_sword::@1/(byte*) print_char_cursor#130 )
[109] (word) print_word::w#5 ← phi( mul16u_error::@1/(word) print_word::w#3 mul16u_error::@3/(word) print_word::w#4 print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@1/(word) print_word::w#0 )
print_word: scope:[print_word] from mul16u_error::@1 mul16u_error::@3 print_dword print_dword::@1 print_sword::@2
[109] (byte*) print_char_cursor#135 ← phi( mul16u_error::@1/(byte*) print_char_cursor#130 mul16u_error::@3/(byte*) print_char_cursor#130 print_dword/(byte*) print_char_cursor#136 print_dword::@1/(byte*) print_char_cursor#21 print_sword::@2/(byte*) print_char_cursor#21 )
[109] (word) print_word::w#5 ← phi( mul16u_error::@1/(word) print_word::w#3 mul16u_error::@3/(word) print_word::w#4 print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 )
[110] (byte) print_byte::b#0 ← > (word) print_word::w#5
[111] call print_byte
to:print_word::@1
@ -234,385 +234,388 @@ print_word::@return: scope:[print_word] from print_word::@1
[114] return
to:@return
print_byte: scope:[print_byte] from print_word print_word::@1
[115] (byte*) print_char_cursor#136 ← phi( print_word/(byte*) print_char_cursor#132 print_word::@1/(byte*) print_char_cursor#20 )
[115] (byte*) print_char_cursor#139 ← phi( print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#21 )
[115] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
[116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
[117] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[117] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[118] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
[120] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[120] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[121] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[122] return
to:@return
print_char: scope:[print_char] from print_byte print_byte::@1 print_sdword::@2 print_sword::@2
[123] (byte*) print_char_cursor#84 ← phi( print_byte/(byte*) print_char_cursor#136 print_byte::@1/(byte*) print_char_cursor#20 print_sdword::@2/(byte*) print_char_cursor#128 print_sword::@2/(byte*) print_char_cursor#128 )
[123] (byte) print_char::ch#4 ← phi( print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sdword::@2/(byte) '-' print_sword::@2/(byte) '-' )
[124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4
[125] (byte*) print_char_cursor#20 ← ++ (byte*) print_char_cursor#84
print_char: scope:[print_char] from print_byte print_byte::@1 print_sdword::@2 print_sword::@1 print_sword::@3
[123] (byte*) print_char_cursor#86 ← phi( print_byte/(byte*) print_char_cursor#139 print_byte::@1/(byte*) print_char_cursor#21 print_sdword::@2/(byte*) print_char_cursor#130 print_sword::@1/(byte*) print_char_cursor#130 print_sword::@3/(byte*) print_char_cursor#130 )
[123] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sdword::@2/(byte) '-' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' )
[124] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5
[125] (byte*) print_char_cursor#21 ← ++ (byte*) print_char_cursor#86
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[126] return
to:@return
print_sword: scope:[print_sword] from mul16s_error::@1 mul16s_error::@3
[127] (signed word) print_sword::w#3 ← phi( mul16s_error::@1/(signed word) print_sword::w#1 mul16s_error::@3/(signed word) print_sword::w#2 )
[128] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword
[128] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword
[129] phi()
[130] call print_char
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword::@2
[131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3
to:print_sword::@1
print_sword::@1: scope:[print_sword] from print_sword print_sword::@3
[132] (byte*) print_char_cursor#130 ← phi( print_sword/(byte*) print_char_cursor#128 print_sword::@3/(byte*) print_char_cursor#20 )
[132] (signed word) print_sword::w#4 ← phi( print_sword/(signed word) print_sword::w#3 print_sword::@3/(signed word) print_sword::w#0 )
[133] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4
[134] call print_word
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4
[131] (signed word) print_sword::w#5 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#3 )
[132] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5
[133] call print_word
to:print_sword::@return
print_sword::@return: scope:[print_sword] from print_sword::@1
[135] return
print_sword::@return: scope:[print_sword] from print_sword::@2
[134] return
to:@return
print_sword::@1: scope:[print_sword] from print_sword
[135] phi()
[136] call print_char
to:print_sword::@4
print_sword::@4: scope:[print_sword] from print_sword::@1
[137] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3
to:print_sword::@2
mulf16s: scope:[mulf16s] from mul16s_compare::@11
[136] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0
[137] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0
[138] call mulf16u
[139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0
[138] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0
[139] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0
[140] call mulf16u
[141] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0
to:mulf16s::@5
mulf16s::@5: scope:[mulf16s] from mulf16s
[140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2
[141] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1
[142] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2
[143] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1
to:mulf16s::@3
mulf16s::@3: scope:[mulf16s] from mulf16s::@5
[142] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0
[143] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0
[144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16
[144] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0
[145] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0
[146] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16
to:mulf16s::@1
mulf16s::@1: scope:[mulf16s] from mulf16s::@3 mulf16s::@5
[145] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 )
[146] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2
[147] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 )
[148] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2
to:mulf16s::@4
mulf16s::@4: scope:[mulf16s] from mulf16s::@1
[147] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5
[148] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0
[149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17
[149] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5
[150] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0
[151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17
to:mulf16s::@2
mulf16s::@2: scope:[mulf16s] from mulf16s::@1 mulf16s::@4
[150] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 )
[151] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4
[152] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 )
[153] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4
to:mulf16s::@return
mulf16s::@return: scope:[mulf16s] from mulf16s::@2
[152] return
[154] return
to:@return
mulf16u: scope:[mulf16u] from mul16u_compare::@11 mulf16s
[153] (word) mulf16u::b#2 ← phi( mul16u_compare::@11/(word) mulf16u::b#1 mulf16s/(word) mulf16u::b#0 )
[153] (word) mulf16u::a#2 ← phi( mul16u_compare::@11/(word) mulf16u::a#1 mulf16s/(word) mulf16u::a#0 )
[154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2
[155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2
[155] (word) mulf16u::b#2 ← phi( mul16u_compare::@11/(word) mulf16u::b#1 mulf16s/(word) mulf16u::b#0 )
[155] (word) mulf16u::a#2 ← phi( mul16u_compare::@11/(word) mulf16u::a#1 mulf16s/(word) mulf16u::a#0 )
[156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2
[157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2
asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: }
[157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0)
[159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0)
to:mulf16u::@return
mulf16u::@return: scope:[mulf16u] from mulf16u
[158] return
[160] return
to:@return
mul16s: scope:[mul16s] from mul16s_compare::@10
[159] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0
[160] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0
[161] call mul16u
[162] (dword) mul16u::return#2 ← (dword) mul16u::res#2
[161] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0
[162] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0
[163] call mul16u
[164] (dword) mul16u::return#2 ← (dword) mul16u::res#2
to:mul16s::@5
mul16s::@5: scope:[mul16s] from mul16s
[163] (dword) mul16s::m#0 ← (dword) mul16u::return#2
[164] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1
[165] (dword) mul16s::m#0 ← (dword) mul16u::return#2
[166] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1
to:mul16s::@3
mul16s::@3: scope:[mul16s] from mul16s::@5
[165] (word~) mul16s::$9 ← > (dword) mul16s::m#0
[166] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0
[167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
[167] (word~) mul16s::$9 ← > (dword) mul16s::m#0
[168] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0
[169] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
to:mul16s::@1
mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@5
[168] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 )
[169] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2
[170] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 )
[171] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2
to:mul16s::@4
mul16s::@4: scope:[mul16s] from mul16s::@1
[170] (word~) mul16s::$13 ← > (dword) mul16s::m#5
[171] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0
[172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17
[172] (word~) mul16s::$13 ← > (dword) mul16s::m#5
[173] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0
[174] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17
to:mul16s::@2
mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4
[173] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 )
[174] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4
[175] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 )
[176] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4
to:mul16s::@return
mul16s::@return: scope:[mul16s] from mul16s::@2
[175] return
[177] return
to:@return
mul16u: scope:[mul16u] from mul16s mul16u_compare::@10
[176] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mul16u_compare::@10/(word) mul16u::a#2 )
[176] (dword) mul16u::mb#0 ← phi( mul16s/(word) mul16u::b#0 mul16u_compare::@10/(word) mul16u::b#1 )
[178] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mul16u_compare::@10/(word) mul16u::a#2 )
[178] (dword) mul16u::mb#0 ← phi( mul16s/(word) mul16u::b#0 mul16u_compare::@10/(word) mul16u::b#1 )
to:mul16u::@1
mul16u::@1: scope:[mul16u] from mul16u mul16u::@3
[177] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 )
[177] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 )
[177] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 )
[178] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2
[179] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 )
[179] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 )
[179] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 )
[180] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2
to:mul16u::@return
mul16u::@return: scope:[mul16u] from mul16u::@1
[179] return
[181] return
to:@return
mul16u::@2: scope:[mul16u] from mul16u::@1
[180] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1
[181] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
[182] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1
[183] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
to:mul16u::@4
mul16u::@4: scope:[mul16u] from mul16u::@2
[182] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
[184] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
to:mul16u::@3
mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4
[183] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
[184] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1
[185] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
[185] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
[186] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1
[187] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
to:mul16u::@1
muls16s: scope:[muls16s] from mul16s_compare::@2
[186] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4
[188] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4
to:muls16s::@2
muls16s::@2: scope:[muls16s] from muls16s
[187] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1
[189] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1
to:muls16s::@3
muls16s::@3: scope:[muls16s] from muls16s::@2 muls16s::@3
[188] (signed word) muls16s::j#2 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed word) muls16s::j#1 )
[188] (signed dword) muls16s::m#3 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 )
[189] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0
[190] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2
[191] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3
[190] (signed word) muls16s::j#2 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed word) muls16s::j#1 )
[190] (signed dword) muls16s::m#3 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 )
[191] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0
[192] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2
[193] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3
to:muls16s::@1
muls16s::@1: scope:[muls16s] from muls16s::@2 muls16s::@3 muls16s::@4
[192] (signed dword) muls16s::return#0 ← phi( muls16s::@4/(signed dword) muls16s::m#2 muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 )
[194] (signed dword) muls16s::return#0 ← phi( muls16s::@4/(signed dword) muls16s::m#2 muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 )
to:muls16s::@return
muls16s::@return: scope:[muls16s] from muls16s::@1
[193] return
[195] return
to:@return
muls16s::@4: scope:[muls16s] from muls16s muls16s::@4
[194] (signed word) muls16s::i#2 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed word) muls16s::i#1 )
[194] (signed dword) muls16s::m#5 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed dword) muls16s::m#2 )
[195] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0
[196] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2
[197] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4
[196] (signed word) muls16s::i#2 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed word) muls16s::i#1 )
[196] (signed dword) muls16s::m#5 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed dword) muls16s::m#2 )
[197] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0
[198] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2
[199] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4
to:muls16s::@1
mul16u_compare: scope:[mul16u_compare] from main::@2
[198] phi()
[200] phi()
to:mul16u_compare::@1
mul16u_compare::@1: scope:[mul16u_compare] from mul16u_compare mul16u_compare::@8
[199] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(byte) mul16u_compare::i#1 )
[199] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::b#1 )
[199] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::a#1 )
[199] (byte*) print_char_cursor#139 ← phi( mul16u_compare/(byte*) 1024 mul16u_compare::@8/(byte*) print_char_cursor#128 )
[200] call print_str
[201] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(byte) mul16u_compare::i#1 )
[201] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::b#1 )
[201] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::a#1 )
[201] (byte*) print_char_cursor#142 ← phi( mul16u_compare/(byte*) 1024 mul16u_compare::@8/(byte*) print_char_cursor#130 )
[202] call print_str
to:mul16u_compare::@2
mul16u_compare::@2: scope:[mul16u_compare] from mul16u_compare::@1 mul16u_compare::@5
[201] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 )
[201] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 )
[201] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 )
[202] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b
[203] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd
[204] (word) muls16u::a#0 ← (word) mul16u_compare::a#1
[205] (word) muls16u::b#0 ← (word) mul16u_compare::b#1
[206] call muls16u
[207] (dword) muls16u::return#2 ← (dword) muls16u::return#0
[203] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 )
[203] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 )
[203] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 )
[204] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b
[205] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd
[206] (word) muls16u::a#0 ← (word) mul16u_compare::a#1
[207] (word) muls16u::b#0 ← (word) mul16u_compare::b#1
[208] call muls16u
[209] (dword) muls16u::return#2 ← (dword) muls16u::return#0
to:mul16u_compare::@10
mul16u_compare::@10: scope:[mul16u_compare] from mul16u_compare::@2
[208] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2
[209] (word) mul16u::a#2 ← (word) mul16u_compare::a#1
[210] (word) mul16u::b#1 ← (word) mul16u_compare::b#1
[211] call mul16u
[212] (dword) mul16u::return#3 ← (dword) mul16u::res#2
[210] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2
[211] (word) mul16u::a#2 ← (word) mul16u_compare::a#1
[212] (word) mul16u::b#1 ← (word) mul16u_compare::b#1
[213] call mul16u
[214] (dword) mul16u::return#3 ← (dword) mul16u::res#2
to:mul16u_compare::@11
mul16u_compare::@11: scope:[mul16u_compare] from mul16u_compare::@10
[213] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3
[214] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1
[215] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1
[216] call mulf16u
[217] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0
[215] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3
[216] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1
[217] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1
[218] call mulf16u
[219] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0
to:mul16u_compare::@12
mul16u_compare::@12: scope:[mul16u_compare] from mul16u_compare::@11
[218] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3
[219] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3
[220] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3
[221] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3
to:mul16u_compare::@6
mul16u_compare::@6: scope:[mul16u_compare] from mul16u_compare::@12
[220] phi()
[222] phi()
to:mul16u_compare::@3
mul16u_compare::@3: scope:[mul16u_compare] from mul16u_compare::@12 mul16u_compare::@6
[221] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@12/(byte) 1 mul16u_compare::@6/(byte) 0 )
[222] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15
[223] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@12/(byte) 1 mul16u_compare::@6/(byte) 0 )
[224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15
to:mul16u_compare::@4
mul16u_compare::@15: scope:[mul16u_compare] from mul16u_compare::@3
[223] phi()
[225] phi()
to:mul16u_compare::@4
mul16u_compare::@4: scope:[mul16u_compare] from mul16u_compare::@15 mul16u_compare::@3
[224] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@15/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte) 0 )
[225] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5
[226] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@15/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte) 0 )
[227] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5
to:mul16u_compare::@7
mul16u_compare::@7: scope:[mul16u_compare] from mul16u_compare::@4
[226] *((const byte*) BGCOL#0) ← (byte) 2
[227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1
[228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1
[229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0
[230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0
[231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0
[232] call mul16u_error
[228] *((const byte*) BGCOL#0) ← (byte) 2
[229] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1
[230] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1
[231] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0
[232] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0
[233] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0
[234] call mul16u_error
to:mul16u_compare::@return
mul16u_compare::@return: scope:[mul16u_compare] from mul16u_compare::@14 mul16u_compare::@7
[233] return
[235] return
to:@return
mul16u_compare::@5: scope:[mul16u_compare] from mul16u_compare::@4
[234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10
[235] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2
[236] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10
[237] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2
to:mul16u_compare::@8
mul16u_compare::@8: scope:[mul16u_compare] from mul16u_compare::@5
[236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12
[237] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1
[238] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12
[239] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1
to:mul16u_compare::@9
mul16u_compare::@9: scope:[mul16u_compare] from mul16u_compare::@8
[238] phi()
[239] call print_ln
[240] phi()
[241] call print_ln
to:mul16u_compare::@13
mul16u_compare::@13: scope:[mul16u_compare] from mul16u_compare::@9
[240] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1
[241] call print_str
[242] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1
[243] call print_str
to:mul16u_compare::@14
mul16u_compare::@14: scope:[mul16u_compare] from mul16u_compare::@13
[242] phi()
[243] call print_ln
[244] phi()
[245] call print_ln
to:mul16u_compare::@return
mul16u_error: scope:[mul16u_error] from mul16u_compare::@7
[244] phi()
[245] call print_str
[246] phi()
[247] call print_str
to:mul16u_error::@1
mul16u_error::@1: scope:[mul16u_error] from mul16u_error
[246] (word) print_word::w#3 ← (word) mul16u_error::a#0
[247] call print_word
[248] (word) print_word::w#3 ← (word) mul16u_error::a#0
[249] call print_word
to:mul16u_error::@2
mul16u_error::@2: scope:[mul16u_error] from mul16u_error::@1
[248] phi()
[249] call print_str
[250] phi()
[251] call print_str
to:mul16u_error::@3
mul16u_error::@3: scope:[mul16u_error] from mul16u_error::@2
[250] (word) print_word::w#4 ← (word) mul16u_error::b#0
[251] call print_word
[252] (word) print_word::w#4 ← (word) mul16u_error::b#0
[253] call print_word
to:mul16u_error::@4
mul16u_error::@4: scope:[mul16u_error] from mul16u_error::@3
[252] phi()
[253] call print_str
[254] phi()
[255] call print_str
to:mul16u_error::@5
mul16u_error::@5: scope:[mul16u_error] from mul16u_error::@4
[254] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0
[255] call print_dword
[256] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0
[257] call print_dword
to:mul16u_error::@6
mul16u_error::@6: scope:[mul16u_error] from mul16u_error::@5
[256] phi()
[257] call print_str
[258] phi()
[259] call print_str
to:mul16u_error::@7
mul16u_error::@7: scope:[mul16u_error] from mul16u_error::@6
[258] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0
[259] call print_dword
[260] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0
[261] call print_dword
to:mul16u_error::@8
mul16u_error::@8: scope:[mul16u_error] from mul16u_error::@7
[260] phi()
[261] call print_str
[262] phi()
[263] call print_str
to:mul16u_error::@9
mul16u_error::@9: scope:[mul16u_error] from mul16u_error::@8
[262] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0
[263] call print_dword
[264] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0
[265] call print_dword
to:mul16u_error::@10
mul16u_error::@10: scope:[mul16u_error] from mul16u_error::@9
[264] phi()
[265] call print_ln
[266] phi()
[267] call print_ln
to:mul16u_error::@return
mul16u_error::@return: scope:[mul16u_error] from mul16u_error::@10
[266] return
[268] return
to:@return
muls16u: scope:[muls16u] from mul16u_compare::@2
[267] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1
[269] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1
to:muls16u::@2
muls16u::@2: scope:[muls16u] from muls16u muls16u::@2
[268] (word) muls16u::i#2 ← phi( muls16u/(byte) 0 muls16u::@2/(word) muls16u::i#1 )
[268] (dword) muls16u::m#3 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 )
[269] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0
[270] (word) muls16u::i#1 ← ++ (word) muls16u::i#2
[271] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2
[270] (word) muls16u::i#2 ← phi( muls16u/(byte) 0 muls16u::@2/(word) muls16u::i#1 )
[270] (dword) muls16u::m#3 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 )
[271] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0
[272] (word) muls16u::i#1 ← ++ (word) muls16u::i#2
[273] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2
to:muls16u::@1
muls16u::@1: scope:[muls16u] from muls16u muls16u::@2
[272] (dword) muls16u::return#0 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 )
[274] (dword) muls16u::return#0 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 )
to:muls16u::@return
muls16u::@return: scope:[muls16u] from muls16u::@1
[273] return
[275] return
to:@return
mulf_init: scope:[mulf_init] from main::@1
[274] phi()
[276] phi()
to:mulf_init::@1
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2
[275] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::x_2#2 )
[275] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 )
[275] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 )
[275] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@2/(word) mulf_init::sqr#1 )
[275] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::c#1 )
[276] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
[277] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1
[278] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2
[277] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::x_2#2 )
[277] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 )
[277] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 )
[277] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@2/(word) mulf_init::sqr#1 )
[277] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::c#1 )
[278] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
[279] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1
[280] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2
to:mulf_init::@3
mulf_init::@3: scope:[mulf_init] from mulf_init::@1
[279] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
[280] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
[281] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
[282] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
to:mulf_init::@2
mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@3
[281] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@3/(byte) mulf_init::x_2#1 )
[281] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@3/(word) mulf_init::sqr#2 )
[282] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3
[283] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10
[284] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3
[285] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11
[286] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
[287] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
[288] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
[289] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1
[283] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@3/(byte) mulf_init::x_2#1 )
[283] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@3/(word) mulf_init::sqr#2 )
[284] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3
[285] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10
[286] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3
[287] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11
[288] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
[289] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
[290] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
[291] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1
to:mulf_init::@4
mulf_init::@4: scope:[mulf_init] from mulf_init::@2 mulf_init::@5
[290] (byte) mulf_init::dir#2 ← phi( mulf_init::@2/(byte) $ff mulf_init::@5/(byte) mulf_init::dir#3 )
[290] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_hi#0 mulf_init::@5/(byte*) mulf_init::sqr2_hi#1 )
[290] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_lo#0 mulf_init::@5/(byte*) mulf_init::sqr2_lo#1 )
[290] (byte) mulf_init::x_255#2 ← phi( mulf_init::@2/(byte) -1 mulf_init::@5/(byte) mulf_init::x_255#1 )
[291] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
[292] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
[293] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
[294] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
[295] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7
[292] (byte) mulf_init::dir#2 ← phi( mulf_init::@2/(byte) $ff mulf_init::@5/(byte) mulf_init::dir#3 )
[292] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_hi#0 mulf_init::@5/(byte*) mulf_init::sqr2_hi#1 )
[292] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_lo#0 mulf_init::@5/(byte*) mulf_init::sqr2_lo#1 )
[292] (byte) mulf_init::x_255#2 ← phi( mulf_init::@2/(byte) -1 mulf_init::@5/(byte) mulf_init::x_255#1 )
[293] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
[294] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
[295] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
[296] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
[297] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7
to:mulf_init::@5
mulf_init::@7: scope:[mulf_init] from mulf_init::@4
[296] phi()
[298] phi()
to:mulf_init::@5
mulf_init::@5: scope:[mulf_init] from mulf_init::@4 mulf_init::@7
[297] (byte) mulf_init::dir#3 ← phi( mulf_init::@7/(byte) mulf_init::dir#2 mulf_init::@4/(byte) 1 )
[298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
[299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4
[299] (byte) mulf_init::dir#3 ← phi( mulf_init::@7/(byte) mulf_init::dir#2 mulf_init::@4/(byte) 1 )
[300] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
[301] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4
to:mulf_init::@6
mulf_init::@6: scope:[mulf_init] from mulf_init::@5
[300] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100)
[301] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100)
[302] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100)
[303] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100)
to:mulf_init::@return
mulf_init::@return: scope:[mulf_init] from mulf_init::@6
[302] return
[304] return
to:@return
print_cls: scope:[print_cls] from main
[303] phi()
[305] phi()
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
[304] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
[305] *((byte*) print_cls::sc#2) ← (byte) ' '
[306] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[307] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1
[306] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
[307] *((byte*) print_cls::sc#2) ← (byte) ' '
[308] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[309] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
[308] return
[310] return
to:@return

File diff suppressed because one or more lines are too long

View File

@ -334,26 +334,25 @@
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#2 reg byte a 4.0
(byte) print_char::ch#3 reg byte a 4.0
(byte) print_char::ch#4 reg byte a 6.0
(byte) print_char::ch#4 reg byte a 4.0
(byte) print_char::ch#5 reg byte a 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:15 101.0
(byte*) print_char_cursor#128 print_char_cursor zp ZP_WORD:15 3.2454545454545443
(byte*) print_char_cursor#129 print_char_cursor zp ZP_WORD:15 5.75
(byte*) print_char_cursor#130 print_char_cursor zp ZP_WORD:15 3.0
(byte*) print_char_cursor#132 print_char_cursor zp ZP_WORD:15 6.0
(byte*) print_char_cursor#133 print_char_cursor zp ZP_WORD:15 5.0
(byte*) print_char_cursor#134 print_char_cursor zp ZP_WORD:15 3.0
(byte*) print_char_cursor#136 print_char_cursor zp ZP_WORD:15 2.0
(byte*) print_char_cursor#139 print_char_cursor zp ZP_WORD:15 22.0
(byte*) print_char_cursor#143 print_char_cursor zp ZP_WORD:15 24.0
(byte*) print_char_cursor#148 print_char_cursor zp ZP_WORD:15 48.0
(byte*~) print_char_cursor#177 print_char_cursor zp ZP_WORD:15 4.0
(byte*~) print_char_cursor#184 print_char_cursor zp ZP_WORD:15 4.0
(byte*) print_char_cursor#20 print_char_cursor zp ZP_WORD:15 0.7441860465116277
(byte*~) print_char_cursor#218 print_char_cursor zp ZP_WORD:15 4.0
(byte*) print_char_cursor#84 print_char_cursor zp ZP_WORD:15 6.0
(byte*) print_char_cursor#130 print_char_cursor zp ZP_WORD:15 3.2162162162162145
(byte*) print_char_cursor#131 print_char_cursor zp ZP_WORD:15 5.75
(byte*) print_char_cursor#135 print_char_cursor zp ZP_WORD:15 6.0
(byte*) print_char_cursor#136 print_char_cursor zp ZP_WORD:15 5.0
(byte*) print_char_cursor#137 print_char_cursor zp ZP_WORD:15 3.0
(byte*) print_char_cursor#139 print_char_cursor zp ZP_WORD:15 2.0
(byte*) print_char_cursor#142 print_char_cursor zp ZP_WORD:15 22.0
(byte*) print_char_cursor#146 print_char_cursor zp ZP_WORD:15 24.0
(byte*) print_char_cursor#151 print_char_cursor zp ZP_WORD:15 48.0
(byte*~) print_char_cursor#180 print_char_cursor zp ZP_WORD:15 4.0
(byte*~) print_char_cursor#187 print_char_cursor zp ZP_WORD:15 4.0
(byte*) print_char_cursor#21 print_char_cursor zp ZP_WORD:15 0.6956521739130432
(byte*~) print_char_cursor#220 print_char_cursor zp ZP_WORD:15 4.0
(byte*) print_char_cursor#86 print_char_cursor zp ZP_WORD:15 7.0
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
@ -403,13 +402,14 @@
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:3 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:3 4.0
(signed word) print_sword::w#2 w zp ZP_WORD:3 4.0
(signed word) print_sword::w#3 w zp ZP_WORD:3 2.5
(signed word) print_sword::w#4 w zp ZP_WORD:3 4.0
(signed word) print_sword::w#3 w zp ZP_WORD:3 1.6666666666666665
(signed word) print_sword::w#5 w zp ZP_WORD:3 4.0
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
@ -427,7 +427,7 @@
(const string) str4 str4 = (string) " / fast:@"
zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ]
zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 ]
zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 mul16u_error::a#0 ]
zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mulf16s::b#0 mul16s_error::b#0 ]
reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ]
reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ]
@ -435,8 +435,8 @@ zp ZP_WORD:7 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ]
zp ZP_WORD:9 [ print_str::str#15 print_str::str#17 print_str::str#0 ]
zp ZP_DWORD:11 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 muls16s::return#2 muls16u::return#0 muls16u::m#3 muls16u::m#1 muls16u::return#2 ]
reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
zp ZP_WORD:15 [ print_char_cursor#84 print_char_cursor#136 print_char_cursor#132 print_char_cursor#133 print_char_cursor#134 print_char_cursor#148 print_char_cursor#129 print_char_cursor#143 print_char_cursor#218 print_char_cursor#128 print_char_cursor#20 print_char_cursor#177 print_char_cursor#139 print_char_cursor#184 print_char_cursor#1 print_char_cursor#130 ]
reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ]
zp ZP_WORD:15 [ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ]
zp ZP_DWORD:17 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 mul16s_error::mf#0 mul16u_compare::mf#0 mul16u_error::mf#0 ]
zp ZP_WORD:21 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 muls16u::a#0 ]
zp ZP_WORD:23 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#1 muls16u::b#0 mul16u_error::b#0 ]

View File

@ -187,7 +187,13 @@ mul8s_error: {
print_sword: {
.label w = 8
lda w+1
bpl b1
bmi b1
lda #' '
jsr print_char
b2:
jsr print_word
rts
b1:
lda #'-'
jsr print_char
sec
@ -197,8 +203,17 @@ print_sword: {
lda #0
sbc w+1
sta w+1
b1:
jsr print_word
jmp b2
}
// Print a single char
// print_char(byte register(A) ch)
print_char: {
ldy #0
sta (print_char_cursor),y
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
rts
}
// Print a word as HEX
@ -230,17 +245,6 @@ print_byte: {
jsr print_char
rts
}
// Print a single char
// print_char(byte register(A) ch)
print_char: {
ldy #0
sta (print_char_cursor),y
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
rts
}
// Print a signed byte as HEX
// print_sbyte(signed byte register(X) b)
print_sbyte: {

View File

@ -99,7 +99,7 @@ mul8s_compare::@8: scope:[mul8s_compare] from mul8s_compare::@5
[52] if((signed byte) mul8s_compare::a#1!=(signed byte) -$80) goto mul8s_compare::@1
to:mul8s_compare::@9
mul8s_compare::@9: scope:[mul8s_compare] from mul8s_compare::@8
[53] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1
[53] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1
[54] call print_str
to:mul8s_compare::@13
mul8s_compare::@13: scope:[mul8s_compare] from mul8s_compare::@9
@ -107,23 +107,23 @@ mul8s_compare::@13: scope:[mul8s_compare] from mul8s_compare::@9
[56] call print_ln
to:mul8s_compare::@return
print_ln: scope:[print_ln] from mul8s_compare::@13 mul8s_error::@10 mul8u_compare::@13 mul8u_error::@10 mulf_tables_cmp::@8
[57] (byte*) print_char_cursor#133 ← phi( mul8s_compare::@13/(byte*) print_char_cursor#132 mul8s_error::@10/(byte*) print_char_cursor#18 mul8u_compare::@13/(byte*) print_char_cursor#132 mul8u_error::@10/(byte*) print_char_cursor#18 mulf_tables_cmp::@8/(byte*) print_char_cursor#132 )
[57] (byte*) print_char_cursor#135 ← phi( mul8s_compare::@13/(byte*) print_char_cursor#134 mul8s_error::@10/(byte*) print_char_cursor#19 mul8u_compare::@13/(byte*) print_char_cursor#134 mul8u_error::@10/(byte*) print_char_cursor#19 mulf_tables_cmp::@8/(byte*) print_char_cursor#134 )
[57] (byte*) print_line_cursor#45 ← phi( mul8s_compare::@13/(byte*) print_line_cursor#1 mul8s_error::@10/(byte*) print_line_cursor#1 mul8u_compare::@13/(byte*) print_line_cursor#10 mul8u_error::@10/(byte*) print_line_cursor#10 mulf_tables_cmp::@8/(byte*) 1024 )
to:print_ln::@1
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
[58] (byte*) print_line_cursor#23 ← phi( print_ln/(byte*) print_line_cursor#45 print_ln::@1/(byte*) print_line_cursor#1 )
[59] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte) $28
[60] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1
[60] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#135) goto print_ln::@1
to:print_ln::@return
print_ln::@return: scope:[print_ln] from print_ln::@1
[61] return
to:@return
print_str: scope:[print_str] from mul8s_compare::@9 mul8s_error mul8s_error::@2 mul8s_error::@4 mul8s_error::@6 mul8s_error::@8 mul8u_compare::@9 mul8u_error mul8u_error::@2 mul8u_error::@4 mul8u_error::@6 mul8u_error::@8 mulf_tables_cmp::@3 mulf_tables_cmp::@4 mulf_tables_cmp::@6
[62] (byte*) print_char_cursor#152 ← phi( mul8s_compare::@9/(byte*~) print_char_cursor#187 mul8s_error/(byte*~) print_char_cursor#188 mul8s_error::@2/(byte*) print_char_cursor#18 mul8s_error::@4/(byte*) print_char_cursor#18 mul8s_error::@6/(byte*) print_char_cursor#18 mul8s_error::@8/(byte*) print_char_cursor#18 mul8u_compare::@9/(byte*) print_char_cursor#31 mul8u_error/(byte*) print_char_cursor#31 mul8u_error::@2/(byte*) print_char_cursor#18 mul8u_error::@4/(byte*) print_char_cursor#18 mul8u_error::@6/(byte*) print_char_cursor#18 mul8u_error::@8/(byte*) print_char_cursor#18 mulf_tables_cmp::@3/(byte*) 1024 mulf_tables_cmp::@4/(byte*) 1024 mulf_tables_cmp::@6/(byte*) print_char_cursor#18 )
[62] (byte*) print_char_cursor#155 ← phi( mul8s_compare::@9/(byte*~) print_char_cursor#190 mul8s_error/(byte*~) print_char_cursor#191 mul8s_error::@2/(byte*) print_char_cursor#19 mul8s_error::@4/(byte*) print_char_cursor#19 mul8s_error::@6/(byte*) print_char_cursor#19 mul8s_error::@8/(byte*) print_char_cursor#19 mul8u_compare::@9/(byte*) print_char_cursor#32 mul8u_error/(byte*) print_char_cursor#32 mul8u_error::@2/(byte*) print_char_cursor#19 mul8u_error::@4/(byte*) print_char_cursor#19 mul8u_error::@6/(byte*) print_char_cursor#19 mul8u_error::@8/(byte*) print_char_cursor#19 mulf_tables_cmp::@3/(byte*) 1024 mulf_tables_cmp::@4/(byte*) 1024 mulf_tables_cmp::@6/(byte*) print_char_cursor#19 )
[62] (byte*) print_str::str#18 ← phi( mul8s_compare::@9/(const string) mul8s_compare::str mul8s_error/(const string) mul8s_error::str mul8s_error::@2/(const string) str1 mul8s_error::@4/(const string) str2 mul8s_error::@6/(const string) str3 mul8s_error::@8/(const string) str4 mul8u_compare::@9/(const string) mul8u_compare::str mul8u_error/(const string) mul8u_error::str mul8u_error::@2/(const string) str1 mul8u_error::@4/(const string) str2 mul8u_error::@6/(const string) str3 mul8u_error::@8/(const string) str4 mulf_tables_cmp::@3/(const string) mulf_tables_cmp::str mulf_tables_cmp::@4/(const string) mulf_tables_cmp::str2 mulf_tables_cmp::@6/(const string) mulf_tables_cmp::str1 )
to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2
[63] (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#152 print_str::@2/(byte*) print_char_cursor#1 )
[63] (byte*) print_char_cursor#134 ← phi( print_str/(byte*) print_char_cursor#155 print_str::@2/(byte*) print_char_cursor#1 )
[63] (byte*) print_str::str#16 ← phi( print_str/(byte*) print_str::str#18 print_str::@2/(byte*) print_str::str#0 )
[64] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2
to:print_str::@return
@ -131,12 +131,12 @@ print_str::@return: scope:[print_str] from print_str::@1
[65] return
to:@return
print_str::@2: scope:[print_str] from print_str::@1
[66] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16)
[67] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132
[66] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#16)
[67] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134
[68] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16
to:print_str::@1
mul8s_error: scope:[mul8s_error] from mul8s_compare::@7
[69] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1
[69] (byte*~) print_char_cursor#191 ← (byte*) print_line_cursor#1
[70] call print_str
to:mul8s_error::@1
mul8s_error::@1: scope:[mul8s_error] from mul8s_error
@ -184,498 +184,501 @@ mul8s_error::@return: scope:[mul8s_error] from mul8s_error::@10
to:@return
print_sword: scope:[print_sword] from mul8s_error::@5 mul8s_error::@7 mul8s_error::@9
[92] (signed word) print_sword::w#4 ← phi( mul8s_error::@5/(signed word) print_sword::w#1 mul8s_error::@7/(signed word) print_sword::w#2 mul8s_error::@9/(signed word) print_sword::w#3 )
[93] if((signed word) print_sword::w#4>=(signed byte) 0) goto print_sword::@1
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword
[93] if((signed word) print_sword::w#4<(signed byte) 0) goto print_sword::@1
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword
[94] phi()
[95] call print_char
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword::@2
[96] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4
to:print_sword::@1
print_sword::@1: scope:[print_sword] from print_sword print_sword::@3
[97] (byte*) print_char_cursor#134 ← phi( print_sword/(byte*) print_char_cursor#132 print_sword::@3/(byte*) print_char_cursor#18 )
[97] (signed word) print_sword::w#5 ← phi( print_sword/(signed word) print_sword::w#4 print_sword::@3/(signed word) print_sword::w#0 )
[98] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5
[99] call print_word
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4
[96] (signed word) print_sword::w#6 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#4 )
[97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#6
[98] call print_word
to:print_sword::@return
print_sword::@return: scope:[print_sword] from print_sword::@1
[100] return
print_sword::@return: scope:[print_sword] from print_sword::@2
[99] return
to:@return
print_word: scope:[print_word] from mul8u_error::@5 mul8u_error::@7 mul8u_error::@9 mulf_tables_cmp::@5 mulf_tables_cmp::@7 print_sword::@1
[101] (byte*) print_char_cursor#139 ← phi( mul8u_error::@5/(byte*) print_char_cursor#132 mul8u_error::@7/(byte*) print_char_cursor#132 mul8u_error::@9/(byte*) print_char_cursor#132 mulf_tables_cmp::@5/(byte*) print_char_cursor#132 mulf_tables_cmp::@7/(byte*) print_char_cursor#132 print_sword::@1/(byte*) print_char_cursor#134 )
[101] (word) print_word::w#6 ← phi( mul8u_error::@5/(word) print_word::w#3 mul8u_error::@7/(word) print_word::w#4 mul8u_error::@9/(word) print_word::w#5 mulf_tables_cmp::@5/(word) print_word::w#1 mulf_tables_cmp::@7/(word) print_word::w#2 print_sword::@1/(word) print_word::w#0 )
[102] (byte) print_byte::b#1 ← > (word) print_word::w#6
[103] call print_byte
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[104] (byte) print_byte::b#2 ← < (word) print_word::w#6
[105] call print_byte
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[106] return
to:@return
print_byte: scope:[print_byte] from mul8u_error::@1 mul8u_error::@3 print_sbyte::@2 print_word print_word::@1
[107] (byte*) print_char_cursor#140 ← phi( mul8u_error::@1/(byte*) print_char_cursor#132 mul8u_error::@3/(byte*) print_char_cursor#132 print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#139 print_word::@1/(byte*) print_char_cursor#18 )
[107] (byte) print_byte::b#5 ← phi( mul8u_error::@1/(byte) print_byte::b#3 mul8u_error::@3/(byte) print_byte::b#4 print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 )
[108] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4
[109] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[110] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[111] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f
[112] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[113] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[114] return
to:@return
print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2
[115] (byte*) print_char_cursor#84 ← phi( print_byte/(byte*) print_char_cursor#140 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#132 print_sbyte::@3/(byte*) print_char_cursor#132 print_sword::@2/(byte*) print_char_cursor#132 )
[115] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' )
[116] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5
[117] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#84
print_sword::@1: scope:[print_sword] from print_sword
[100] phi()
[101] call print_char
to:print_sword::@4
print_sword::@4: scope:[print_sword] from print_sword::@1
[102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4
to:print_sword::@2
print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@1 print_sword::@3
[103] (byte*) print_char_cursor#86 ← phi( print_byte/(byte*) print_char_cursor#143 print_byte::@1/(byte*) print_char_cursor#19 print_sbyte::@1/(byte*) print_char_cursor#134 print_sbyte::@3/(byte*) print_char_cursor#134 print_sword::@1/(byte*) print_char_cursor#134 print_sword::@3/(byte*) print_char_cursor#134 )
[103] (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' )
[104] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#6
[105] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#86
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[118] return
[106] return
to:@return
print_word: scope:[print_word] from mul8u_error::@5 mul8u_error::@7 mul8u_error::@9 mulf_tables_cmp::@5 mulf_tables_cmp::@7 print_sword::@2
[107] (byte*) print_char_cursor#142 ← phi( mul8u_error::@5/(byte*) print_char_cursor#134 mul8u_error::@7/(byte*) print_char_cursor#134 mul8u_error::@9/(byte*) print_char_cursor#134 mulf_tables_cmp::@5/(byte*) print_char_cursor#134 mulf_tables_cmp::@7/(byte*) print_char_cursor#134 print_sword::@2/(byte*) print_char_cursor#19 )
[107] (word) print_word::w#6 ← phi( mul8u_error::@5/(word) print_word::w#3 mul8u_error::@7/(word) print_word::w#4 mul8u_error::@9/(word) print_word::w#5 mulf_tables_cmp::@5/(word) print_word::w#1 mulf_tables_cmp::@7/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 )
[108] (byte) print_byte::b#1 ← > (word) print_word::w#6
[109] call print_byte
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[110] (byte) print_byte::b#2 ← < (word) print_word::w#6
[111] call print_byte
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[112] return
to:@return
print_byte: scope:[print_byte] from mul8u_error::@1 mul8u_error::@3 print_sbyte::@2 print_word print_word::@1
[113] (byte*) print_char_cursor#143 ← phi( mul8u_error::@1/(byte*) print_char_cursor#134 mul8u_error::@3/(byte*) print_char_cursor#134 print_sbyte::@2/(byte*) print_char_cursor#19 print_word/(byte*) print_char_cursor#142 print_word::@1/(byte*) print_char_cursor#19 )
[113] (byte) print_byte::b#5 ← phi( mul8u_error::@1/(byte) print_byte::b#3 mul8u_error::@3/(byte) print_byte::b#4 print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 )
[114] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4
[115] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[116] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[117] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f
[118] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[119] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[120] return
to:@return
print_sbyte: scope:[print_sbyte] from mul8s_error::@1 mul8s_error::@3
[119] (signed byte) print_sbyte::b#3 ← phi( mul8s_error::@1/(signed byte) print_sbyte::b#1 mul8s_error::@3/(signed byte) print_sbyte::b#2 )
[120] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1
[121] (signed byte) print_sbyte::b#3 ← phi( mul8s_error::@1/(signed byte) print_sbyte::b#1 mul8s_error::@3/(signed byte) print_sbyte::b#2 )
[122] if((signed byte) print_sbyte::b#3<(signed byte) 0) goto print_sbyte::@1
to:print_sbyte::@3
print_sbyte::@3: scope:[print_sbyte] from print_sbyte
[121] phi()
[122] call print_char
[123] phi()
[124] call print_char
to:print_sbyte::@2
print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@3 print_sbyte::@4
[123] (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#3 )
[124] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5
[125] call print_byte
[125] (signed byte) print_sbyte::b#5 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#3 )
[126] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#5
[127] call print_byte
to:print_sbyte::@return
print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2
[126] return
[128] return
to:@return
print_sbyte::@1: scope:[print_sbyte] from print_sbyte
[127] phi()
[128] call print_char
[129] phi()
[130] call print_char
to:print_sbyte::@4
print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@1
[129] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3
[131] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3
to:print_sbyte::@2
mul8s: scope:[mul8s] from mul8s_compare::@11
[130] (byte) mul8u::a#1 ← (byte)(signed byte) mul8s::a#0
[131] (byte) mul8u::b#0 ← (byte)(signed byte) mul8s::b#0
[132] call mul8u
[133] (word) mul8u::return#2 ← (word) mul8u::res#2
[132] (byte) mul8u::a#1 ← (byte)(signed byte) mul8s::a#0
[133] (byte) mul8u::b#0 ← (byte)(signed byte) mul8s::b#0
[134] call mul8u
[135] (word) mul8u::return#2 ← (word) mul8u::res#2
to:mul8s::@5
mul8s::@5: scope:[mul8s] from mul8s
[134] (word) mul8s::m#0 ← (word) mul8u::return#2
[135] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1
[136] (word) mul8s::m#0 ← (word) mul8u::return#2
[137] if((signed byte) mul8s::a#0>=(signed byte) 0) goto mul8s::@1
to:mul8s::@3
mul8s::@3: scope:[mul8s] from mul8s::@5
[136] (byte~) mul8s::$9 ← > (word) mul8s::m#0
[137] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0
[138] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16
[138] (byte~) mul8s::$9 ← > (word) mul8s::m#0
[139] (byte~) mul8s::$16 ← (byte~) mul8s::$9 - (byte)(signed byte) mul8s::b#0
[140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16
to:mul8s::@1
mul8s::@1: scope:[mul8s] from mul8s::@3 mul8s::@5
[139] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@5/(word) mul8s::m#0 )
[140] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2
[141] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@5/(word) mul8s::m#0 )
[142] if((signed byte) mul8s::b#0>=(signed byte) 0) goto mul8s::@2
to:mul8s::@4
mul8s::@4: scope:[mul8s] from mul8s::@1
[141] (byte~) mul8s::$13 ← > (word) mul8s::m#5
[142] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0
[143] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17
[143] (byte~) mul8s::$13 ← > (word) mul8s::m#5
[144] (byte~) mul8s::$17 ← (byte~) mul8s::$13 - (byte)(signed byte) mul8s::a#0
[145] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17
to:mul8s::@2
mul8s::@2: scope:[mul8s] from mul8s::@1 mul8s::@4
[144] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 )
[146] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 )
to:mul8s::@return
mul8s::@return: scope:[mul8s] from mul8s::@2
[145] return
[147] return
to:@return
mul8u: scope:[mul8u] from mul8s mul8u_compare::@11
[146] (byte) mul8u::a#6 ← phi( mul8s/(byte) mul8u::a#1 mul8u_compare::@11/(byte) mul8u::a#2 )
[146] (word) mul8u::mb#0 ← phi( mul8s/(byte) mul8u::b#0 mul8u_compare::@11/(byte) mul8u::b#1 )
[148] (byte) mul8u::a#6 ← phi( mul8s/(byte) mul8u::a#1 mul8u_compare::@11/(byte) mul8u::a#2 )
[148] (word) mul8u::mb#0 ← phi( mul8s/(byte) mul8u::b#0 mul8u_compare::@11/(byte) mul8u::b#1 )
to:mul8u::@1
mul8u::@1: scope:[mul8u] from mul8u mul8u::@3
[147] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 )
[147] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 )
[147] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 )
[148] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2
[149] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 )
[149] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 )
[149] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 )
[150] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2
to:mul8u::@return
mul8u::@return: scope:[mul8u] from mul8u::@1
[149] return
[151] return
to:@return
mul8u::@2: scope:[mul8u] from mul8u::@1
[150] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1
[151] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3
[152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1
[153] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3
to:mul8u::@4
mul8u::@4: scope:[mul8u] from mul8u::@2
[152] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
[154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
to:mul8u::@3
mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4
[153] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 )
[154] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1
[155] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1
[155] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 )
[156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1
[157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1
to:mul8u::@1
mulf8s: scope:[mulf8s] from mul8s_compare::@10
[156] phi()
[158] phi()
to:mulf8s::mulf8s_prepare1
mulf8s::mulf8s_prepare1: scope:[mulf8s] from mulf8s
[157] (byte) mulf8u_prepare::a#1 ← (byte)(signed byte) mulf8s::a#0
[158] call mulf8u_prepare
[159] (byte) mulf8u_prepare::a#1 ← (byte)(signed byte) mulf8s::a#0
[160] call mulf8u_prepare
to:mulf8s::@1
mulf8s::@1: scope:[mulf8s] from mulf8s::mulf8s_prepare1
[159] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0
[160] call mulf8s_prepared
[161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0
[162] call mulf8s_prepared
to:mulf8s::@2
mulf8s::@2: scope:[mulf8s] from mulf8s::@1
[161] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4
[163] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4
to:mulf8s::@return
mulf8s::@return: scope:[mulf8s] from mulf8s::@2
[162] return
[164] return
to:@return
mulf8s_prepared: scope:[mulf8s_prepared] from mulf8s::@1
[163] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0
[164] call mulf8u_prepared
[165] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0
[165] (byte) mulf8u_prepared::b#1 ← (byte)(signed byte) mulf8s_prepared::b#0
[166] call mulf8u_prepared
[167] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0
to:mulf8s_prepared::@5
mulf8s_prepared::@5: scope:[mulf8s_prepared] from mulf8s_prepared
[166] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3
[167] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1
[168] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3
[169] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(signed byte) 0) goto mulf8s_prepared::@1
to:mulf8s_prepared::@3
mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@5
[168] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0
[169] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0
[170] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15
[170] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0
[171] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0
[172] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15
to:mulf8s_prepared::@1
mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@5
[171] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@5/(word) mulf8s_prepared::m#0 )
[172] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2
[173] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@5/(word) mulf8s_prepared::m#0 )
[174] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2
to:mulf8s_prepared::@4
mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1
[173] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5
[174] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA#0)
[175] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16
[175] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5
[176] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA#0)
[177] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16
to:mulf8s_prepared::@2
mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4
[176] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 )
[178] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 )
to:mulf8s_prepared::@return
mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2
[177] return
[179] return
to:@return
mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared mulf8u::@1
[178] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte) mulf8u_prepared::b#1 mulf8u::@1/(byte) mulf8u_prepared::b#0 )
[179] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2
[180] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte) mulf8u_prepared::b#1 mulf8u::@1/(byte) mulf8u_prepared::b#0 )
[181] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2
asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB }
[181] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0)
[183] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0)
to:mulf8u_prepared::@return
mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared
[182] return
[184] return
to:@return
mulf8u_prepare: scope:[mulf8u_prepare] from mulf8s::mulf8s_prepare1 mulf8u
[183] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte) mulf8u_prepare::a#1 mulf8u/(byte) mulf8u_prepare::a#0 )
[184] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2
[185] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte) mulf8u_prepare::a#1 mulf8u/(byte) mulf8u_prepare::a#0 )
[186] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2
asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 }
to:mulf8u_prepare::@return
mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare
[186] return
[188] return
to:@return
muls8s: scope:[muls8s] from mul8s_compare::@2
[187] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@4
[189] if((signed byte) muls8s::a#0<(signed byte) 0) goto muls8s::@4
to:muls8s::@2
muls8s::@2: scope:[muls8s] from muls8s
[188] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@1
[190] if((signed byte) muls8s::a#0<=(signed byte) 0) goto muls8s::@1
to:muls8s::@3
muls8s::@3: scope:[muls8s] from muls8s::@2 muls8s::@3
[189] (signed byte) muls8s::j#2 ← phi( muls8s::@2/(signed byte) 0 muls8s::@3/(signed byte) muls8s::j#1 )
[189] (signed word) muls8s::m#3 ← phi( muls8s::@2/(signed byte) 0 muls8s::@3/(signed word) muls8s::m#1 )
[190] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0
[191] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2
[192] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3
[191] (signed byte) muls8s::j#2 ← phi( muls8s::@2/(signed byte) 0 muls8s::@3/(signed byte) muls8s::j#1 )
[191] (signed word) muls8s::m#3 ← phi( muls8s::@2/(signed byte) 0 muls8s::@3/(signed word) muls8s::m#1 )
[192] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0
[193] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2
[194] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3
to:muls8s::@1
muls8s::@1: scope:[muls8s] from muls8s::@2 muls8s::@3 muls8s::@4
[193] (signed word) muls8s::return#0 ← phi( muls8s::@4/(signed word) muls8s::m#2 muls8s::@2/(signed byte) 0 muls8s::@3/(signed word) muls8s::m#1 )
[195] (signed word) muls8s::return#0 ← phi( muls8s::@4/(signed word) muls8s::m#2 muls8s::@2/(signed byte) 0 muls8s::@3/(signed word) muls8s::m#1 )
to:muls8s::@return
muls8s::@return: scope:[muls8s] from muls8s::@1
[194] return
[196] return
to:@return
muls8s::@4: scope:[muls8s] from muls8s muls8s::@4
[195] (signed byte) muls8s::i#2 ← phi( muls8s/(signed byte) 0 muls8s::@4/(signed byte) muls8s::i#1 )
[195] (signed word) muls8s::m#5 ← phi( muls8s/(signed byte) 0 muls8s::@4/(signed word) muls8s::m#2 )
[196] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0
[197] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2
[198] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@4
[197] (signed byte) muls8s::i#2 ← phi( muls8s/(signed byte) 0 muls8s::@4/(signed byte) muls8s::i#1 )
[197] (signed word) muls8s::m#5 ← phi( muls8s/(signed byte) 0 muls8s::@4/(signed word) muls8s::m#2 )
[198] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0
[199] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2
[200] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@4
to:muls8s::@1
mul8u_compare: scope:[mul8u_compare] from main::@4
[199] phi()
[201] phi()
to:mul8u_compare::@1
mul8u_compare::@1: scope:[mul8u_compare] from mul8u_compare mul8u_compare::@8
[200] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte) 0 mul8u_compare::@8/(byte) mul8u_compare::a#1 )
[202] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte) 0 mul8u_compare::@8/(byte) mul8u_compare::a#1 )
to:mul8u_compare::@2
mul8u_compare::@2: scope:[mul8u_compare] from mul8u_compare::@1 mul8u_compare::@5
[201] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 )
[202] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7
[203] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10
[204] call muls8u
[205] (word) muls8u::return#2 ← (word) muls8u::return#0
[203] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 )
[204] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7
[205] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10
[206] call muls8u
[207] (word) muls8u::return#2 ← (word) muls8u::return#0
to:mul8u_compare::@10
mul8u_compare::@10: scope:[mul8u_compare] from mul8u_compare::@2
[206] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2
[207] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7
[208] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10
[209] call mulf8u
[210] (word) mulf8u::return#2 ← (word) mulf8u::return#0
[208] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2
[209] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7
[210] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10
[211] call mulf8u
[212] (word) mulf8u::return#2 ← (word) mulf8u::return#0
to:mul8u_compare::@11
mul8u_compare::@11: scope:[mul8u_compare] from mul8u_compare::@10
[211] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2
[212] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7
[213] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10
[214] call mul8u
[215] (word) mul8u::return#3 ← (word) mul8u::res#2
[213] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2
[214] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7
[215] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10
[216] call mul8u
[217] (word) mul8u::return#3 ← (word) mul8u::res#2
to:mul8u_compare::@12
mul8u_compare::@12: scope:[mul8u_compare] from mul8u_compare::@11
[216] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3
[217] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3
[218] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3
[219] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3
to:mul8u_compare::@6
mul8u_compare::@6: scope:[mul8u_compare] from mul8u_compare::@12
[218] phi()
[220] phi()
to:mul8u_compare::@3
mul8u_compare::@3: scope:[mul8u_compare] from mul8u_compare::@12 mul8u_compare::@6
[219] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@12/(byte) 1 mul8u_compare::@6/(byte) 0 )
[220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14
[221] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@12/(byte) 1 mul8u_compare::@6/(byte) 0 )
[222] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@14
to:mul8u_compare::@4
mul8u_compare::@14: scope:[mul8u_compare] from mul8u_compare::@3
[221] phi()
[223] phi()
to:mul8u_compare::@4
mul8u_compare::@4: scope:[mul8u_compare] from mul8u_compare::@14 mul8u_compare::@3
[222] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@14/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte) 0 )
[223] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5
[224] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@14/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte) 0 )
[225] if((byte) mul8u_compare::ok#3!=(byte) 0) goto mul8u_compare::@5
to:mul8u_compare::@7
mul8u_compare::@7: scope:[mul8u_compare] from mul8u_compare::@4
[224] *((const byte*) BGCOL#0) ← (byte) 2
[225] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7
[226] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10
[227] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0
[228] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0
[229] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0
[230] call mul8u_error
[226] *((const byte*) BGCOL#0) ← (byte) 2
[227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7
[228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10
[229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0
[230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0
[231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0
[232] call mul8u_error
to:mul8u_compare::@return
mul8u_compare::@return: scope:[mul8u_compare] from mul8u_compare::@13 mul8u_compare::@7
[231] return
[233] return
to:@return
mul8u_compare::@5: scope:[mul8u_compare] from mul8u_compare::@4
[232] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10
[233] if((byte) mul8u_compare::b#1!=(byte) 0) goto mul8u_compare::@2
[234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10
[235] if((byte) mul8u_compare::b#1!=(byte) 0) goto mul8u_compare::@2
to:mul8u_compare::@8
mul8u_compare::@8: scope:[mul8u_compare] from mul8u_compare::@5
[234] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7
[235] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1
[236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7
[237] if((byte) mul8u_compare::a#1!=(byte) 0) goto mul8u_compare::@1
to:mul8u_compare::@9
mul8u_compare::@9: scope:[mul8u_compare] from mul8u_compare::@8
[236] phi()
[237] call print_str
[238] phi()
[239] call print_str
to:mul8u_compare::@13
mul8u_compare::@13: scope:[mul8u_compare] from mul8u_compare::@9
[238] phi()
[239] call print_ln
[240] phi()
[241] call print_ln
to:mul8u_compare::@return
mul8u_error: scope:[mul8u_error] from mul8u_compare::@7
[240] phi()
[241] call print_str
[242] phi()
[243] call print_str
to:mul8u_error::@1
mul8u_error::@1: scope:[mul8u_error] from mul8u_error
[242] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0
[243] call print_byte
[244] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0
[245] call print_byte
to:mul8u_error::@2
mul8u_error::@2: scope:[mul8u_error] from mul8u_error::@1
[244] phi()
[245] call print_str
[246] phi()
[247] call print_str
to:mul8u_error::@3
mul8u_error::@3: scope:[mul8u_error] from mul8u_error::@2
[246] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0
[247] call print_byte
[248] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0
[249] call print_byte
to:mul8u_error::@4
mul8u_error::@4: scope:[mul8u_error] from mul8u_error::@3
[248] phi()
[249] call print_str
[250] phi()
[251] call print_str
to:mul8u_error::@5
mul8u_error::@5: scope:[mul8u_error] from mul8u_error::@4
[250] (word) print_word::w#3 ← (word) mul8u_error::ms#0
[251] call print_word
[252] (word) print_word::w#3 ← (word) mul8u_error::ms#0
[253] call print_word
to:mul8u_error::@6
mul8u_error::@6: scope:[mul8u_error] from mul8u_error::@5
[252] phi()
[253] call print_str
[254] phi()
[255] call print_str
to:mul8u_error::@7
mul8u_error::@7: scope:[mul8u_error] from mul8u_error::@6
[254] (word) print_word::w#4 ← (word) mul8u_error::mn#0
[255] call print_word
[256] (word) print_word::w#4 ← (word) mul8u_error::mn#0
[257] call print_word
to:mul8u_error::@8
mul8u_error::@8: scope:[mul8u_error] from mul8u_error::@7
[256] phi()
[257] call print_str
[258] phi()
[259] call print_str
to:mul8u_error::@9
mul8u_error::@9: scope:[mul8u_error] from mul8u_error::@8
[258] (word) print_word::w#5 ← (word) mul8u_error::mf#0
[259] call print_word
[260] (word) print_word::w#5 ← (word) mul8u_error::mf#0
[261] call print_word
to:mul8u_error::@10
mul8u_error::@10: scope:[mul8u_error] from mul8u_error::@9
[260] phi()
[261] call print_ln
[262] phi()
[263] call print_ln
to:mul8u_error::@return
mul8u_error::@return: scope:[mul8u_error] from mul8u_error::@10
[262] return
[264] return
to:@return
mulf8u: scope:[mulf8u] from mul8u_compare::@10
[263] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0
[264] call mulf8u_prepare
[265] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0
[266] call mulf8u_prepare
to:mulf8u::@1
mulf8u::@1: scope:[mulf8u] from mulf8u
[265] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0
[266] call mulf8u_prepared
[267] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
[267] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0
[268] call mulf8u_prepared
[269] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
to:mulf8u::@2
mulf8u::@2: scope:[mulf8u] from mulf8u::@1
[268] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2
[270] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2
to:mulf8u::@return
mulf8u::@return: scope:[mulf8u] from mulf8u::@2
[269] return
[271] return
to:@return
muls8u: scope:[muls8u] from mul8u_compare::@2
[270] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1
[272] if((byte) muls8u::a#0==(byte) 0) goto muls8u::@1
to:muls8u::@2
muls8u::@2: scope:[muls8u] from muls8u muls8u::@2
[271] (byte) muls8u::i#2 ← phi( muls8u/(byte) 0 muls8u::@2/(byte) muls8u::i#1 )
[271] (word) muls8u::m#3 ← phi( muls8u/(byte) 0 muls8u::@2/(word) muls8u::m#1 )
[272] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0
[273] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2
[274] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2
[273] (byte) muls8u::i#2 ← phi( muls8u/(byte) 0 muls8u::@2/(byte) muls8u::i#1 )
[273] (word) muls8u::m#3 ← phi( muls8u/(byte) 0 muls8u::@2/(word) muls8u::m#1 )
[274] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0
[275] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2
[276] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2
to:muls8u::@1
muls8u::@1: scope:[muls8u] from muls8u muls8u::@2
[275] (word) muls8u::return#0 ← phi( muls8u/(byte) 0 muls8u::@2/(word) muls8u::m#1 )
[277] (word) muls8u::return#0 ← phi( muls8u/(byte) 0 muls8u::@2/(word) muls8u::m#1 )
to:muls8u::@return
muls8u::@return: scope:[muls8u] from muls8u::@1
[276] return
[278] return
to:@return
mulf_tables_cmp: scope:[mulf_tables_cmp] from main::@3
[277] phi()
[279] phi()
to:mulf_tables_cmp::@1
mulf_tables_cmp::@1: scope:[mulf_tables_cmp] from mulf_tables_cmp mulf_tables_cmp::@2
[278] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[$200]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 )
[278] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[$200]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 )
[279] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2
[280] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[$200]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 )
[280] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[$200]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 )
[281] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2
to:mulf_tables_cmp::@3
mulf_tables_cmp::@3: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1
[280] *((const byte*) BGCOL#0) ← (byte) 2
[281] call print_str
[282] *((const byte*) BGCOL#0) ← (byte) 2
[283] call print_str
to:mulf_tables_cmp::@5
mulf_tables_cmp::@5: scope:[mulf_tables_cmp] from mulf_tables_cmp::@3
[282] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2
[283] call print_word
[284] (word) print_word::w#1 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2
[285] call print_word
to:mulf_tables_cmp::@6
mulf_tables_cmp::@6: scope:[mulf_tables_cmp] from mulf_tables_cmp::@5
[284] phi()
[285] call print_str
[286] phi()
[287] call print_str
to:mulf_tables_cmp::@7
mulf_tables_cmp::@7: scope:[mulf_tables_cmp] from mulf_tables_cmp::@6
[286] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2
[287] call print_word
[288] (word) print_word::w#2 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2
[289] call print_word
to:mulf_tables_cmp::@return
mulf_tables_cmp::@return: scope:[mulf_tables_cmp] from mulf_tables_cmp::@7 mulf_tables_cmp::@9
[288] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@9/(byte*) print_line_cursor#1 mulf_tables_cmp::@7/(byte*) 1024 )
[288] (byte*) print_char_cursor#31 ← phi( mulf_tables_cmp::@9/(byte*~) print_char_cursor#225 mulf_tables_cmp::@7/(byte*) print_char_cursor#18 )
[289] return
[290] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@9/(byte*) print_line_cursor#1 mulf_tables_cmp::@7/(byte*) 1024 )
[290] (byte*) print_char_cursor#32 ← phi( mulf_tables_cmp::@9/(byte*~) print_char_cursor#227 mulf_tables_cmp::@7/(byte*) print_char_cursor#19 )
[291] return
to:@return
mulf_tables_cmp::@2: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1
[290] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2
[291] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2
[292] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@1
[292] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2
[293] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2
[294] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[$200]) mulf_sqr1_lo#0+(word)(number) $200*(number) 4) goto mulf_tables_cmp::@1
to:mulf_tables_cmp::@4
mulf_tables_cmp::@4: scope:[mulf_tables_cmp] from mulf_tables_cmp::@2
[293] phi()
[294] call print_str
[295] phi()
[296] call print_str
to:mulf_tables_cmp::@8
mulf_tables_cmp::@8: scope:[mulf_tables_cmp] from mulf_tables_cmp::@4
[295] phi()
[296] call print_ln
[297] phi()
[298] call print_ln
to:mulf_tables_cmp::@9
mulf_tables_cmp::@9: scope:[mulf_tables_cmp] from mulf_tables_cmp::@8
[297] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1
[299] (byte*~) print_char_cursor#227 ← (byte*) print_line_cursor#1
to:mulf_tables_cmp::@return
mulf_init_asm: scope:[mulf_init_asm] from main::@2
asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- }
[299] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0)
[300] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0)
[301] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0)
[302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0)
[301] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_lo#0)
[302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr1_hi#0)
[303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_lo#0)
[304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[$200]) mula_sqr2_hi#0)
to:mulf_init_asm::@return
mulf_init_asm::@return: scope:[mulf_init_asm] from mulf_init_asm
[303] return
[305] return
to:@return
mulf_init: scope:[mulf_init] from main::@1
[304] phi()
[306] phi()
to:mulf_init::@1
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2
[305] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::x_2#2 )
[305] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 )
[305] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 )
[305] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@2/(word) mulf_init::sqr#1 )
[305] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::c#1 )
[306] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
[307] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1
[308] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2
[307] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::x_2#2 )
[307] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 )
[307] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 )
[307] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@2/(word) mulf_init::sqr#1 )
[307] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::c#1 )
[308] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
[309] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1
[310] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2
to:mulf_init::@3
mulf_init::@3: scope:[mulf_init] from mulf_init::@1
[309] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
[310] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
[311] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
[312] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
to:mulf_init::@2
mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@3
[311] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@3/(byte) mulf_init::x_2#1 )
[311] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@3/(word) mulf_init::sqr#2 )
[312] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3
[313] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10
[314] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3
[315] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11
[316] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
[317] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
[318] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
[319] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1
[313] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@3/(byte) mulf_init::x_2#1 )
[313] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@3/(word) mulf_init::sqr#2 )
[314] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3
[315] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10
[316] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3
[317] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11
[318] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
[319] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
[320] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
[321] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1
to:mulf_init::@4
mulf_init::@4: scope:[mulf_init] from mulf_init::@2 mulf_init::@5
[320] (byte) mulf_init::dir#2 ← phi( mulf_init::@2/(byte) $ff mulf_init::@5/(byte) mulf_init::dir#3 )
[320] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_hi#0 mulf_init::@5/(byte*) mulf_init::sqr2_hi#1 )
[320] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_lo#0 mulf_init::@5/(byte*) mulf_init::sqr2_lo#1 )
[320] (byte) mulf_init::x_255#2 ← phi( mulf_init::@2/(byte) -1 mulf_init::@5/(byte) mulf_init::x_255#1 )
[321] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
[322] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
[323] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
[324] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
[325] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7
[322] (byte) mulf_init::dir#2 ← phi( mulf_init::@2/(byte) $ff mulf_init::@5/(byte) mulf_init::dir#3 )
[322] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_hi#0 mulf_init::@5/(byte*) mulf_init::sqr2_hi#1 )
[322] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_lo#0 mulf_init::@5/(byte*) mulf_init::sqr2_lo#1 )
[322] (byte) mulf_init::x_255#2 ← phi( mulf_init::@2/(byte) -1 mulf_init::@5/(byte) mulf_init::x_255#1 )
[323] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
[324] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
[325] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
[326] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
[327] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7
to:mulf_init::@5
mulf_init::@7: scope:[mulf_init] from mulf_init::@4
[326] phi()
[328] phi()
to:mulf_init::@5
mulf_init::@5: scope:[mulf_init] from mulf_init::@4 mulf_init::@7
[327] (byte) mulf_init::dir#3 ← phi( mulf_init::@7/(byte) mulf_init::dir#2 mulf_init::@4/(byte) 1 )
[328] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
[329] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4
[329] (byte) mulf_init::dir#3 ← phi( mulf_init::@7/(byte) mulf_init::dir#2 mulf_init::@4/(byte) 1 )
[330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
[331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4
to:mulf_init::@6
mulf_init::@6: scope:[mulf_init] from mulf_init::@5
[330] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100)
[331] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100)
[332] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100)
[333] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100)
to:mulf_init::@return
mulf_init::@return: scope:[mulf_init] from mulf_init::@6
[332] return
[334] return
to:@return
print_cls: scope:[print_cls] from main
[333] phi()
[335] phi()
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
[334] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
[335] *((byte*) print_cls::sc#2) ← (byte) ' '
[336] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[337] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1
[336] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
[337] *((byte*) print_cls::sc#2) ← (byte) ' '
[338] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[339] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
[338] return
[340] return
to:@return

File diff suppressed because one or more lines are too long

View File

@ -376,23 +376,22 @@
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#3 reg byte a 4.0
(byte) print_char::ch#4 reg byte a 4.0
(byte) print_char::ch#5 reg byte a 6.0
(byte) print_char::ch#5 reg byte a 4.0
(byte) print_char::ch#6 reg byte a 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:10 11.0
(byte*) print_char_cursor#132 print_char_cursor zp ZP_WORD:10 1.536585365853659
(byte*) print_char_cursor#133 print_char_cursor zp ZP_WORD:10 5.25
(byte*) print_char_cursor#134 print_char_cursor zp ZP_WORD:10 3.0
(byte*) print_char_cursor#139 print_char_cursor zp ZP_WORD:10 7.0
(byte*) print_char_cursor#140 print_char_cursor zp ZP_WORD:10 3.9999999999999996
(byte*) print_char_cursor#152 print_char_cursor zp ZP_WORD:10 28.0
(byte*) print_char_cursor#18 print_char_cursor zp ZP_WORD:10 0.7555555555555553
(byte*~) print_char_cursor#187 print_char_cursor zp ZP_WORD:10 4.0
(byte*~) print_char_cursor#188 print_char_cursor zp ZP_WORD:10 4.0
(byte*~) print_char_cursor#225 print_char_cursor zp ZP_WORD:10 4.0
(byte*) print_char_cursor#31 print_char_cursor zp ZP_WORD:10 0.1951219512195122
(byte*) print_char_cursor#84 print_char_cursor zp ZP_WORD:10 7.0
(byte*) print_char_cursor#134 print_char_cursor zp ZP_WORD:10 1.5000000000000007
(byte*) print_char_cursor#135 print_char_cursor zp ZP_WORD:10 5.25
(byte*) print_char_cursor#142 print_char_cursor zp ZP_WORD:10 7.0
(byte*) print_char_cursor#143 print_char_cursor zp ZP_WORD:10 3.9999999999999996
(byte*) print_char_cursor#155 print_char_cursor zp ZP_WORD:10 28.0
(byte*) print_char_cursor#19 print_char_cursor zp ZP_WORD:10 0.7083333333333331
(byte*~) print_char_cursor#190 print_char_cursor zp ZP_WORD:10 4.0
(byte*~) print_char_cursor#191 print_char_cursor zp ZP_WORD:10 4.0
(byte*~) print_char_cursor#227 print_char_cursor zp ZP_WORD:10 4.0
(byte*) print_char_cursor#32 print_char_cursor zp ZP_WORD:10 0.1951219512195122
(byte*) print_char_cursor#86 print_char_cursor zp ZP_WORD:10 8.0
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
@ -434,14 +433,15 @@
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#2 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#3 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#4 w zp ZP_WORD:8 3.0
(signed word) print_sword::w#5 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#4 w zp ZP_WORD:8 1.9999999999999998
(signed word) print_sword::w#6 w zp ZP_WORD:8 4.0
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
@ -463,10 +463,10 @@ zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 ]
reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ]
zp ZP_WORD:4 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ]
zp ZP_WORD:6 [ print_str::str#16 print_str::str#18 print_str::str#0 ]
zp ZP_WORD:8 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 muls8s::m#5 muls8s::return#0 muls8s::m#2 muls8s::m#3 muls8s::m#1 muls8s::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ]
zp ZP_WORD:8 [ print_sword::w#6 print_sword::w#0 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 muls8s::m#5 muls8s::return#0 muls8s::m#2 muls8s::m#3 muls8s::m#1 muls8s::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ]
reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
zp ZP_WORD:10 [ print_char_cursor#142 print_char_cursor#86 print_char_cursor#143 print_char_cursor#155 print_char_cursor#190 print_char_cursor#191 print_char_cursor#135 print_char_cursor#134 print_char_cursor#19 print_char_cursor#32 print_char_cursor#1 print_char_cursor#227 ]
reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#0 print_byte::b#1 print_byte::b#2 ]
reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ]
zp ZP_WORD:10 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#187 print_char_cursor#188 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ]
reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ]
zp ZP_WORD:12 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s_compare::mn#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8s_error::mn#0 mul8u_compare::mn#0 mul8u_error::mn#0 ]
reg byte a [ mul8u::b#0 ]

View File

@ -3,7 +3,7 @@
:BasicUpstart(main)
.pc = $80d "Program"
.label print_line_cursor = 4
.label print_char_cursor = 9
.label print_char_cursor = 8
main: {
.label w2 = $d
.label w1 = 2
@ -85,7 +85,13 @@ print_ln: {
print_sword: {
.label w = 6
lda w+1
bpl b1
bmi b1
lda #' '
jsr print_char
b2:
jsr print_word
rts
b1:
lda #'-'
jsr print_char
sec
@ -95,8 +101,17 @@ print_sword: {
lda #0
sbc w+1
sta w+1
b1:
jsr print_word
jmp b2
}
// Print a single char
// print_char(byte register(A) ch)
print_char: {
ldy #0
sta (print_char_cursor),y
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
rts
}
// Print a word as HEX
@ -112,9 +127,9 @@ print_word: {
rts
}
// Print a byte as HEX
// print_byte(byte zeropage(8) b)
// print_byte(byte zeropage($a) b)
print_byte: {
.label b = 8
.label b = $a
lda b
lsr
lsr
@ -130,17 +145,6 @@ print_byte: {
jsr print_char
rts
}
// Print a single char
// print_char(byte register(A) ch)
print_char: {
ldy #0
sta (print_char_cursor),y
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
rts
}
// Clear the screen. Also resets current line/char cursor.
print_cls: {
.label sc = $b

View File

@ -14,7 +14,7 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@6
[6] (byte) main::i#2 ← phi( main/(byte) 0 main::@6/(byte) main::i#1 )
[6] (byte*) print_line_cursor#19 ← phi( main/(byte*) 1024 main::@6/(byte*) print_line_cursor#1 )
[6] (byte*) print_char_cursor#50 ← phi( main/(byte*) 1024 main::@6/(byte*~) print_char_cursor#64 )
[6] (byte*) print_char_cursor#53 ← phi( main/(byte*) 1024 main::@6/(byte*~) print_char_cursor#64 )
[6] (signed word) main::w1#2 ← phi( main/(signed word) $4d2 main::@6/(signed word) main::w1#1 )
[7] (signed word) main::w2#0 ← (signed word) main::w1#2 - (signed byte) $5b
[8] (signed word) main::w1#1 ← (signed word) main::w2#0 - (signed byte) $29
@ -49,76 +49,78 @@ print_ln: scope:[print_ln] from main::@4
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
[22] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 )
[23] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte) $28
[24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1
[24] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1
to:print_ln::@return
print_ln::@return: scope:[print_ln] from print_ln::@1
[25] return
to:@return
print_sword: scope:[print_sword] from main::@1 main::@3
[26] (byte*) print_char_cursor#46 ← phi( main::@1/(byte*) print_char_cursor#50 main::@3/(byte*) print_char_cursor#12 )
[26] (byte*) print_char_cursor#47 ← phi( main::@1/(byte*) print_char_cursor#53 main::@3/(byte*) print_char_cursor#13 )
[26] (signed word) print_sword::w#3 ← phi( main::@1/(signed word) print_sword::w#1 main::@3/(signed word) print_sword::w#2 )
[27] if((signed word) print_sword::w#3>=(signed byte) 0) goto print_sword::@1
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword
[27] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword
[28] phi()
[29] call print_char
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword::@2
[30] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3
to:print_sword::@1
print_sword::@1: scope:[print_sword] from print_sword print_sword::@3
[31] (byte*) print_char_cursor#45 ← phi( print_sword/(byte*) print_char_cursor#46 print_sword::@3/(byte*) print_char_cursor#12 )
[31] (signed word) print_sword::w#4 ← phi( print_sword/(signed word) print_sword::w#3 print_sword::@3/(signed word) print_sword::w#0 )
[32] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4
[33] call print_word
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4
[30] (signed word) print_sword::w#5 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#3 )
[31] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5
[32] call print_word
to:print_sword::@return
print_sword::@return: scope:[print_sword] from print_sword::@1
[34] return
print_sword::@return: scope:[print_sword] from print_sword::@2
[33] return
to:@return
print_word: scope:[print_word] from print_sword::@1
[35] (byte) print_byte::b#0 ← > (word) print_word::w#0
[36] call print_byte
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[37] (byte) print_byte::b#1 ← < (word) print_word::w#0
[38] call print_byte
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[39] return
to:@return
print_byte: scope:[print_byte] from print_word print_word::@1
[40] (byte*) print_char_cursor#48 ← phi( print_word/(byte*) print_char_cursor#45 print_word::@1/(byte*) print_char_cursor#12 )
[40] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
[41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
[42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[43] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
[45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[46] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[47] return
to:@return
print_char: scope:[print_char] from main::@2 print_byte print_byte::@1 print_sword::@2
[48] (byte*) print_char_cursor#34 ← phi( main::@2/(byte*) print_char_cursor#12 print_byte/(byte*) print_char_cursor#48 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#46 )
[48] (byte) print_char::ch#4 ← phi( main::@2/(byte) ' ' print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' )
[49] *((byte*) print_char_cursor#34) ← (byte) print_char::ch#4
[50] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#34
print_sword::@1: scope:[print_sword] from print_sword
[34] phi()
[35] call print_char
to:print_sword::@4
print_sword::@4: scope:[print_sword] from print_sword::@1
[36] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3
to:print_sword::@2
print_char: scope:[print_char] from main::@2 print_byte print_byte::@1 print_sword::@1 print_sword::@3
[37] (byte*) print_char_cursor#36 ← phi( main::@2/(byte*) print_char_cursor#13 print_byte/(byte*) print_char_cursor#13 print_byte::@1/(byte*) print_char_cursor#13 print_sword::@1/(byte*) print_char_cursor#47 print_sword::@3/(byte*) print_char_cursor#47 )
[37] (byte) print_char::ch#5 ← phi( main::@2/(byte) ' ' print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' )
[38] *((byte*) print_char_cursor#36) ← (byte) print_char::ch#5
[39] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#36
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[51] return
[40] return
to:@return
print_word: scope:[print_word] from print_sword::@2
[41] (byte) print_byte::b#0 ← > (word) print_word::w#0
[42] call print_byte
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[43] (byte) print_byte::b#1 ← < (word) print_word::w#0
[44] call print_byte
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[45] return
to:@return
print_byte: scope:[print_byte] from print_word print_word::@1
[46] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
[47] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
[48] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[49] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[50] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
[51] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[52] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[53] return
to:@return
print_cls: scope:[print_cls] from main
[52] phi()
[54] phi()
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
[53] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
[54] *((byte*) print_cls::sc#2) ← (byte) ' '
[55] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[56] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1
[55] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
[56] *((byte*) print_cls::sc#2) ← (byte) ' '
[57] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[58] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
[57] return
[59] return
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -23,23 +23,21 @@
(label) print_byte::@1
(label) print_byte::@return
(byte) print_byte::b
(byte) print_byte::b#0 b zp ZP_BYTE:8 4.0
(byte) print_byte::b#1 b zp ZP_BYTE:8 4.0
(byte) print_byte::b#2 b zp ZP_BYTE:8 2.0
(byte) print_byte::b#0 b zp ZP_BYTE:10 4.0
(byte) print_byte::b#1 b zp ZP_BYTE:10 4.0
(byte) print_byte::b#2 b zp ZP_BYTE:10 2.0
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#1 reg byte a 4.0
(byte) print_char::ch#2 reg byte a 4.0
(byte) print_char::ch#4 reg byte a 6.0
(byte) print_char::ch#3 reg byte a 4.0
(byte) print_char::ch#5 reg byte a 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:9 5.240000000000001
(byte*) print_char_cursor#34 print_char_cursor zp ZP_WORD:9 10.5
(byte*) print_char_cursor#45 print_char_cursor zp ZP_WORD:9 2.0
(byte*) print_char_cursor#46 print_char_cursor zp ZP_WORD:9 8.666666666666666
(byte*) print_char_cursor#48 print_char_cursor zp ZP_WORD:9 2.0
(byte*) print_char_cursor#50 print_char_cursor zp ZP_WORD:9 5.5
(byte*~) print_char_cursor#64 print_char_cursor zp ZP_WORD:9 22.0
(byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:8 4.03125
(byte*) print_char_cursor#36 print_char_cursor zp ZP_WORD:8 11.5
(byte*) print_char_cursor#47 print_char_cursor zp ZP_WORD:8 6.5
(byte*) print_char_cursor#53 print_char_cursor zp ZP_WORD:8 5.5
(byte*~) print_char_cursor#64 print_char_cursor zp ZP_WORD:8 22.0
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
@ -60,13 +58,14 @@
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:6 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:6 22.0
(signed word) print_sword::w#2 w zp ZP_WORD:6 22.0
(signed word) print_sword::w#3 w zp ZP_WORD:6 7.0
(signed word) print_sword::w#4 w zp ZP_WORD:6 4.0
(signed word) print_sword::w#3 w zp ZP_WORD:6 4.666666666666666
(signed word) print_sword::w#5 w zp ZP_WORD:6 4.0
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
@ -76,10 +75,10 @@
zp ZP_WORD:2 [ main::w1#2 main::w1#1 ]
reg byte x [ main::i#2 main::i#1 ]
zp ZP_WORD:4 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ]
zp ZP_WORD:6 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#0 ]
zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
reg byte a [ print_char::ch#4 print_char::ch#1 print_char::ch#2 ]
zp ZP_WORD:9 [ print_char_cursor#34 print_char_cursor#48 print_char_cursor#45 print_char_cursor#46 print_char_cursor#50 print_char_cursor#64 print_char_cursor#12 ]
zp ZP_WORD:6 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_word::w#0 ]
reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ]
zp ZP_WORD:8 [ print_char_cursor#36 print_char_cursor#47 print_char_cursor#53 print_char_cursor#64 print_char_cursor#13 ]
zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
zp ZP_WORD:11 [ print_cls::sc#2 print_cls::sc#1 ]
zp ZP_WORD:13 [ main::w2#0 ]
reg byte a [ print_byte::$0 ]

View File

@ -137,7 +137,13 @@ print_char: {
print_sword: {
.label w = 8
lda w+1
bpl b1
bmi b1
lda #' '
jsr print_char
b2:
jsr print_word
rts
b1:
lda #'-'
jsr print_char
sec
@ -147,8 +153,6 @@ print_sword: {
lda #0
sbc w+1
sta w+1
b1:
jsr print_word
rts
jmp b2
}
print_hextab: .text "0123456789abcdef"

View File

@ -13,7 +13,7 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@6
[5] (byte) main::i#2 ← phi( main/(byte) 0 main::@6/(byte) main::i#1 )
[5] (byte*) print_line_cursor#13 ← phi( main/(byte*) 1024 main::@6/(byte*) print_line_cursor#1 )
[5] (byte*) print_char_cursor#44 ← phi( main/(byte*) 1024 main::@6/(byte*~) print_char_cursor#59 )
[5] (byte*) print_char_cursor#47 ← phi( main/(byte*) 1024 main::@6/(byte*~) print_char_cursor#57 )
[5] (word) main::b#2 ← phi( main/(word) $1024 main::@6/(word) main::b#1 )
[5] (signed word) main::a#2 ← phi( main/(signed word) -$3ff main::@6/(signed word) main::a#1 )
[6] (signed word) main::a#1 ← (signed word) main::a#2 + (signed byte) -7
@ -41,7 +41,7 @@ main::@return: scope:[main] from main::@5
[18] return
to:@return
main::@6: scope:[main] from main::@5
[19] (byte*~) print_char_cursor#59 ← (byte*) print_line_cursor#1
[19] (byte*~) print_char_cursor#57 ← (byte*) print_line_cursor#1
to:main::@1
print_ln: scope:[print_ln] from main::@4
[20] phi()
@ -49,14 +49,13 @@ print_ln: scope:[print_ln] from main::@4
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
[21] (byte*) print_line_cursor#6 ← phi( print_ln/(byte*) print_line_cursor#13 print_ln::@1/(byte*) print_line_cursor#1 )
[22] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (byte) $28
[23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1
[23] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1
to:print_ln::@return
print_ln::@return: scope:[print_ln] from print_ln::@1
[24] return
to:@return
print_word: scope:[print_word] from main::@3 print_sword::@1
[25] (byte*) print_char_cursor#42 ← phi( main::@3/(byte*) print_char_cursor#12 print_sword::@1/(byte*) print_char_cursor#40 )
[25] (word) print_word::w#2 ← phi( main::@3/(word) print_word::w#1 print_sword::@1/(word) print_word::w#0 )
print_word: scope:[print_word] from main::@3 print_sword::@2
[25] (word) print_word::w#2 ← phi( main::@3/(word) print_word::w#1 print_sword::@2/(word) print_word::w#0 )
[26] (byte) print_byte::b#0 ← > (word) print_word::w#2
[27] call print_byte
to:print_word::@1
@ -68,45 +67,47 @@ print_word::@return: scope:[print_word] from print_word::@1
[30] return
to:@return
print_byte: scope:[print_byte] from print_word print_word::@1
[31] (byte*) print_char_cursor#43 ← phi( print_word/(byte*) print_char_cursor#42 print_word::@1/(byte*) print_char_cursor#12 )
[31] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
[32] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
[33] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[33] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[34] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[35] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
[36] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[36] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[37] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[38] return
to:@return
print_char: scope:[print_char] from main::@2 print_byte print_byte::@1 print_sword::@2
[39] (byte*) print_char_cursor#31 ← phi( main::@2/(byte*) print_char_cursor#12 print_byte/(byte*) print_char_cursor#43 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#44 )
[39] (byte) print_char::ch#4 ← phi( main::@2/(byte) ' ' print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' )
[40] *((byte*) print_char_cursor#31) ← (byte) print_char::ch#4
[41] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#31
print_char: scope:[print_char] from main::@2 print_byte print_byte::@1 print_sword::@1 print_sword::@3
[39] (byte*) print_char_cursor#33 ← phi( main::@2/(byte*) print_char_cursor#13 print_byte/(byte*) print_char_cursor#13 print_byte::@1/(byte*) print_char_cursor#13 print_sword::@1/(byte*) print_char_cursor#47 print_sword::@3/(byte*) print_char_cursor#47 )
[39] (byte) print_char::ch#5 ← phi( main::@2/(byte) ' ' print_byte/(byte) print_char::ch#2 print_byte::@1/(byte) print_char::ch#3 print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' )
[40] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#5
[41] (byte*) print_char_cursor#13 ← ++ (byte*) print_char_cursor#33
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[42] return
to:@return
print_sword: scope:[print_sword] from main::@1
[43] if((signed word) print_sword::w#1>=(signed byte) 0) goto print_sword::@1
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword
[43] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword
[44] phi()
[45] call print_char
to:print_sword::@3
print_sword::@3: scope:[print_sword] from print_sword::@2
[46] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1
to:print_sword::@1
print_sword::@1: scope:[print_sword] from print_sword print_sword::@3
[47] (byte*) print_char_cursor#40 ← phi( print_sword/(byte*) print_char_cursor#44 print_sword::@3/(byte*) print_char_cursor#12 )
[47] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@3/(signed word) print_sword::w#0 )
[48] (word) print_word::w#0 ← (word)(signed word) print_sword::w#3
[49] call print_word
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4
[46] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 )
[47] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4
[48] call print_word
to:print_sword::@return
print_sword::@return: scope:[print_sword] from print_sword::@1
[50] return
print_sword::@return: scope:[print_sword] from print_sword::@2
[49] return
to:@return
print_sword::@1: scope:[print_sword] from print_sword
[50] phi()
[51] call print_char
to:print_sword::@4
print_sword::@4: scope:[print_sword] from print_sword::@1
[52] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1
to:print_sword::@2

File diff suppressed because it is too large Load Diff

View File

@ -30,17 +30,14 @@
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#1 reg byte a 4.0
(byte) print_char::ch#2 reg byte a 4.0
(byte) print_char::ch#4 reg byte a 6.0
(byte) print_char::ch#3 reg byte a 4.0
(byte) print_char::ch#5 reg byte a 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:11 5.240000000000001
(byte*) print_char_cursor#31 print_char_cursor zp ZP_WORD:11 10.5
(byte*) print_char_cursor#40 print_char_cursor zp ZP_WORD:11 3.0
(byte*) print_char_cursor#42 print_char_cursor zp ZP_WORD:11 7.5
(byte*) print_char_cursor#43 print_char_cursor zp ZP_WORD:11 2.0
(byte*) print_char_cursor#44 print_char_cursor zp ZP_WORD:11 2.5
(byte*~) print_char_cursor#59 print_char_cursor zp ZP_WORD:11 22.0
(byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:11 3.5757575757575757
(byte*) print_char_cursor#33 print_char_cursor zp ZP_WORD:11 11.5
(byte*) print_char_cursor#47 print_char_cursor zp ZP_WORD:11 2.142857142857143
(byte*~) print_char_cursor#57 print_char_cursor zp ZP_WORD:11 22.0
(byte[]) print_hextab
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"
(byte*) print_line_cursor
@ -55,11 +52,12 @@
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@3
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:8 4.25
(signed word) print_sword::w#3 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:8 2.8333333333333335
(signed word) print_sword::w#4 w zp ZP_WORD:8 4.0
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
@ -72,9 +70,9 @@ zp ZP_WORD:2 [ main::a#2 main::a#1 ]
zp ZP_WORD:4 [ main::b#2 main::b#1 ]
reg byte x [ main::i#2 main::i#1 ]
zp ZP_WORD:6 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ]
zp ZP_WORD:8 [ print_word::w#2 print_word::w#1 print_word::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#0 ]
zp ZP_WORD:8 [ print_word::w#2 print_word::w#1 print_word::w#0 print_sword::w#4 print_sword::w#0 print_sword::w#1 ]
zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
reg byte a [ print_char::ch#4 print_char::ch#1 print_char::ch#2 ]
zp ZP_WORD:11 [ print_char_cursor#31 print_char_cursor#43 print_char_cursor#42 print_char_cursor#12 print_char_cursor#40 print_char_cursor#44 print_char_cursor#59 ]
reg byte a [ print_char::ch#5 print_char::ch#2 print_char::ch#3 ]
zp ZP_WORD:11 [ print_char_cursor#33 print_char_cursor#13 print_char_cursor#47 print_char_cursor#57 ]
reg byte a [ print_byte::$0 ]
reg byte a [ print_byte::$2 ]