?? vq_subvec4.asm
字號(hào):
*****************************************************************************
** Description: Vq_subvec4 in q_plsf_3.c **
** **
** Inputs **
** **
** xar2---Word16 *lsf_r1 **
** xar3---Word16 *dico **
** xar4---Word16 *wf1 **
** ar7---Word16 dico_size **
** **
** Outputs: lsf_r1[] **
** **
** Return value : al---Word16 index **
** **
** Attribute : Cycles: 36340 Pm: 38 **
** Modified Registers: all **
** **
** Programmer : YANG zhiwei **
*****************************************************************************
.global _Vq_subvec4
.ref MAX_32
_Vq_subvec4:
addb sp,#6
movl xar5,#MAX_32 ;dist_min = MAX_32
movl *-sp[2],xar3 ;store *dico in buffer3
mov ar0,#0 ;i = 0
mov *-sp[4],#0 ;index = 0
_loop_69:
bar _line_97,ar0,ar7,eq ;if( i = dico_size ) ,jump to _line_97
mov ar1,#0
movb xar6,#0 ;dist = 0
_loop_71:
mov al,*+xar2[ar1] ;al = lsf_r1[i]
sub al,*xar3++ ;al = temp = sub (lsf_r1[0], *p_dico++)
mov t,*+xar4[ar1] ;t = wf1[i]
mpy acc,t,al
lsl acc,1 ;ah = temp = mult (wf1[0], temp)
mov t,ah
mpy p,t,ah
movl acc,xar6 ;restore dist from xar6
addl acc,p<<pm ;dist = L_mac (dist, temp, temp)
movl xar6,acc ;store dist into xar6
inc ar1
cmp ar1,#4
bf _loop_71,lt ;if(ar1 < 4),jump to _loop_71
cmpl acc,xar5 ;cmp dist with dist_min
bf _line_69,geq ;if(dist >= dist_min),then jump to _line_69
movl xar5,acc ;else,dist_min = dist
mov *-sp[4],ar0 ;index = i
_line_69:
inc ar0 ;i++
bf _loop_69,unc
_line_97:
mov acc,*-sp[4] ;al = index
lsl acc,2
addl acc,*-sp[2]
movl xar3,acc ;p_dico = &dico[shl (index, 2)]
mov ar0,#0
_loop_98:
mov al,*xar3++
mov *+xar2[ar0],al ;lsf_r1[i] = *p_dico++
inc ar0
cmp ar0,#4
bf _loop_98,lt
mov al,*-sp[4] ;al = index
subb sp,#6
lretr
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -