📄 get_lsp_pol.asm
字号:
*****************************************************************************
** Description: _Get_lsp_pol in lsp_Az.c **
** **
** Inputs **
** **
** xar3---Word16 *lsp **
** xar4---Word32 *f **
** **
** Outputs: **
** **
** Return value : none **
** **
** Attribute : Cycles:3340 Pm:50 **
** Modified Registers: acc,p,t,xar2--7 **
** **
** Programmer : YANG zhiwei **
*****************************************************************************
.global _Get_lsp_pol
_Get_lsp_pol:
mov acc,#0x1000<<#12
movl *xar4++,acc ;f[0] = 4096 * 2048 * 2 ,then i++
spm 1
zapa
mpy p,*xar3,#512
subl acc,p<<pm
movl *xar4++,acc ;f[1] = -2.0 * lsp[0]
addb xar3,#2 ;Advance lsp pointer
movb xar2,#2 ;i = 2
_loop_93:
subb xar4,#2*2 ;xar4 = &f[-2]
movl acc,*xar4
addb xar4,#2*2
movl *xar4,acc ;*f = f[-2]
movb xar5,#1 ;j = 1
_loop_97:
subb xar4,#1*2
movl acc,*xar4 ;acc = f[-1]
addb xar4,#1*2
mov ar6,ah ;ar6 = hi
lsr al,1
mov ar7,al ;ar7 = lo
zapa ;acc = p = ovc = 0
mov t,*xar3 ;t = *lsp
mpya p,t,ar6 ;acc = 0,p = hi * lsp
mpya p,t,ar7 ;acc = (hi * lsp)<<pm, p = lo * lsp
movh ar7,p ;ar7 = (p<<pm)>>16 = ph
add acc,ar7<<#1
lsl acc,1 ;t0 = L_shl (t0, 1)
subl *xar4,acc ;*f = *f - t0
subb xar4,#2*2 ;xar4 = &f[-2]
movl acc,*xar4
addb xar4,#2*2
addl *xar4,acc ;*f = *f + f[-2]
addb xar5,#1 ;j++
subb xar4,#2 ;f--
mov al,ar5 ;al = j
cmp al,ar2 ;Set Flags On (j - i)
bf _loop_97,lt ;if (j < i) then jump to _loop_97
movl acc,*xar4 ;acc = *f
mpy p,*xar3,#512 ;p = *lsp * 512
subl acc,p<<pm ;acc = *f - (*lsp * 512)<<1
movl *xar4,acc
mov acc,ar2 ;acc = i
lsl acc,1 ;acc = i * 2
addl xar4,acc ;f = f + i
addb xar3,#2 ;lsp += 2
addb xar2,#1 ;i++
cmp ar2,#5 ;Set Flags On (i - 5)
bf _loop_93,leq ;if (i <= 5) then jump to _loop_93
LRETR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -