📄 corr_xy2.asm
字号:
.mmregs
.include ..\include\const.h
.include ..\include\tab_ld8a.h
.include ..\include\ld8amem.h
.def Corr_xy2
;----------------------------------------------------------------------
; Corr_xy2
;----------------------------------------------------------------------
; void Corr_xy2(
; Word16 xn[], /* (i) Q0 :Target vector. */
; Word16 y1[], /* (i) Q0 :Adaptive codebook. */
; Word16 y2[], /* (i) Q12 :Filtered innovative vector. */
; Word16 g_coeff[], /* (o) Q[exp]:Correlations between xn,y1,y2 */
; Word16 exp_g_coeff[] /* (o) :Q-format of g_coeff[] */
; )
;----------------------------------------------------------------------
; Contstants : Addr_xn1 -> xn
; Addr_yn1 -> y1
; Addr_yn2 -> y2
; Addr_g_coeff_cs -> g_coeff
; Addr_exp_g_coeff_cs -> exp_g_coeff
;----------------------------------------------------------------------
.asg "AR2", pXn
.asg "AR2", pYn1
.asg "AR3", pYn2
.asg "AR4", pGcoef
.asg "AR5", pExpGcoef
.asg "Addr_local_buf2",temp
Corr_xy2:
STM #Addr_yn2, pYn2
STM #Addr_g_coeff_cs + 2, pGcoef
STM #Addr_exp_g_coeff_cs + 2, pExpGcoef
LD #1,A
STM #L_SUBFR-1,AR1
STM #temp,AR6
Next:
LD *pYn2+,-3,B
STL B,*AR6
SQURA *AR6,A
BANZ Next,*AR1-
MAR *+pYn2(-40)
LD #1,B
SFTA A,6
EXP A
ST T, *pExpGcoef
NORM A
ADD B, 15, A
SAT A
STL A,-16, *pGcoef+
ADDM #9, *pExpGcoef+
STM #Addr_xn1, pXn
STM #Addr_yn2, pYn2
LD B, A
STM #L_SUBFR - 1,AR1
Next1:
LD *pYn2+,-3,B
STLM B,T
BANZD Next1,*AR1-
MAC *pXn+,A
NOP
LD #1,B
SFTA A, 7
EXP A
ST T, *pExpGcoef+
NORM A
ADD B, 15, A
SAT A
LD A, -16, A ; to be bit exact with c code
NEG A
STL A, *pGcoef+
STM #Addr_yn1, pYn1
STM #Addr_yn2, pYn2
LD B, A
STM #L_SUBFR - 1,AR1
Next2:
LD *pYn2+,-3,B
STLM B,T
BANZD Next2,*AR1-
MAC *pYn1+,A
NOP
LD #1,B
SFTA A, 7
EXP A
ST T, *pExpGcoef
NORM A
ADD B, 15, A
RETD
STL A,-16,*pGcoef
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -