?? calc_filt_energies.asm
字號:
*****************************************************************************
** Description: calc_filt_energies() in calc_enc.c **
** **
** Inputs **
** **
** xar0 ---Word16 xn[] **
** xar1 ---Word16 xn2[] **
** xar2 ---word16 y1[] **
** xar3 ---word16 Y2[] **
** xar6 ---word16 g_coeff[] **
** Outputs: **
** xar4 ---word16 frac_coeff[] **
** xar5 ---Word16 exp_coeff[] **
** **
** Attribute : Cycles: 3978 Pm: 79 **
** Modified Registers: all **
** **
** Programmer : xiewei **
*****************************************************************************
.global _calc_enc
.ref _buffer2
_calc_enc:
MOV @AR1,#39 ;L_SUBFR=40
;BY SKIFF
PUSH XAR2
MOVL XAR2,@XAR3
MOVL XAR3,#_buffer2-40
MOVL XAR7,@XAR3
_loop_31: ;for (i = 0; i < L_SUBFR; i++) {
MOV AL,*XAR2++ ;y2[i] = shr(Y2[i], 3); }
ASR AL,#3
MOV *XAR3++, AL
BANZ _loop_31,AR1--
POP XAR2
MOV AL,*XAR6++ ;frac_coeff[0] = g_coeff[0]
MOV *XAR4++,AL
MOV AL,*XAR6++ ;exp_coeff[0] = g_coeff[1];
MOV *XAR5++,AL
;by yangzhw
MOV AH,*XAR6++ ;frac_coeff[1] = negate(g_coeff[2]);
MOV AL,#0
NEG ACC
MOV *XAR4++,AH ;exp_coeff[1] = add(g_coeff[3], 1);
MOV AL,*XAR6
ADD AL,#1
MOV *XAR5++,AL
MOVL XAR3,@XAR7 ;s = L_mac(ener_init, y2[0], y2[0]);
MOV T,*XAR3
MPY P,T,*XAR3++
MOVB ACC,#1
ADDL ACC,P<<PM
MOV @AR1,#38 ;for (i = 1; i < L_SUBFR; i++)
MOVL XAR3,@XAR7
ADDB XAR3,#1
_loop_56:
MOV T,*XAR3 ;s = L_mac(s, y2[i], y2[i]);
MPY P,T,*XAR3++
ADDL ACC,P<<PM
BANZ _loop_56,AR1--
CSB ACC ;exp = norm_l(s),to T!
;frac_coeff[2] = extract_h(L_shl(s, exp));
LSL ACC,T
MOV *XAR4++,AH
MOV AL,#15 ; exp_coeff[2] = sub(15 - 18, exp);
SUB AL,#18
SUB AL,T
MOV *XAR5++,AL
MOV T,*XAR0 ;s = L_mac(ener_init, xn[0], y2[0]);
MOVL XAR3,@XAR7
MPY P,T,*XAR3
MOVB ACC,#1
ADDL ACC,P<<PM
MOV @AR1,#38 ;for (i = 1; i < L_SUBFR; i++)
ADDB XAR0,#1
ADDB XAR3,#1
_loop_80: ;s = L_mac(s, xn[i], y2[i])
MOV T,*XAR0++
MPY P,T,*XAR3++
ADDL ACC,P<<PM
BANZ _loop_80,AR1--
CSB ACC ; exp = norm_l(s); to T
;frac_coeff[3] = negate(extract_h(L_shl(s, exp)));
LSLL ACC,T
;by yangzhw
;NEG AH
MOV AL,#0
NEG ACC
MOV *XAR4++,AH
MOV AL,#15 ;exp_coeff[3] = sub(15 - 9 + 1, exp);
SUB AL,#9
ADD AL,#1
SUB AL,T
MOV *XAR5++,AL
MOVL XAR3,@XAR7
MOV T,*XAR2 ;s = L_mac(ener_init, y1[0], y2[0]);
MPY P,T,*XAR3
MOVB ACC,#1
ADDL ACC,P<<PM
MOV @AR1,#38 ;for (i = 1; i < L_SUBFR; i++)
ADDB XAR2,#1 ;s = L_mac(s, y1[i], y2[i])
ADDB XAR3,#1
_loop_104:
MOV T,*XAR2++
MPY P,T,*XAR3++
ADDL ACC,P<<PM
BANZ _loop_104,AR1--
CSB ACC ; exp = norm_l(s); to T
LSLL ACC,T ;frac_coeff[4] = extract_h(L_shl(s, exp));
MOV *XAR4,AH
MOV AL,#15 ;exp_coeff[4] = sub(15 - 9 + 1, exp);
SUB AL,#9
ADD AL,#1
SUB AL,T
MOV *XAR5,AL
SUBB XAR4,#4
SUBB XAR5,#4
LRETR
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -