mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-11-23 23:32:55 +00:00
Working 16bit signed fast multiplication - with test.
This commit is contained in:
parent
0b4cb53d07
commit
688df931f0
@ -173,7 +173,7 @@ _dd: lda #0
|
||||
}
|
||||
|
||||
// Fast multiply two signed words to a signed double word result
|
||||
// Done in assembler to utilize fast addition A+X
|
||||
// Fixes offsets introduced by using unsigned multiplication
|
||||
signed dword mulf16s(signed word a, signed word b) {
|
||||
dword m = mulf16u((word)a, (word)b);
|
||||
if(a<0) {
|
||||
@ -181,7 +181,6 @@ signed dword mulf16s(signed word a, signed word b) {
|
||||
}
|
||||
if(b<0) {
|
||||
>m = (>m)-(word)a;
|
||||
m = m + 1;
|
||||
}
|
||||
return (signed dword)m;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package dk.camelot64.kickc.test;
|
||||
package dk.camelot64.kickc.test;
|
||||
|
||||
import dk.camelot64.kickc.CompileLog;
|
||||
import dk.camelot64.kickc.Compiler;
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -9,10 +9,10 @@
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
||||
(word~) mul16s::$12 $12 zp ZP_WORD:8 4.0
|
||||
(word~) mul16s::$16 $16 zp ZP_WORD:8 4.0
|
||||
(word~) mul16s::$17 $17 zp ZP_WORD:8 4.0
|
||||
(word~) mul16s::$6 $6 zp ZP_WORD:8 4.0
|
||||
(word~) mul16s::$12 $12 zp ZP_WORD:9 4.0
|
||||
(word~) mul16s::$16 $16 zp ZP_WORD:9 4.0
|
||||
(word~) mul16s::$17 $17 zp ZP_WORD:9 4.0
|
||||
(word~) mul16s::$6 $6 zp ZP_WORD:9 4.0
|
||||
(label) mul16s::@1
|
||||
(label) mul16s::@2
|
||||
(label) mul16s::@3
|
||||
@ -20,56 +20,63 @@
|
||||
(label) mul16s::@6
|
||||
(label) mul16s::@return
|
||||
(signed word) mul16s::a
|
||||
(signed word) mul16s::a#0 a zp ZP_WORD:2 7.357142857142858
|
||||
(signed word) mul16s::a#0 a zp ZP_WORD:3 7.357142857142858
|
||||
(signed word) mul16s::b
|
||||
(signed word) mul16s::b#0 b zp ZP_WORD:4 9.363636363636363
|
||||
(signed word) mul16s::b#0 b zp ZP_WORD:5 9.363636363636363
|
||||
(dword) mul16s::m
|
||||
(dword) mul16s::m#0 m zp ZP_DWORD:16 2.0
|
||||
(dword) mul16s::m#1 m zp ZP_DWORD:16 4.0
|
||||
(dword) mul16s::m#2 m zp ZP_DWORD:16 4.0
|
||||
(dword) mul16s::m#4 m zp ZP_DWORD:16 6.0
|
||||
(dword) mul16s::m#5 m zp ZP_DWORD:16 2.5
|
||||
(dword) mul16s::m#0 m zp ZP_DWORD:25 2.0
|
||||
(dword) mul16s::m#1 m zp ZP_DWORD:25 4.0
|
||||
(dword) mul16s::m#2 m zp ZP_DWORD:25 4.0
|
||||
(dword) mul16s::m#4 m zp ZP_DWORD:25 6.0
|
||||
(dword) mul16s::m#5 m zp ZP_DWORD:25 2.5
|
||||
(signed dword) mul16s::return
|
||||
(signed dword) mul16s::return#0 return zp ZP_DWORD:16 34.33333333333333
|
||||
(signed dword) mul16s::return#2 return zp ZP_DWORD:16 202.0
|
||||
(signed dword) mul16s::return#0 return zp ZP_DWORD:25 34.33333333333333
|
||||
(signed dword) mul16s::return#2 return zp ZP_DWORD:25 202.0
|
||||
(void()) mul16s_compare()
|
||||
(label) mul16s_compare::@1
|
||||
(label) mul16s_compare::@10
|
||||
(label) mul16s_compare::@11
|
||||
(label) mul16s_compare::@12
|
||||
(label) mul16s_compare::@13
|
||||
(label) mul16s_compare::@14
|
||||
(label) mul16s_compare::@15
|
||||
(label) mul16s_compare::@17
|
||||
(label) mul16s_compare::@18
|
||||
(label) mul16s_compare::@2
|
||||
(label) mul16s_compare::@22
|
||||
(label) mul16s_compare::@3
|
||||
(label) mul16s_compare::@4
|
||||
(label) mul16s_compare::@5
|
||||
(label) mul16s_compare::@6
|
||||
(label) mul16s_compare::@8
|
||||
(label) mul16s_compare::@9
|
||||
(label) mul16s_compare::@return
|
||||
(signed word) mul16s_compare::a
|
||||
(signed word) mul16s_compare::a#1 a zp ZP_WORD:2 19.857142857142858
|
||||
(signed word) mul16s_compare::a#2 a zp ZP_WORD:2 213.0
|
||||
(signed word) mul16s_compare::a#5 a zp ZP_WORD:2 11.0
|
||||
(signed word) mul16s_compare::a#1 a zp ZP_WORD:3 17.862068965517242
|
||||
(signed word) mul16s_compare::a#2 a zp ZP_WORD:3 213.0
|
||||
(signed word) mul16s_compare::a#6 a zp ZP_WORD:3 11.0
|
||||
(signed word) mul16s_compare::b
|
||||
(signed word) mul16s_compare::b#1 b zp ZP_WORD:4 19.857142857142858
|
||||
(signed word) mul16s_compare::b#2 b zp ZP_WORD:4 106.5
|
||||
(signed word) mul16s_compare::b#5 b zp ZP_WORD:4 11.0
|
||||
(signed word) mul16s_compare::b#1 b zp ZP_WORD:5 17.862068965517242
|
||||
(signed word) mul16s_compare::b#2 b zp ZP_WORD:5 106.5
|
||||
(signed word) mul16s_compare::b#6 b zp ZP_WORD:5 11.0
|
||||
(byte) mul16s_compare::i
|
||||
(byte) mul16s_compare::i#1 reg byte x 16.5
|
||||
(byte) mul16s_compare::i#10 reg byte x 1.0476190476190477
|
||||
(byte) mul16s_compare::i#1 i zp ZP_BYTE:2 16.5
|
||||
(byte) mul16s_compare::i#12 i zp ZP_BYTE:2 0.7586206896551724
|
||||
(byte) mul16s_compare::j
|
||||
(byte) mul16s_compare::j#1 reg byte y 151.5
|
||||
(byte) mul16s_compare::j#2 reg byte y 11.882352941176471
|
||||
(byte) mul16s_compare::j#10 reg byte y 8.08
|
||||
(signed dword) mul16s_compare::mf
|
||||
(signed dword) mul16s_compare::mf#0 mf zp ZP_DWORD:17 15.692307692307692
|
||||
(signed dword) mul16s_compare::mn
|
||||
(signed dword) mul16s_compare::mn#0 mn zp ZP_DWORD:16 22.666666666666664
|
||||
(signed dword) mul16s_compare::mn#0 mn zp ZP_DWORD:25 12.0
|
||||
(signed dword) mul16s_compare::ms
|
||||
(signed dword) mul16s_compare::ms#0 ms zp ZP_DWORD:10 15.692307692307692
|
||||
(signed dword) mul16s_compare::ms#0 ms zp ZP_DWORD:11 14.523809523809522
|
||||
(byte) mul16s_compare::ok
|
||||
(byte) mul16s_compare::ok#2 reg byte a 101.0
|
||||
(byte) mul16s_compare::ok#3 reg byte x 202.0
|
||||
(byte) mul16s_compare::ok#4 reg byte x 33.666666666666664
|
||||
(const string) mul16s_compare::str str = (string) ".@"
|
||||
(const string) mul16s_compare::str1 str1 = (string) "signed word multiply results match!@"
|
||||
(void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn)
|
||||
(void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn , (signed dword) mul16s_error::mf)
|
||||
(label) mul16s_error::@1
|
||||
(label) mul16s_error::@10
|
||||
(label) mul16s_error::@2
|
||||
(label) mul16s_error::@3
|
||||
(label) mul16s_error::@4
|
||||
@ -77,19 +84,23 @@
|
||||
(label) mul16s_error::@6
|
||||
(label) mul16s_error::@7
|
||||
(label) mul16s_error::@8
|
||||
(label) mul16s_error::@9
|
||||
(label) mul16s_error::@return
|
||||
(signed word) mul16s_error::a
|
||||
(signed word) mul16s_error::a#0 a zp ZP_WORD:2 0.6666666666666666
|
||||
(signed word) mul16s_error::a#0 a zp ZP_WORD:3 0.5714285714285714
|
||||
(signed word) mul16s_error::b
|
||||
(signed word) mul16s_error::b#0 b zp ZP_WORD:4 0.4444444444444444
|
||||
(signed word) mul16s_error::b#0 b zp ZP_WORD:5 0.4
|
||||
(signed dword) mul16s_error::mf
|
||||
(signed dword) mul16s_error::mf#0 mf zp ZP_DWORD:17 0.21052631578947367
|
||||
(signed dword) mul16s_error::mn
|
||||
(signed dword) mul16s_error::mn#0 mn zp ZP_DWORD:16 0.26666666666666666
|
||||
(signed dword) mul16s_error::mn#0 mn zp ZP_DWORD:25 0.25
|
||||
(signed dword) mul16s_error::ms
|
||||
(signed dword) mul16s_error::ms#0 ms zp ZP_DWORD:10 0.3333333333333333
|
||||
(signed dword) mul16s_error::ms#0 ms zp ZP_DWORD:11 0.3076923076923077
|
||||
(const string) mul16s_error::str str = (string) "signed word multiply mismatch @"
|
||||
(const string) mul16s_error::str1 str1 = (string) "*@"
|
||||
(const string) mul16s_error::str2 str2 = (string) " slow:@"
|
||||
(const string) mul16s_error::str3 str3 = (string) " / normal:@"
|
||||
(const string) mul16s_error::str4 str4 = (string) " / fast:@"
|
||||
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
|
||||
(byte/word~) mul16u::$1 reg byte a 2002.0
|
||||
(label) mul16u::@1
|
||||
@ -98,26 +109,26 @@
|
||||
(label) mul16u::@7
|
||||
(label) mul16u::@return
|
||||
(word) mul16u::a
|
||||
(word) mul16u::a#0 a zp ZP_WORD:8 1001.0
|
||||
(word) mul16u::a#2 a zp ZP_WORD:8 101.0
|
||||
(word) mul16u::a#3 a zp ZP_WORD:8 667.6666666666667
|
||||
(word) mul16u::a#6 a zp ZP_WORD:8 52.5
|
||||
(word~) mul16u::a#8 a zp ZP_WORD:8 4.0
|
||||
(word) mul16u::a#0 a zp ZP_WORD:9 1001.0
|
||||
(word) mul16u::a#2 a zp ZP_WORD:9 101.0
|
||||
(word) mul16u::a#3 a zp ZP_WORD:9 667.6666666666667
|
||||
(word) mul16u::a#6 a zp ZP_WORD:9 52.5
|
||||
(word~) mul16u::a#8 a zp ZP_WORD:9 4.0
|
||||
(word) mul16u::b
|
||||
(word) mul16u::b#1 b zp ZP_WORD:20 202.0
|
||||
(word) mul16u::b#2 b zp ZP_WORD:20 105.0
|
||||
(word~) mul16u::b#3 b zp ZP_WORD:20 2.0
|
||||
(word) mul16u::b#1 b zp ZP_WORD:23 202.0
|
||||
(word) mul16u::b#2 b zp ZP_WORD:23 105.0
|
||||
(word~) mul16u::b#3 b zp ZP_WORD:23 2.0
|
||||
(dword) mul16u::mb
|
||||
(dword) mul16u::mb#0 mb zp ZP_DWORD:22 4.0
|
||||
(dword) mul16u::mb#1 mb zp ZP_DWORD:22 2002.0
|
||||
(dword) mul16u::mb#2 mb zp ZP_DWORD:22 429.2857142857143
|
||||
(dword) mul16u::mb#0 mb zp ZP_DWORD:17 4.0
|
||||
(dword) mul16u::mb#1 mb zp ZP_DWORD:17 2002.0
|
||||
(dword) mul16u::mb#2 mb zp ZP_DWORD:17 429.2857142857143
|
||||
(dword) mul16u::res
|
||||
(dword) mul16u::res#1 res zp ZP_DWORD:16 2002.0
|
||||
(dword) mul16u::res#2 res zp ZP_DWORD:16 443.7142857142857
|
||||
(dword) mul16u::res#6 res zp ZP_DWORD:16 1001.0
|
||||
(dword) mul16u::res#1 res zp ZP_DWORD:25 2002.0
|
||||
(dword) mul16u::res#2 res zp ZP_DWORD:25 443.7142857142857
|
||||
(dword) mul16u::res#6 res zp ZP_DWORD:25 1001.0
|
||||
(dword) mul16u::return
|
||||
(dword) mul16u::return#2 return zp ZP_DWORD:16 4.0
|
||||
(dword) mul16u::return#3 return zp ZP_DWORD:16 202.0
|
||||
(dword) mul16u::return#2 return zp ZP_DWORD:25 4.0
|
||||
(dword) mul16u::return#3 return zp ZP_DWORD:25 202.0
|
||||
(void()) mul16u_compare()
|
||||
(label) mul16u_compare::@1
|
||||
(label) mul16u_compare::@10
|
||||
@ -136,25 +147,25 @@
|
||||
(label) mul16u_compare::@8
|
||||
(label) mul16u_compare::@return
|
||||
(word) mul16u_compare::a
|
||||
(word) mul16u_compare::a#1 a zp ZP_WORD:2 17.862068965517242
|
||||
(word) mul16u_compare::a#2 a zp ZP_WORD:2 213.0
|
||||
(word) mul16u_compare::a#6 a zp ZP_WORD:2 11.0
|
||||
(word) mul16u_compare::a#1 a zp ZP_WORD:21 17.862068965517242
|
||||
(word) mul16u_compare::a#2 a zp ZP_WORD:21 213.0
|
||||
(word) mul16u_compare::a#6 a zp ZP_WORD:21 11.0
|
||||
(word) mul16u_compare::b
|
||||
(word) mul16u_compare::b#1 b zp ZP_WORD:20 17.862068965517242
|
||||
(word) mul16u_compare::b#2 b zp ZP_WORD:20 106.5
|
||||
(word) mul16u_compare::b#6 b zp ZP_WORD:20 11.0
|
||||
(word) mul16u_compare::b#1 b zp ZP_WORD:23 17.862068965517242
|
||||
(word) mul16u_compare::b#2 b zp ZP_WORD:23 106.5
|
||||
(word) mul16u_compare::b#6 b zp ZP_WORD:23 11.0
|
||||
(byte) mul16u_compare::i
|
||||
(byte) mul16u_compare::i#1 i zp ZP_BYTE:26 16.5
|
||||
(byte) mul16u_compare::i#12 i zp ZP_BYTE:26 0.7586206896551724
|
||||
(byte) mul16u_compare::i#1 i zp ZP_BYTE:2 16.5
|
||||
(byte) mul16u_compare::i#12 i zp ZP_BYTE:2 0.7586206896551724
|
||||
(byte) mul16u_compare::j
|
||||
(byte) mul16u_compare::j#1 reg byte y 151.5
|
||||
(byte) mul16u_compare::j#10 reg byte y 8.08
|
||||
(dword) mul16u_compare::mf
|
||||
(dword) mul16u_compare::mf#0 mf zp ZP_DWORD:22 15.692307692307692
|
||||
(dword) mul16u_compare::mf#0 mf zp ZP_DWORD:17 15.692307692307692
|
||||
(dword) mul16u_compare::mn
|
||||
(dword) mul16u_compare::mn#0 mn zp ZP_DWORD:16 12.0
|
||||
(dword) mul16u_compare::mn#0 mn zp ZP_DWORD:25 12.0
|
||||
(dword) mul16u_compare::ms
|
||||
(dword) mul16u_compare::ms#0 ms zp ZP_DWORD:10 14.523809523809522
|
||||
(dword) mul16u_compare::ms#0 ms zp ZP_DWORD:11 14.523809523809522
|
||||
(byte) mul16u_compare::ok
|
||||
(byte) mul16u_compare::ok#3 reg byte x 202.0
|
||||
(byte) mul16u_compare::ok#4 reg byte x 33.666666666666664
|
||||
@ -173,26 +184,54 @@
|
||||
(label) mul16u_error::@9
|
||||
(label) mul16u_error::@return
|
||||
(word) mul16u_error::a
|
||||
(word) mul16u_error::a#0 a zp ZP_WORD:2 0.5714285714285714
|
||||
(word) mul16u_error::a#0 a zp ZP_WORD:3 0.5714285714285714
|
||||
(word) mul16u_error::b
|
||||
(word) mul16u_error::b#0 b zp ZP_WORD:20 0.4
|
||||
(word) mul16u_error::b#0 b zp ZP_WORD:23 0.4
|
||||
(dword) mul16u_error::mf
|
||||
(dword) mul16u_error::mf#0 mf zp ZP_DWORD:22 0.21052631578947367
|
||||
(dword) mul16u_error::mf#0 mf zp ZP_DWORD:17 0.21052631578947367
|
||||
(dword) mul16u_error::mn
|
||||
(dword) mul16u_error::mn#0 mn zp ZP_DWORD:16 0.25
|
||||
(dword) mul16u_error::mn#0 mn zp ZP_DWORD:25 0.25
|
||||
(dword) mul16u_error::ms
|
||||
(dword) mul16u_error::ms#0 ms zp ZP_DWORD:10 0.3076923076923077
|
||||
(dword) mul16u_error::ms#0 ms zp ZP_DWORD:11 0.3076923076923077
|
||||
(const string) mul16u_error::str str = (string) "multiply mismatch @"
|
||||
(const string) mul16u_error::str1 str1 = (string) "*@"
|
||||
(const string) mul16u_error::str2 str2 = (string) " slow:@"
|
||||
(const string) mul16u_error::str3 str3 = (string) " / normal:@"
|
||||
(const string) mul16u_error::str4 str4 = (string) " / fast:@"
|
||||
(signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b)
|
||||
(word~) mulf16s::$12 $12 zp ZP_WORD:9 4.0
|
||||
(word~) mulf16s::$16 $16 zp ZP_WORD:9 4.0
|
||||
(word~) mulf16s::$17 $17 zp ZP_WORD:9 4.0
|
||||
(word~) mulf16s::$6 $6 zp ZP_WORD:9 4.0
|
||||
(label) mulf16s::@1
|
||||
(label) mulf16s::@2
|
||||
(label) mulf16s::@3
|
||||
(label) mulf16s::@4
|
||||
(label) mulf16s::@6
|
||||
(label) mulf16s::@return
|
||||
(signed word) mulf16s::a
|
||||
(signed word) mulf16s::a#0 a zp ZP_WORD:3 7.357142857142858
|
||||
(signed word) mulf16s::b
|
||||
(signed word) mulf16s::b#0 b zp ZP_WORD:5 9.363636363636363
|
||||
(dword) mulf16s::m
|
||||
(dword) mulf16s::m#0 m zp ZP_DWORD:17 2.0
|
||||
(dword) mulf16s::m#1 m zp ZP_DWORD:17 4.0
|
||||
(dword) mulf16s::m#2 m zp ZP_DWORD:17 4.0
|
||||
(dword) mulf16s::m#4 m zp ZP_DWORD:17 6.0
|
||||
(dword) mulf16s::m#5 m zp ZP_DWORD:17 2.5
|
||||
(signed dword) mulf16s::return
|
||||
(signed dword) mulf16s::return#0 return zp ZP_DWORD:17 34.33333333333333
|
||||
(signed dword) mulf16s::return#2 return zp ZP_DWORD:17 202.0
|
||||
(dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b)
|
||||
(label) mulf16u::@return
|
||||
(word) mulf16u::a
|
||||
(word) mulf16u::a#0 a zp ZP_WORD:2 51.5
|
||||
(word) mulf16u::a#1 a zp ZP_WORD:21 101.0
|
||||
(word) mulf16u::a#2 a zp ZP_WORD:21 105.0
|
||||
(word~) mulf16u::a#4 a zp ZP_WORD:21 2.0
|
||||
(word) mulf16u::b
|
||||
(word) mulf16u::b#0 b zp ZP_WORD:20 51.5
|
||||
(word) mulf16u::b#1 b zp ZP_WORD:23 202.0
|
||||
(word) mulf16u::b#2 b zp ZP_WORD:23 52.5
|
||||
(word~) mulf16u::b#4 b zp ZP_WORD:23 4.0
|
||||
(word*) mulf16u::memA
|
||||
(const word*) mulf16u::memA#0 memA = ((word*))(byte/word/signed word/dword/signed dword) 248
|
||||
(word*) mulf16u::memB
|
||||
@ -200,8 +239,9 @@
|
||||
(dword*) mulf16u::memR
|
||||
(const dword*) mulf16u::memR#0 memR = ((dword*))(byte/word/signed word/dword/signed dword) 252
|
||||
(dword) mulf16u::return
|
||||
(dword) mulf16u::return#0 return zp ZP_DWORD:22 34.33333333333333
|
||||
(dword) mulf16u::return#2 return zp ZP_DWORD:22 202.0
|
||||
(dword) mulf16u::return#0 return zp ZP_DWORD:17 26.25
|
||||
(dword) mulf16u::return#2 return zp ZP_DWORD:17 4.0
|
||||
(dword) mulf16u::return#3 return zp ZP_DWORD:17 202.0
|
||||
(void()) mulf_init()
|
||||
(byte~) mulf_init::$2 reg byte a 22.0
|
||||
(byte~) mulf_init::$5 reg byte a 22.0
|
||||
@ -218,29 +258,29 @@
|
||||
(byte) mulf_init::c#1 reg byte x 2.357142857142857
|
||||
(byte) mulf_init::c#2 reg byte x 22.0
|
||||
(byte) mulf_init::dir
|
||||
(byte) mulf_init::dir#2 dir zp ZP_BYTE:26 4.714285714285714
|
||||
(byte) mulf_init::dir#3 dir zp ZP_BYTE:26 7.333333333333333
|
||||
(byte) mulf_init::dir#2 dir zp ZP_BYTE:2 4.714285714285714
|
||||
(byte) mulf_init::dir#3 dir zp ZP_BYTE:2 7.333333333333333
|
||||
(word) mulf_init::sqr
|
||||
(word) mulf_init::sqr#1 sqr zp ZP_WORD:6 7.333333333333333
|
||||
(word) mulf_init::sqr#2 sqr zp ZP_WORD:6 22.0
|
||||
(word) mulf_init::sqr#3 sqr zp ZP_WORD:6 9.166666666666666
|
||||
(word) mulf_init::sqr#4 sqr zp ZP_WORD:6 6.6000000000000005
|
||||
(word) mulf_init::sqr#1 sqr zp ZP_WORD:7 7.333333333333333
|
||||
(word) mulf_init::sqr#2 sqr zp ZP_WORD:7 22.0
|
||||
(word) mulf_init::sqr#3 sqr zp ZP_WORD:7 9.166666666666666
|
||||
(word) mulf_init::sqr#4 sqr zp ZP_WORD:7 6.6000000000000005
|
||||
(byte*) mulf_init::sqr1_hi
|
||||
(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp ZP_WORD:4 5.5
|
||||
(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp ZP_WORD:4 3.0
|
||||
(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp ZP_WORD:5 5.5
|
||||
(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp ZP_WORD:5 3.0
|
||||
(byte*) mulf_init::sqr1_lo
|
||||
(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp ZP_WORD:2 16.5
|
||||
(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp ZP_WORD:2 2.5384615384615383
|
||||
(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp ZP_WORD:3 16.5
|
||||
(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp ZP_WORD:3 2.5384615384615383
|
||||
(byte*) mulf_init::sqr2_hi
|
||||
(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp ZP_WORD:4 3.142857142857143
|
||||
(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp ZP_WORD:4 11.0
|
||||
(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp ZP_WORD:5 3.142857142857143
|
||||
(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp ZP_WORD:5 11.0
|
||||
(byte*) mulf_init::sqr2_lo
|
||||
(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp ZP_WORD:2 16.5
|
||||
(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp ZP_WORD:2 4.125
|
||||
(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp ZP_WORD:3 16.5
|
||||
(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp ZP_WORD:3 4.125
|
||||
(byte) mulf_init::x_2
|
||||
(byte) mulf_init::x_2#1 x_2 zp ZP_BYTE:26 11.0
|
||||
(byte) mulf_init::x_2#2 x_2 zp ZP_BYTE:26 4.888888888888889
|
||||
(byte) mulf_init::x_2#3 x_2 zp ZP_BYTE:26 8.25
|
||||
(byte) mulf_init::x_2#1 x_2 zp ZP_BYTE:2 11.0
|
||||
(byte) mulf_init::x_2#2 x_2 zp ZP_BYTE:2 4.888888888888889
|
||||
(byte) mulf_init::x_2#3 x_2 zp ZP_BYTE:2 8.25
|
||||
(byte) mulf_init::x_255
|
||||
(byte) mulf_init::x_255#1 reg byte x 5.5
|
||||
(byte) mulf_init::x_255#2 reg byte x 11.0
|
||||
@ -259,40 +299,40 @@
|
||||
(label) muls16s::@6
|
||||
(label) muls16s::@return
|
||||
(signed word) muls16s::a
|
||||
(signed word) muls16s::a#0 a zp ZP_WORD:2 175.58333333333334
|
||||
(signed word) muls16s::a#0 a zp ZP_WORD:3 175.58333333333334
|
||||
(signed word) muls16s::b
|
||||
(signed word) muls16s::b#0 b zp ZP_WORD:4 191.1818181818182
|
||||
(signed word) muls16s::b#0 b zp ZP_WORD:5 191.1818181818182
|
||||
(signed word) muls16s::i
|
||||
(signed word) muls16s::i#1 i zp ZP_WORD:8 1501.5
|
||||
(signed word) muls16s::i#2 i zp ZP_WORD:8 1001.0
|
||||
(signed word) muls16s::i#1 i zp ZP_WORD:9 1501.5
|
||||
(signed word) muls16s::i#2 i zp ZP_WORD:9 1001.0
|
||||
(signed word) muls16s::j
|
||||
(signed word) muls16s::j#1 j zp ZP_WORD:8 1501.5
|
||||
(signed word) muls16s::j#2 j zp ZP_WORD:8 1001.0
|
||||
(signed word) muls16s::j#1 j zp ZP_WORD:9 1501.5
|
||||
(signed word) muls16s::j#2 j zp ZP_WORD:9 1001.0
|
||||
(signed dword) muls16s::m
|
||||
(signed dword) muls16s::m#1 m zp ZP_DWORD:10 1001.0
|
||||
(signed dword) muls16s::m#2 m zp ZP_DWORD:10 1001.0
|
||||
(signed dword) muls16s::m#3 m zp ZP_DWORD:10 2002.0
|
||||
(signed dword) muls16s::m#5 m zp ZP_DWORD:10 2002.0
|
||||
(signed dword) muls16s::m#1 m zp ZP_DWORD:11 1001.0
|
||||
(signed dword) muls16s::m#2 m zp ZP_DWORD:11 1001.0
|
||||
(signed dword) muls16s::m#3 m zp ZP_DWORD:11 2002.0
|
||||
(signed dword) muls16s::m#5 m zp ZP_DWORD:11 2002.0
|
||||
(signed dword) muls16s::return
|
||||
(signed dword) muls16s::return#0 return zp ZP_DWORD:10 701.0
|
||||
(signed dword) muls16s::return#2 return zp ZP_DWORD:10 202.0
|
||||
(signed dword) muls16s::return#0 return zp ZP_DWORD:11 701.0
|
||||
(signed dword) muls16s::return#2 return zp ZP_DWORD:11 202.0
|
||||
(dword()) muls16u((word) muls16u::a , (word) muls16u::b)
|
||||
(label) muls16u::@1
|
||||
(label) muls16u::@2
|
||||
(label) muls16u::@return
|
||||
(word) muls16u::a
|
||||
(word) muls16u::a#0 a zp ZP_WORD:2 157.71428571428572
|
||||
(word) muls16u::a#0 a zp ZP_WORD:21 157.71428571428572
|
||||
(word) muls16u::b
|
||||
(word) muls16u::b#0 b zp ZP_WORD:20 183.66666666666669
|
||||
(word) muls16u::b#0 b zp ZP_WORD:23 183.66666666666669
|
||||
(word) muls16u::i
|
||||
(word) muls16u::i#1 i zp ZP_WORD:4 1501.5
|
||||
(word) muls16u::i#2 i zp ZP_WORD:4 1001.0
|
||||
(word) muls16u::i#1 i zp ZP_WORD:3 1501.5
|
||||
(word) muls16u::i#2 i zp ZP_WORD:3 1001.0
|
||||
(dword) muls16u::m
|
||||
(dword) muls16u::m#1 m zp ZP_DWORD:10 1001.0
|
||||
(dword) muls16u::m#3 m zp ZP_DWORD:10 2002.0
|
||||
(dword) muls16u::m#1 m zp ZP_DWORD:11 1001.0
|
||||
(dword) muls16u::m#3 m zp ZP_DWORD:11 2002.0
|
||||
(dword) muls16u::return
|
||||
(dword) muls16u::return#0 return zp ZP_DWORD:10 367.33333333333337
|
||||
(dword) muls16u::return#2 return zp ZP_DWORD:10 202.0
|
||||
(dword) muls16u::return#0 return zp ZP_DWORD:11 367.33333333333337
|
||||
(dword) muls16u::return#2 return zp ZP_DWORD:11 202.0
|
||||
(void()) print_byte((byte) print_byte::b)
|
||||
(byte~) print_byte::$0 reg byte a 4.0
|
||||
(byte~) print_byte::$2 reg byte a 4.0
|
||||
@ -309,43 +349,43 @@
|
||||
(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:14 101.0
|
||||
(byte*) print_char_cursor#124 print_char_cursor zp ZP_WORD:14 3.6060606060606064
|
||||
(byte*) print_char_cursor#125 print_char_cursor zp ZP_WORD:14 5.75
|
||||
(byte*) print_char_cursor#126 print_char_cursor zp ZP_WORD:14 3.0
|
||||
(byte*) print_char_cursor#128 print_char_cursor zp ZP_WORD:14 6.0
|
||||
(byte*) print_char_cursor#129 print_char_cursor zp ZP_WORD:14 5.0
|
||||
(byte*) print_char_cursor#130 print_char_cursor zp ZP_WORD:14 3.0
|
||||
(byte*) print_char_cursor#132 print_char_cursor zp ZP_WORD:14 2.0
|
||||
(byte*) print_char_cursor#135 print_char_cursor zp ZP_WORD:14 22.0
|
||||
(byte*) print_char_cursor#139 print_char_cursor zp ZP_WORD:14 24.0
|
||||
(byte*) print_char_cursor#144 print_char_cursor zp ZP_WORD:14 46.0
|
||||
(byte*~) print_char_cursor#169 print_char_cursor zp ZP_WORD:14 4.0
|
||||
(byte*~) print_char_cursor#178 print_char_cursor zp ZP_WORD:14 4.0
|
||||
(byte*~) print_char_cursor#184 print_char_cursor zp ZP_WORD:14 4.0
|
||||
(byte*) print_char_cursor#20 print_char_cursor zp ZP_WORD:14 0.7317073170731708
|
||||
(byte*) print_char_cursor#82 print_char_cursor zp ZP_WORD:14 6.0
|
||||
(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#176 print_char_cursor zp ZP_WORD:15 4.0
|
||||
(byte*~) print_char_cursor#185 print_char_cursor zp ZP_WORD:15 4.0
|
||||
(byte*~) print_char_cursor#192 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#84 print_char_cursor zp ZP_WORD:15 6.0
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
|
||||
(byte*) print_cls::sc#1 sc zp ZP_WORD:3 16.5
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:3 16.5
|
||||
(void()) print_dword((dword) print_dword::dw)
|
||||
(label) print_dword::@1
|
||||
(label) print_dword::@return
|
||||
(dword) print_dword::dw
|
||||
(dword) print_dword::dw#0 dw zp ZP_DWORD:10 4.0
|
||||
(dword) print_dword::dw#1 dw zp ZP_DWORD:10 4.0
|
||||
(dword) print_dword::dw#2 dw zp ZP_DWORD:10 4.0
|
||||
(dword) print_dword::dw#3 dw zp ZP_DWORD:10 4.0
|
||||
(dword) print_dword::dw#4 dw zp ZP_DWORD:10 3.9999999999999996
|
||||
(dword) print_dword::dw#0 dw zp ZP_DWORD:11 4.0
|
||||
(dword) print_dword::dw#1 dw zp ZP_DWORD:11 4.0
|
||||
(dword) print_dword::dw#2 dw zp ZP_DWORD:11 4.0
|
||||
(dword) print_dword::dw#3 dw zp ZP_DWORD:11 4.0
|
||||
(dword) print_dword::dw#4 dw zp ZP_DWORD:11 3.9999999999999996
|
||||
(byte[]) print_hextab
|
||||
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:6 0.7230769230769231
|
||||
(byte*) print_line_cursor#22 print_line_cursor zp ZP_WORD:6 24.0
|
||||
(byte*) print_line_cursor#43 print_line_cursor zp ZP_WORD:6 10.0
|
||||
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:7 0.6025641025641025
|
||||
(byte*) print_line_cursor#22 print_line_cursor zp ZP_WORD:7 24.0
|
||||
(byte*) print_line_cursor#43 print_line_cursor zp ZP_WORD:7 10.0
|
||||
(void()) print_ln()
|
||||
(label) print_ln::@1
|
||||
(label) print_ln::@return
|
||||
@ -356,56 +396,57 @@
|
||||
(label) print_sdword::@4
|
||||
(label) print_sdword::@return
|
||||
(signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw#0 dw zp ZP_DWORD:10 4.0
|
||||
(signed dword) print_sdword::dw#1 dw zp ZP_DWORD:10 4.0
|
||||
(signed dword) print_sdword::dw#2 dw zp ZP_DWORD:10 4.0
|
||||
(signed dword) print_sdword::dw#3 dw zp ZP_DWORD:10 2.5
|
||||
(signed dword) print_sdword::dw#4 dw zp ZP_DWORD:10 6.0
|
||||
(signed dword) print_sdword::dw#0 dw zp ZP_DWORD:11 4.0
|
||||
(signed dword) print_sdword::dw#1 dw zp ZP_DWORD:11 4.0
|
||||
(signed dword) print_sdword::dw#2 dw zp ZP_DWORD:11 4.0
|
||||
(signed dword) print_sdword::dw#3 dw zp ZP_DWORD:11 4.0
|
||||
(signed dword) print_sdword::dw#4 dw zp ZP_DWORD:11 3.0
|
||||
(signed dword) print_sdword::dw#5 dw zp ZP_DWORD:11 6.0
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
(label) print_str::@1
|
||||
(label) print_str::@2
|
||||
(label) print_str::@return
|
||||
(byte*) print_str::str
|
||||
(byte*) print_str::str#0 str zp ZP_WORD:8 202.0
|
||||
(byte*) print_str::str#14 str zp ZP_WORD:8 101.5
|
||||
(byte*) print_str::str#16 str zp ZP_WORD:8 2.0
|
||||
(byte*) print_str::str#0 str zp ZP_WORD:9 202.0
|
||||
(byte*) print_str::str#15 str zp ZP_WORD:9 101.5
|
||||
(byte*) print_str::str#17 str zp ZP_WORD:9 2.0
|
||||
(void()) print_sword((signed word) print_sword::w)
|
||||
(label) print_sword::@1
|
||||
(label) print_sword::@2
|
||||
(label) print_sword::@4
|
||||
(label) print_sword::@return
|
||||
(signed word) print_sword::w
|
||||
(signed word) print_sword::w#0 w zp ZP_WORD:2 4.0
|
||||
(signed word) print_sword::w#1 w zp ZP_WORD:2 4.0
|
||||
(signed word) print_sword::w#2 w zp ZP_WORD:2 4.0
|
||||
(signed word) print_sword::w#3 w zp ZP_WORD:2 2.5
|
||||
(signed word) print_sword::w#4 w zp ZP_WORD:2 4.0
|
||||
(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
|
||||
(void()) print_word((word) print_word::w)
|
||||
(label) print_word::@1
|
||||
(label) print_word::@return
|
||||
(word) print_word::w
|
||||
(word) print_word::w#1 w zp ZP_WORD:2 4.0
|
||||
(word~) print_word::w#11 w zp ZP_WORD:2 4.0
|
||||
(word) print_word::w#2 w zp ZP_WORD:2 4.0
|
||||
(word) print_word::w#3 w zp ZP_WORD:2 4.0
|
||||
(word) print_word::w#4 w zp ZP_WORD:2 4.0
|
||||
(word) print_word::w#5 w zp ZP_WORD:2 4.666666666666666
|
||||
(word) print_word::w#1 w zp ZP_WORD:3 4.0
|
||||
(word~) print_word::w#11 w zp ZP_WORD:3 4.0
|
||||
(word) print_word::w#2 w zp ZP_WORD:3 4.0
|
||||
(word) print_word::w#3 w zp ZP_WORD:3 4.0
|
||||
(word) print_word::w#4 w zp ZP_WORD:3 4.0
|
||||
(word) print_word::w#5 w zp ZP_WORD:3 4.666666666666666
|
||||
|
||||
reg byte x [ mul16s_compare::i#10 mul16s_compare::i#1 ]
|
||||
zp ZP_WORD:2 [ mul16s_compare::a#2 mul16s_compare::a#5 mul16s_compare::a#1 muls16s::a#0 mul16s::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#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 muls16u::a#0 mulf16u::a#0 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ]
|
||||
zp ZP_WORD:4 [ mul16s_compare::b#2 mul16s_compare::b#5 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mul16s_error::b#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
|
||||
reg byte y [ mul16s_compare::j#2 mul16s_compare::j#1 ]
|
||||
reg byte a [ mul16s_compare::ok#2 ]
|
||||
zp ZP_WORD:6 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
|
||||
zp ZP_WORD:8 [ print_str::str#14 print_str::str#16 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 mul16s::$6 mul16s::$16 mul16s::$12 mul16s::$17 ]
|
||||
zp ZP_DWORD:10 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#1 print_sdword::dw#2 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#3 muls16s::m#1 muls16s::m#2 muls16s::return#2 muls16u::return#0 muls16u::m#3 muls16u::m#1 muls16u::return#2 ]
|
||||
zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 mul16u_compare::i#12 mul16u_compare::i#1 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ]
|
||||
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#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ]
|
||||
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 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
|
||||
reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ]
|
||||
reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ]
|
||||
zp ZP_WORD:7 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
|
||||
zp ZP_WORD:9 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 mulf16s::$6 mulf16s::$16 mulf16s::$12 mulf16s::$17 mul16s::$6 mul16s::$16 mul16s::$12 mul16s::$17 ]
|
||||
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#3 muls16s::m#1 muls16s::m#2 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:14 [ print_char_cursor#82 print_char_cursor#132 print_char_cursor#128 print_char_cursor#129 print_char_cursor#130 print_char_cursor#144 print_char_cursor#125 print_char_cursor#139 print_char_cursor#169 print_char_cursor#124 print_char_cursor#20 print_char_cursor#178 print_char_cursor#135 print_char_cursor#184 print_char_cursor#1 print_char_cursor#126 ]
|
||||
zp ZP_DWORD:16 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 mul16s_compare::mn#0 mul16s_error::mn#0 mul16u_compare::mn#0 mul16u_error::mn#0 ]
|
||||
zp ZP_WORD:20 [ mul16u::b#2 mul16u::b#3 mul16u::b#1 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 muls16u::b#0 mulf16u::b#0 mul16u_error::b#0 ]
|
||||
zp ZP_DWORD:22 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 mulf16u::return#2 mul16u_compare::mf#0 mulf16u::return#0 mul16u_error::mf#0 ]
|
||||
zp ZP_BYTE:26 [ mul16u_compare::i#12 mul16u_compare::i#1 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#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#176 print_char_cursor#128 print_char_cursor#20 print_char_cursor#185 print_char_cursor#139 print_char_cursor#192 print_char_cursor#1 print_char_cursor#130 ]
|
||||
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 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
|
||||
zp ZP_WORD:21 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 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#4 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#2 mul16u::b#3 mul16u::b#1 muls16u::b#0 mul16u_error::b#0 ]
|
||||
zp ZP_DWORD:25 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 mul16s_compare::mn#0 mul16s_error::mn#0 mul16u_compare::mn#0 mul16u_error::mn#0 ]
|
||||
reg byte y [ mul16u_compare::j#10 mul16u_compare::j#1 ]
|
||||
reg byte x [ mul16u_compare::ok#3 mul16u_compare::ok#4 ]
|
||||
reg byte x [ mulf_init::c#2 mulf_init::c#1 ]
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@32
|
||||
@32: scope:[] from @begin
|
||||
to:@33
|
||||
@33: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @32
|
||||
@end: scope:[] from @33
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @32
|
||||
main: scope:[main] from @33
|
||||
[4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] )
|
||||
[5] call print_cls [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
|
@ -324,7 +324,7 @@ mul8s::@return: scope:[mul8s] from mul8s::@2
|
||||
(byte[512]) mulf_sqr1_hi#0 ← { fill( 512, 0) }
|
||||
(byte[512]) mulf_sqr2_lo#0 ← { fill( 512, 0) }
|
||||
(byte[512]) mulf_sqr2_hi#0 ← { fill( 512, 0) }
|
||||
to:@23
|
||||
to:@24
|
||||
mulf_init: scope:[mulf_init] from main::@1
|
||||
(word) mulf_init::sqr#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) mulf_init::x_2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -494,17 +494,17 @@ mulf8s::@return: scope:[mulf8s] from mulf8s::@2
|
||||
(signed word) mulf8s::return#1 ← (signed word) mulf8s::return#3
|
||||
return
|
||||
to:@return
|
||||
@23: scope:[] from @19
|
||||
@24: scope:[] from @19
|
||||
(byte*) print_screen#7 ← phi( @19/(byte*) print_screen#8 )
|
||||
(byte*) print_char_cursor#160 ← phi( @19/(byte*) print_char_cursor#168 )
|
||||
(byte*) print_line_cursor#67 ← phi( @19/(byte*) print_line_cursor#78 )
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
to:@26
|
||||
main: scope:[main] from @32
|
||||
(byte*) print_char_cursor#138 ← phi( @32/(byte*) print_char_cursor#148 )
|
||||
(byte*) print_line_cursor#46 ← phi( @32/(byte*) print_line_cursor#56 )
|
||||
(byte*) print_screen#4 ← phi( @32/(byte*) print_screen#5 )
|
||||
(byte*) BGCOL#1 ← phi( @32/(byte*) BGCOL#5 )
|
||||
to:@27
|
||||
main: scope:[main] from @33
|
||||
(byte*) print_char_cursor#138 ← phi( @33/(byte*) print_char_cursor#148 )
|
||||
(byte*) print_line_cursor#46 ← phi( @33/(byte*) print_line_cursor#56 )
|
||||
(byte*) print_screen#4 ← phi( @33/(byte*) print_screen#5 )
|
||||
(byte*) BGCOL#1 ← phi( @33/(byte*) BGCOL#5 )
|
||||
*((byte*) BGCOL#1) ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
call print_cls
|
||||
to:main::@1
|
||||
@ -652,16 +652,16 @@ muls8s::@return: scope:[muls8s] from muls8s::@4
|
||||
(signed word) muls8s::return#1 ← (signed word) muls8s::return#3
|
||||
return
|
||||
to:@return
|
||||
@26: scope:[] from @23
|
||||
(byte*) print_screen#6 ← phi( @23/(byte*) print_screen#7 )
|
||||
(byte*) print_char_cursor#159 ← phi( @23/(byte*) print_char_cursor#160 )
|
||||
(byte*) print_line_cursor#66 ← phi( @23/(byte*) print_line_cursor#67 )
|
||||
(byte*) BGCOL#15 ← phi( @23/(byte*) BGCOL#0 )
|
||||
@27: scope:[] from @24
|
||||
(byte*) print_screen#6 ← phi( @24/(byte*) print_screen#7 )
|
||||
(byte*) print_char_cursor#159 ← phi( @24/(byte*) print_char_cursor#160 )
|
||||
(byte*) print_line_cursor#66 ← phi( @24/(byte*) print_line_cursor#67 )
|
||||
(byte*) BGCOL#15 ← phi( @24/(byte*) BGCOL#0 )
|
||||
(byte[512]) mula_sqr1_lo#0 ← { fill( 512, 0) }
|
||||
(byte[512]) mula_sqr1_hi#0 ← { fill( 512, 0) }
|
||||
(byte[512]) mula_sqr2_lo#0 ← { fill( 512, 0) }
|
||||
(byte[512]) mula_sqr2_hi#0 ← { fill( 512, 0) }
|
||||
to:@32
|
||||
to:@33
|
||||
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!- }
|
||||
(byte*) mulf_init_asm::mem#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255
|
||||
@ -1382,29 +1382,29 @@ mul8s_error::@return: scope:[mul8s_error] from mul8s_error::@11
|
||||
(byte*) print_line_cursor#21 ← (byte*) print_line_cursor#43
|
||||
return
|
||||
to:@return
|
||||
@32: scope:[] from @26
|
||||
(byte*) print_screen#5 ← phi( @26/(byte*) print_screen#6 )
|
||||
(byte*) print_char_cursor#148 ← phi( @26/(byte*) print_char_cursor#159 )
|
||||
(byte*) print_line_cursor#56 ← phi( @26/(byte*) print_line_cursor#66 )
|
||||
(byte*) BGCOL#5 ← phi( @26/(byte*) BGCOL#15 )
|
||||
@33: scope:[] from @27
|
||||
(byte*) print_screen#5 ← phi( @27/(byte*) print_screen#6 )
|
||||
(byte*) print_char_cursor#148 ← phi( @27/(byte*) print_char_cursor#159 )
|
||||
(byte*) print_line_cursor#56 ← phi( @27/(byte*) print_line_cursor#66 )
|
||||
(byte*) BGCOL#5 ← phi( @27/(byte*) BGCOL#15 )
|
||||
call main
|
||||
to:@33
|
||||
@33: scope:[] from @32
|
||||
(byte*) print_char_cursor#129 ← phi( @32/(byte*) print_char_cursor#25 )
|
||||
(byte*) print_line_cursor#44 ← phi( @32/(byte*) print_line_cursor#9 )
|
||||
to:@34
|
||||
@34: scope:[] from @33
|
||||
(byte*) print_char_cursor#129 ← phi( @33/(byte*) print_char_cursor#25 )
|
||||
(byte*) print_line_cursor#44 ← phi( @33/(byte*) print_line_cursor#9 )
|
||||
(byte*) print_line_cursor#22 ← (byte*) print_line_cursor#44
|
||||
(byte*) print_char_cursor#65 ← (byte*) print_char_cursor#129
|
||||
to:@end
|
||||
@end: scope:[] from @33
|
||||
@end: scope:[] from @34
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(const string) $0 = (string) "0123456789abcdef"
|
||||
(label) @10
|
||||
(label) @19
|
||||
(label) @23
|
||||
(label) @26
|
||||
(label) @32
|
||||
(label) @24
|
||||
(label) @27
|
||||
(label) @33
|
||||
(label) @34
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
@ -3131,13 +3131,13 @@ Culled Empty Block (label) print_cls::@2
|
||||
Culled Empty Block (label) mul8u::@3
|
||||
Culled Empty Block (label) @19
|
||||
Culled Empty Block (label) mulf_init::@6
|
||||
Culled Empty Block (label) @23
|
||||
Culled Empty Block (label) @24
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) muls8u::@3
|
||||
Culled Empty Block (label) muls8s::@1
|
||||
Culled Empty Block (label) muls8s::@2
|
||||
Culled Empty Block (label) muls8s::@7
|
||||
Culled Empty Block (label) @26
|
||||
Culled Empty Block (label) @27
|
||||
Culled Empty Block (label) mulf_tables_cmp::@9
|
||||
Culled Empty Block (label) mulf_tables_cmp::@11
|
||||
Culled Empty Block (label) mul8u_compare::@15
|
||||
@ -3146,7 +3146,7 @@ Culled Empty Block (label) mul8u_error::@11
|
||||
Culled Empty Block (label) mul8s_compare::@15
|
||||
Culled Empty Block (label) mul8s_compare::@17
|
||||
Culled Empty Block (label) mul8s_error::@11
|
||||
Culled Empty Block (label) @33
|
||||
Culled Empty Block (label) @34
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (word) mulf8u::return#0 = (word~) mulf8u::$0
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
@ -3299,7 +3299,7 @@ Added new block during phi lifting mulf_init::@11(between mulf_init::@4 and mulf
|
||||
Added new block during phi lifting mulf_init::@12(between mulf_init::@3 and mulf_init::@4)
|
||||
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @32
|
||||
Adding NOP phi() at start of @33
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@1
|
||||
Adding NOP phi() at start of main::@2
|
||||
@ -3480,7 +3480,7 @@ Culled Empty Block (label) mulf_init::@9
|
||||
Culled Empty Block (label) mulf_init::@10
|
||||
Culled Empty Block (label) print_cls::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @32
|
||||
Adding NOP phi() at start of @33
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@1
|
||||
Adding NOP phi() at start of main::@2
|
||||
@ -3520,14 +3520,14 @@ Adding NOP phi() at start of print_cls
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@32
|
||||
@32: scope:[] from @begin
|
||||
to:@33
|
||||
@33: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @32
|
||||
@end: scope:[] from @33
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @32
|
||||
main: scope:[main] from @33
|
||||
[4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] )
|
||||
[5] call print_cls [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
@ -4718,15 +4718,15 @@ INITIAL ASM
|
||||
.label print_line_cursor = 5
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @32 [phi:@begin->@32]
|
||||
b32_from_bbegin:
|
||||
jmp b32
|
||||
//SEG4 @32
|
||||
b32:
|
||||
//SEG3 [1] phi from @begin to @33 [phi:@begin->@33]
|
||||
b33_from_bbegin:
|
||||
jmp b33
|
||||
//SEG4 @33
|
||||
b33:
|
||||
//SEG5 [2] call main [ ] ( )
|
||||
jsr main
|
||||
//SEG6 [3] phi from @32 to @end [phi:@32->@end]
|
||||
bend_from_b32:
|
||||
//SEG6 [3] phi from @33 to @end [phi:@33->@end]
|
||||
bend_from_b33:
|
||||
jmp bend
|
||||
//SEG7 @end
|
||||
bend:
|
||||
@ -7306,15 +7306,15 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label print_line_cursor = 4
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @32 [phi:@begin->@32]
|
||||
b32_from_bbegin:
|
||||
jmp b32
|
||||
//SEG4 @32
|
||||
b32:
|
||||
//SEG3 [1] phi from @begin to @33 [phi:@begin->@33]
|
||||
b33_from_bbegin:
|
||||
jmp b33
|
||||
//SEG4 @33
|
||||
b33:
|
||||
//SEG5 [2] call main [ ] ( )
|
||||
jsr main
|
||||
//SEG6 [3] phi from @32 to @end [phi:@32->@end]
|
||||
bend_from_b32:
|
||||
//SEG6 [3] phi from @33 to @end [phi:@33->@end]
|
||||
bend_from_b33:
|
||||
jmp bend
|
||||
//SEG7 @end
|
||||
bend:
|
||||
@ -9248,7 +9248,7 @@ print_cls: {
|
||||
mula_sqr2_hi: .fill $200, 0
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b32
|
||||
Removing instruction jmp b33
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp b2
|
||||
@ -9416,8 +9416,8 @@ Replacing label b3_from_b4 with b3
|
||||
Replacing label b1_from_b1 with b1
|
||||
Replacing label b1_from_b1 with b1
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b32_from_bbegin:
|
||||
Removing instruction bend_from_b32:
|
||||
Removing instruction b33_from_bbegin:
|
||||
Removing instruction bend_from_b33:
|
||||
Removing instruction b1_from_main:
|
||||
Removing instruction mulf_init_from_b1:
|
||||
Removing instruction b2_from_b1:
|
||||
@ -9512,7 +9512,7 @@ Removing instruction b12_from_b3:
|
||||
Removing instruction b4_from_b12:
|
||||
Removing instruction b1_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b32:
|
||||
Removing instruction b33:
|
||||
Removing instruction bend:
|
||||
Removing instruction print_cls_from_main:
|
||||
Removing instruction b1:
|
||||
@ -9675,7 +9675,7 @@ Removing unreachable instruction jmp b4
|
||||
Succesful ASM optimization Pass5UnreachableCodeElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @32
|
||||
(label) @33
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
@ -10168,11 +10168,11 @@ Score: 224322
|
||||
.label print_char_cursor = $a
|
||||
.label print_line_cursor = 4
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @32 [phi:@begin->@32]
|
||||
//SEG4 @32
|
||||
//SEG3 [1] phi from @begin to @33 [phi:@begin->@33]
|
||||
//SEG4 @33
|
||||
//SEG5 [2] call main [ ] ( )
|
||||
jsr main
|
||||
//SEG6 [3] phi from @32 to @end [phi:@32->@end]
|
||||
//SEG6 [3] phi from @33 to @end [phi:@33->@end]
|
||||
//SEG7 @end
|
||||
//SEG8 main
|
||||
main: {
|
||||
|
@ -1,4 +1,4 @@
|
||||
(label) @32
|
||||
(label) @33
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
|
Loading…
Reference in New Issue
Block a user