mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-11-23 08:32:39 +00:00
Added variable word ROR and word=word&word
This commit is contained in:
parent
253babb8ea
commit
3fa29f5ec2
6
src/main/fragment/vwuz1=vwuz2_band_vwuz3.asm
Normal file
6
src/main/fragment/vwuz1=vwuz2_band_vwuz3.asm
Normal file
@ -0,0 +1,6 @@
|
||||
lda {z2}
|
||||
and {z3}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
and {z3}+1
|
||||
sta {z1}+1
|
7
src/main/fragment/vwuz1=vwuz2_plus__hi_vwuz2.asm
Normal file
7
src/main/fragment/vwuz1=vwuz2_plus__hi_vwuz2.asm
Normal file
@ -0,0 +1,7 @@
|
||||
lda {z2}
|
||||
clc
|
||||
adc {z2}+1
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
adc #0
|
||||
sta {z1}+1
|
12
src/main/fragment/vwuz1=vwuz2_ror_vbuxx.asm
Normal file
12
src/main/fragment/vwuz1=vwuz2_ror_vbuxx.asm
Normal file
@ -0,0 +1,12 @@
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
sta {z1}+1
|
||||
cpx #0
|
||||
beq !e+
|
||||
!:
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
dex
|
||||
bne !-
|
||||
!e:
|
12
src/main/fragment/vwuz1=vwuz2_ror_vbuyy.asm
Normal file
12
src/main/fragment/vwuz1=vwuz2_ror_vbuyy.asm
Normal file
@ -0,0 +1,12 @@
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
sta {z1}+1
|
||||
cpy #0
|
||||
beq !e+
|
||||
!:
|
||||
lsr {z1}+1
|
||||
ror {z1}
|
||||
dey
|
||||
bne !-
|
||||
!e:
|
@ -90,7 +90,7 @@ word div10(word val){
|
||||
val = (val >> 1) + 1;
|
||||
val += val << 1;
|
||||
val += val >> 4;
|
||||
val += val >> 4 >> 4; // >> 8 is not supported?
|
||||
val += val >> 8; // >> 8 is not supported? FIXED!
|
||||
return val >> 4;
|
||||
}
|
||||
|
||||
|
@ -563,12 +563,11 @@ append: {
|
||||
div10: {
|
||||
.label _0 = $21
|
||||
.label _2 = $23
|
||||
.label _3 = 4
|
||||
.label _4 = $25
|
||||
.label _5 = $25
|
||||
.label _3 = $25
|
||||
.label _4 = 4
|
||||
.label val = $21
|
||||
.label val_1 = $23
|
||||
.label val_2 = 4
|
||||
.label val_2 = $25
|
||||
.label val_3 = 4
|
||||
.label return = 4
|
||||
.label val_4 = 2
|
||||
@ -611,27 +610,25 @@ div10: {
|
||||
lda val_2+1
|
||||
adc val_1+1
|
||||
sta val_2+1
|
||||
sta _4+1
|
||||
ldy #8
|
||||
lda val_2
|
||||
sta _4
|
||||
ldy #4
|
||||
lda val_2+1
|
||||
sta _4+1
|
||||
cpy #0
|
||||
beq !e+
|
||||
!:
|
||||
lsr _4+1
|
||||
ror _4
|
||||
dey
|
||||
bne !-
|
||||
ldy #4
|
||||
!:
|
||||
lsr _5+1
|
||||
ror _5
|
||||
dey
|
||||
bne !-
|
||||
!e:
|
||||
lda val_3
|
||||
clc
|
||||
adc _5
|
||||
adc val_2
|
||||
sta val_3
|
||||
lda val_3+1
|
||||
adc _5+1
|
||||
adc val_2+1
|
||||
sta val_3+1
|
||||
ldy #4
|
||||
!:
|
||||
|
@ -390,57 +390,56 @@ div10: scope:[div10] from main::@6
|
||||
[185] (word) div10::val#1 ← (word) div10::val#0 + (word~) div10::$2
|
||||
[186] (word~) div10::$3 ← (word) div10::val#1 >> (byte) 4
|
||||
[187] (word) div10::val#2 ← (word) div10::val#1 + (word~) div10::$3
|
||||
[188] (word~) div10::$4 ← (word) div10::val#2 >> (byte) 4
|
||||
[189] (word~) div10::$5 ← (word~) div10::$4 >> (byte) 4
|
||||
[190] (word) div10::val#3 ← (word) div10::val#2 + (word~) div10::$5
|
||||
[191] (word) div10::return#0 ← (word) div10::val#3 >> (byte) 4
|
||||
[188] (word~) div10::$4 ← (word) div10::val#2 >> (byte) 8
|
||||
[189] (word) div10::val#3 ← (word) div10::val#2 + (word~) div10::$4
|
||||
[190] (word) div10::return#0 ← (word) div10::val#3 >> (byte) 4
|
||||
to:div10::@return
|
||||
div10::@return: scope:[div10] from div10
|
||||
[192] return
|
||||
[191] return
|
||||
to:@return
|
||||
div16u: scope:[div16u] from main::@2
|
||||
[193] (word) divr16u::dividend#1 ← (word) div16u::dividend#0
|
||||
[194] call divr16u
|
||||
[195] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
[192] (word) divr16u::dividend#1 ← (word) div16u::dividend#0
|
||||
[193] call divr16u
|
||||
[194] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
to:div16u::@1
|
||||
div16u::@1: scope:[div16u] from div16u
|
||||
[196] (word) div16u::return#0 ← (word) divr16u::return#2
|
||||
[195] (word) div16u::return#0 ← (word) divr16u::return#2
|
||||
to:div16u::@return
|
||||
div16u::@return: scope:[div16u] from div16u::@1
|
||||
[197] return
|
||||
[196] return
|
||||
to:@return
|
||||
divr16u: scope:[divr16u] from div16u
|
||||
[198] phi()
|
||||
[197] phi()
|
||||
to:divr16u::@1
|
||||
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
||||
[199] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[199] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[199] (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#1 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[199] (word) divr16u::rem#4 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::rem#9 )
|
||||
[200] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1
|
||||
[201] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2
|
||||
[202] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
|
||||
[203] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
|
||||
[198] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[198] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[198] (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#1 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[198] (word) divr16u::rem#4 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::rem#9 )
|
||||
[199] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1
|
||||
[200] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2
|
||||
[201] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
|
||||
[202] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
|
||||
to:divr16u::@4
|
||||
divr16u::@4: scope:[divr16u] from divr16u::@1
|
||||
[204] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
|
||||
[203] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
|
||||
to:divr16u::@2
|
||||
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
||||
[205] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[206] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1
|
||||
[207] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
|
||||
[208] if((word) divr16u::rem#5<(const word) div16u::divisor#0) goto divr16u::@3
|
||||
[204] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[205] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1
|
||||
[206] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
|
||||
[207] if((word) divr16u::rem#5<(const word) div16u::divisor#0) goto divr16u::@3
|
||||
to:divr16u::@5
|
||||
divr16u::@5: scope:[divr16u] from divr16u::@2
|
||||
[209] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[210] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) div16u::divisor#0
|
||||
[208] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[209] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) div16u::divisor#0
|
||||
to:divr16u::@3
|
||||
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
||||
[211] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[211] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[212] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[213] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
|
||||
[210] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[210] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[211] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[212] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
|
||||
to:divr16u::@return
|
||||
divr16u::@return: scope:[divr16u] from divr16u::@3
|
||||
[214] return
|
||||
[213] return
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -36,9 +36,8 @@
|
||||
(word()) div10((word) div10::val)
|
||||
(word~) div10::$0 $0 zp ZP_WORD:33 4.0
|
||||
(word~) div10::$2 $2 zp ZP_WORD:35 4.0
|
||||
(word~) div10::$3 $3 zp ZP_WORD:4 4.0
|
||||
(word~) div10::$4 $4 zp ZP_WORD:37 4.0
|
||||
(word~) div10::$5 $5 zp ZP_WORD:37 4.0
|
||||
(word~) div10::$3 $3 zp ZP_WORD:37 4.0
|
||||
(word~) div10::$4 $4 zp ZP_WORD:4 4.0
|
||||
(label) div10::@return
|
||||
(word) div10::return
|
||||
(word) div10::return#0 return zp ZP_WORD:4 34.33333333333333
|
||||
@ -46,7 +45,7 @@
|
||||
(word) div10::val
|
||||
(word) div10::val#0 val zp ZP_WORD:33 3.0
|
||||
(word) div10::val#1 val#1 zp ZP_WORD:35 3.0
|
||||
(word) div10::val#2 val#2 zp ZP_WORD:4 2.0
|
||||
(word) div10::val#2 val#2 zp ZP_WORD:37 3.0
|
||||
(word) div10::val#3 val#3 zp ZP_WORD:4 4.0
|
||||
(word) div10::val#4 val#4 zp ZP_WORD:2 103.0
|
||||
(word()) div16u((word) div16u::dividend , (word) div16u::divisor)
|
||||
@ -303,7 +302,7 @@
|
||||
(const byte*) zp2#0 zp2 = (byte*) 98
|
||||
|
||||
zp ZP_WORD:2 [ main::u#11 main::u#2 myprintf::w1#6 myprintf::w1#0 myprintf::w1#1 div16u::dividend#0 main::u#15 main::u#4 div10::val#4 ]
|
||||
zp ZP_WORD:4 [ myprintf::w2#7 myprintf::w2#0 myprintf::w2#1 main::v#1 main::v#2 div16u::return#2 div16u::return#0 div10::return#2 div10::return#0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div10::$3 div10::val#2 div10::val#3 ]
|
||||
zp ZP_WORD:4 [ myprintf::w2#7 myprintf::w2#0 myprintf::w2#1 main::v#1 main::v#2 div16u::return#2 div16u::return#0 div10::return#2 div10::return#0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div10::$4 div10::val#3 ]
|
||||
zp ZP_WORD:6 [ myprintf::w3#7 myprintf::w3#0 myprintf::w3#1 main::$3 main::$12 main::$2 main::$11 ]
|
||||
zp ZP_WORD:8 [ myprintf::str#10 myprintf::str#5 myprintf::str#0 ]
|
||||
zp ZP_BYTE:10 [ myprintf::bFormat#10 myprintf::bFormat#4 ]
|
||||
@ -341,6 +340,6 @@ reg byte a [ utoa::$16 ]
|
||||
reg byte a [ utoa::$17 ]
|
||||
zp ZP_WORD:33 [ div10::$0 div10::val#0 ]
|
||||
zp ZP_WORD:35 [ div10::$2 div10::val#1 ]
|
||||
zp ZP_WORD:37 [ div10::$4 div10::$5 ]
|
||||
zp ZP_WORD:37 [ div10::$3 div10::val#2 ]
|
||||
reg byte a [ divr16u::$1 ]
|
||||
reg byte a [ divr16u::$2 ]
|
||||
|
Loading…
Reference in New Issue
Block a user