📄 gaecua.s55
字号:
*-------------------------------------------------------------------------*
* *
* THIS IS AN UNPUBLISHED WORK CONTAINING CONFIDENTIAL AND PROPRIETARY *
* INFORMATION. IF PUBLICATION OCCURS, THE FOLLOWING NOTICE APPLIES: *
* "COPYRIGHT 2002 MIKET DSP SOLUTIONS, ALL RIGHTS RESERVED" *
* *
*-------------------------------------------------------------------------*/
.mmregs
.cpl_on
.arms_on
.include "gaeci.h55"
.sect ".ftext2"
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
.global _gaec_utl_avrg
;-------------------------------------------------------------------------
_gaec_utl_avrg
; S16 *psVal = ar0
; S16 sNew = t0
; S16 sCoef = t1
;
ac0 = t0 - *ar0;
ac0 = ac0 << #16;
ac0 = ac0 * t1;
ac0 = ac0 + (*ar0 << #15);
*ar0 = HI(rnd(ac0 << #1));
return;
;-------------------------------------------------------------------------
.global _gaec_utl_pkt_energy
;-------------------------------------------------------------------------
_gaec_utl_pkt_energy
; S16 *psData = xar0
;
; return S16 logEn
;
ac0 = *ar0+ * *ar0+;
|| repeat (#(GAEC_FR_SZ/2-2))
ac0 = ac0 + (*ar0+ * *ar0+);
ac1 = *ar0+ * *ar0+;
|| repeat (#(GAEC_FR_SZ/2-2))
ac1 = ac1 + (*ar0+ * *ar0+);
ac0 = ac0 << #-2;
ac0 = ac0 + (ac1 << #-2);
ac0 = ac0 + #1;
ac0 = mant (ac0), t0 = -exp(ac0) || nop;
ac0 = ac0 << #-21;
ac0 = ac0 + #(0x780-1024);
ac0 = ac0 + (t0*#512);
t0 = ac0;
return
;-------------------------------------------------------------------------
.global _gaec_utl_pkt_norm
;-------------------------------------------------------------------------
_gaec_utl_pkt_norm
; S16 *psData = xar0
;
; return S32 En
;
ac0 = *ar0+ * *ar0+;
|| repeat (#(GAEC_FR_SZ/2-2))
ac0 = ac0 + (*ar0+ * *ar0+);
ac1 = *ar0+ * *ar0+;
|| repeat (#(GAEC_FR_SZ/2-2))
ac1 = ac1 + (*ar0+ * *ar0+);
ac0 = ac0 << #-2;
ac0 = ac0 + (ac1 << #-2);
return
;-------------------------------------------------------------------------
.global _gaec_utl_pen2log
;-------------------------------------------------------------------------
_gaec_utl_pen2log
; S32 slEn = ac0
; returns t0
ac0 = ac0 + #1;
ac0 = mant (ac0), t0 = -exp(ac0);
ac0 = ac0 << #-21;
ac0 = ac0 + #(0x780-1024); -136);
ac0 = ac0 + (t0*#512);
t0 = ac0;
return
;-------------------------------------------------------------------------
.global _gaec_utl_en2log
; .sym _gaec_en2log, _gaec_en2log, 32, 2, 0
;-------------------------------------------------------------------------
_gaec_utl_en2log
; S32 slEn = ac0
; returns t0
ac0 = ac0 + #1;
ac0 = mant (ac0), t0 = -exp(ac0);
ac0 = ac0 << #-21;
ac0 = ac0 + #(0x780-1024-6*170);
ac0 = ac0 + (t0*#512);
t0 = ac0;
return
;-------------------------------------------------------------------------
.global _gaec_utl_exp
; .sym _gaec_exp, _gaec_exp, 32, 2, 0
;-------------------------------------------------------------------------
_gaec_utl_exp
; S16 slog = t0
; returns S16 sExp in t0
;
sp = sp + #-1;
ac0 = t0;
ac1 = ac0 << #-10;
ac0 = ac0 << #2;
ac0 = ac0 & #4095;
*sp(0) = ac0;
ac0 = *sp(0) * *sp(0);
ac0 = ac0 << #-13;
ac0 = ac0 + *sp(0);
ac0 = ac0 << #16
ac0 = ac0 * #21845;
ac0 = ac0 << #-15;
t0 = ac1;
ac0 = ac0 + #4096;
ac0 = ac0 << t0;
t0 = ac0;
sp = sp + #1;
return
;-------------------------------------------------------------------------
.global _memclr
;-------------------------------------------------------------------------
_memclr ; to avoid C compliler bug
; S16 *p = ar0
; s16 sz = t0
t0 = t0 - #1;
CSR = t0
repeat (CSR)
*ar0+ = #0
return;
.if 0
;-------------------------------------------------------------------------
.global _gaec_pkt_peak
; .sym _gaec_pkt_peak, _gaec_pkt_peak, 32, 2, 0
;-------------------------------------------------------------------------
_gaec_pkt_peak
; S16 *psIn = xar0
; returns t0
brc0 = #(GAEC_FR_SZ-1)
t0 = #0
|| localrepeat {
t1 = *ar0+;
t1 = |t1|;
t0 = max(t1, t0);
}
return
.endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -