📄 agc2.asm
字号:
*****************************************************************************
** Description: agc2() in agc.c **
** **
** Inputs **
** **
** xar6---Word16 *sig_out **
** xar4---Word16 *sig_in **
** **
** Outputs: **
** xar6---Word16 *sig_out **
** **
** Return value : none **
** **
** Attribute : Cycles:3323 Pm: 61 **
** Modified Registers: all **
** **
** Programmer : Qi Ying **
*****************************************************************************
.global _agc2
.ref _energy_new
.ref _div_s
.ref _inv_sqrt
_agc2:
movl xar3, xar6 ;input:xar3=sig_out
LCR _energy_new ;output:acc=s
movb xar0, #0
cmpl acc, xar0
sb _Line_282, NEQ
LRETR
_Line_282:
movl xar1, acc
RPT #31
||NORM acc, xar0++
subb xar0, #1
mov T, ar0 ;T=exp
movl acc, xar1
lsll acc, T
add acc, #0x0800<<#4
mov ar1, ah ;ar1=gain_out
push T
movl xar3, xar4 ;input:xar3=sig_in
LCR _energy_new ;output:acc=s
pop T
movl xar7, acc
movb xar0, #0
cmpl acc, xar0
sb _Line_313, EQ ;ar0=g0=0
RPT #31
||NORM acc, xar0++ ;ar0=i
mov ar3, T ;exp
mov T, ar0 ;T=i
movl acc, xar7
lsll acc, T
add acc, #0x0800<<#4
mov ar2, ah ;ar2=gain_in
push T
LCR _div_s ;input:ar1=gain_out,ar2=gain_in
;output:al
mov ah, al
mov al, #16
mov T, al
asrl acc, T ;acc=s
lsl acc, #7
pop T ;i
push acc
mov al, ar3 ;exp
cmp al, T
sb _Line_297, GEQ
sub T, al
pop acc
lsll acc, T
sb _Line_307, UNC
_Line_297:
sub al, T
mov T, al
pop acc
asrl acc, T
_Line_307:
LCR _inv_sqrt
lsl acc, #9
add acc, #0x0800<<#4
mov ar0, ah ;ar0=g0
_Line_313:
mov ar3, #39
_Loop_313:
mov T, ar0 ;g0
mpy acc, T, *xar6 ;sig_out[i]
lsl acc, #4
mov *xar6++, ah
banz _Loop_313, ar3--
subb xar6, #40
LRETR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -