📄 lsf_lsp.asm
字号:
*****************************************************************************
** description: _lsf_lsp in lsf_lsp.c **
** **
** Inputs **
** **
** xar2---Word16 *lsf **
** xar3---Word16 *lsp **
** **
** Outputs: **
** **
** xar3---Word16 *lsp **
** **
** return value : none **
** **
** attribute : cycles:852(m=10) pm:19 **
** Modified registers: acc,ar0,ar1,xar2,xar3,ar6,xar7**
** t,c **
** **
** Programmer : YANG zhiwei **
*****************************************************************************
.global _lsf_lsp
.ref lsf_table
.ref M
_lsf_lsp:
mov ar0,#M-1 ;m = M
;dec ar0
movl xar7,#lsf_table ;xar7 = pointer to lsf_table
_loop_69:
mov al,*xar2 ;al = lsf[i]
asr al,8 ;ind = al
mov ar1,al ;ar1 = ind
and ah,*xar2++,#0x00ff ;ah = lsf[i]�x00ff,then i++
mov ar6,ah ;ar6 = offset
inc ar1 ;ar1 = ind + 1
mov al,*+xar7[ar1] ;acc = lsf_table[ind+1]
dec ar1
sub al,*+xar7[ar1] ;al = lsf_table[ind+1] - lsf_table[ind]
mov t,al
mpy acc,t,ar6 ;acc = al * offset
mov t,#8
asrl acc,t ;arithmetically shift right by t
add al,*+xar7[ar1]
mov *xar3++,al ;lsp[i] = *xar3,then xar3++
banz _loop_69,ar0--
lretr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -