📄 pred_lt3.asm
字号:
.mmregs
.include "ld8a.inc"
.include "tab_ld8a.inc"
.global Pred_lt_3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;void Pred_lt_3(
; Word16 exc[], /* in/out: excitation buffer */
; Word16 T0, /* input : integer pitch lag */
; Word16 frac, /* input : fraction of lag */
; Word16 L_subfr /* input : subframe size */
;)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Pred_lt_3:
pshm ar0
pshm ar2
pshm ar3
pshm ar4
pshm ar5
pshm ar6
frame -9;*sp(0)--i,*sp(1)--j,*sp(2)--k
;*sp(3)--x0,*sp(4)--x1,*sp(5)--x2
;*sp(6)--c1,*sp(7)--c2,*sp(8)--exc
;*sp(16)--T0,*sp(17)--frac,*sp(18)--L_subfr
stl a,*sp(8)
sub *sp(16),a
stl a,*sp(3)
ld *sp(17),16,a
neg a
sth a,*sp(17)
bc pred_lt_g,ageq
addm #UP_SAMP,*sp(17)
addm #-1,*sp(3)
pred_lt_g:
ld #inter_3l,a
add *sp(17),a
stl a,*sp(0) ;*sp(0)--&inter_3l[frac]
ld #UP_SAMP,a
sub *sp(17),a
ld #inter_3l,b
add a,b
stl b,*sp(2) ;*sp(2)--&inter_3l[sub(UP_SAMP,frac)]
stm #UP_SAMP,ar0
mvdk *sp(8),ar6
st #0,*sp(1) ;j=0
pred_lt_rep1:
mvdk *sp(3),ar2 ;ar2--x1
addm #1,*sp(3)
mvdk *sp(3),ar3 ;ar3--x2
mvdk *sp(0),ar4 ;ar4--c1
mvdk *sp(2),ar5 ;ar5--c2
ld #0,b
stm #L_INTER10-1,brc
rptb pred_lt_rep-1
mac *ar2-,*ar4,b
ld *ar4+0,a
mac *ar3+,*ar5,b
ld *ar5+0,a
pred_lt_rep:
add #4000h,1,b
sth b,*ar6+
addm #1,*sp(1)
ld *sp(1),16,a
sub *sp(18),16,a
bc pred_lt_rep1,alt
frame 9
popm ar6
popm ar5
popm ar4
popm ar3
popm ar2
popm ar0
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -