📄 comp_corr.asm
字号:
*****************************************************************************
** Description: comp_corr() in calc_cor.c **
** **
** Inputs **
** AR1---Word16 L_frame : length of frame to compute pitch **
** XAR2---Word16 scal_sig[] : scaled signal. **
** AR0---Word16 lag_max : maximum lag **
** AR4---Word16 lag_min : minimum lag **
** **
**Outputs: **
** *XAR3---Word32 corr[] :correlation of selected lag **
** **
** Return value : **
** **
** Attribute : Cycles:47157 Pm:21 **
** Modified Registers: AR1,XAR2,XAR3,AR4,XAR7 **
** ACC,P,T **
** **
** Programmer : ZHOU Bei (ok! Mar 5th,2003) **
*****************************************************************************
.global _comp_corr
_comp_corr:
DEC AR4 ; For loop times
DEC AR1 ; For loop times
MOVL ACC,XAR2 ; Set strat to scal_sig[-lag_max]
SUB ACC,AR0
MOVL XAR7,ACC
MOVL ACC,XAR3 ; Set strat to corr[-lag_max]
SUB ACC,AR0<<1
MOVL XAR3,ACC
_LOOP_66:
PUSH XAR2 ; Save start addr of scal_sig[-m]
PUSH XAR7 ; Save times for _loop_72
push xar1
zapa
;_loop_70:
;nop
rpt ar1
||mac p,*xar2++,*xar7++
;MOV T,*XAR2++
;MPYA P,T,*XAR7++
; mac p,*xar2++,*xar7++
; BANZ _loop_70,ar1--
ADDL ACC,P<<PM ; Perform final accumulate
MOVL *XAR3++,ACC ; Save 32bits to corr[-m]
pop xar1
POP XAR7 ; Resume times for _loop_72
POP XAR2 ; Resume start address of scal_sig[-m]
ADDB XAR7,#1 ; Start address of scal_sig[-m]++
DEC AR0 ; Dec maximum lag
BAR _LOOP_66,AR0,AR4,NEQ ; If maxmum_lag!=minmum_lag,Loop
LRETR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -