📄 gaecnrga.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"
;-------------------------------------------------------------------------
_EN_CORR .set (-3*GAEC_1DB - GAEC_1DB/2)
;-------------------------------------------------------------------------
.global _gaec_nrg_rcv
;-------------------------------------------------------------------------
_gaec_nrg_rcv
; GAEC_tDb *pDb = ar0,
; GAEC_tSc *pSc = ar1
xar2 = dbl(*ar0(#(GAEC_tDb.psRcv)))
xar3 = mar(*ar1(#(GAEC_tSc.asRoutEn)))
; mar(ar2 + #(GAEC_ADF_SZ - 1))
mar(*+ar2(#(GAEC_ADF_SZ - 1)))
xar4 = mar(*ar2(#(GAEC_RCV_SZ*(GAEC_BANDS+1))))
t0 = #(GAEC_RCV_SZ - GAEC_BLKS+1);
; the first real band
ac0 = *ar2+ * *ar2+;
.loop (GAEC_BLKS-2)
ac0 = ac0 + (*ar2+ * *ar2+);
.endloop
ac0 = ac0 + (*(ar2+t0) * *(ar2+t0));
m_en2log ac0, t1
*ar3+ = ac0;
; middle complex bands
brc0 = #(GAEC_BANDS-2);
localrepeat {
ac0 = *ar2+ * *ar2+;
.loop (GAEC_BLKS-2)
ac0 = ac0 + (*ar2+ * *ar2+);
.endloop
ac0 = ac0 + (*(ar2+t0) * *(ar2+t0));
.loop (GAEC_BLKS-1)
ac0 = ac0 + (*ar4+ * *ar4+);
.endloop
ac0 = ac0 + (*(ar4+t0) * *(ar4+t0));
m_en2log ac0, t1
*ar3+ = ac0;
}
; the last real band
ac0 = *ar2+ * *ar2+;
.loop (GAEC_BLKS-1)
ac0 = ac0 + (*ar2+ * *ar2+);
.endloop
m_en2log ac0, t1
*ar3+ = ac0;
return
;-------------------------------------------------------------------------
.global _gaec_nrg_blk
;-------------------------------------------------------------------------
_gaec_nrg_blk
; S16 *psFrom = ar0,
; S16 *psTo = ar1
xar2 = mar(*ar0(#(GAEC_BLKS*(GAEC_BANDS+1))))
; the first band
ac0 = #0;
|| repeat (#(GAEC_BLKS-1))
ac0 = ac0 + (*ar0+ * *ar0+);
m_en2log ac0, t0
*ar1+ = ac0;
; middle complex bands
brc0 = #(GAEC_BANDS-2);
localrepeat {
ac0 = #0
|| repeat (#(GAEC_BLKS-1))
ac0 = ac0 + (*ar0+ * *ar0+);
repeat (#(GAEC_BLKS-1))
ac0 = ac0 + (*ar2+ * *ar2+);
m_en2log ac0, t0
*ar1+ = ac0;
}
; the last band
ac0 = #0;
|| repeat (#(GAEC_BLKS-1))
ac0 = ac0 + (*ar0+ * *ar0+);
m_en2log ac0, t0
*ar1+ = ac0;
return
;-------------------------------------------------------------------------
.global _gaec_nrg_err
;-------------------------------------------------------------------------
_gaec_nrg_err
; S16 *psFrom = ar0,
; S16 *psTo = ar1
xar2 = mar(*ar0(#(GAEC_ERR_SZ*(GAEC_BANDS+1))))
; the first band
ac0 = #0;
|| repeat (#(GAEC_ERR_SZ-1))
ac0 = ac0 + (*ar0+ * *ar0+);
m_en2log ac0, t0
ac0 = ac0 + #_EN_CORR
*ar1+ = ac0;
; middle complex bands
brc0 = #(GAEC_BANDS-2);
localrepeat {
ac0 = #0
|| repeat (#(GAEC_ERR_SZ-1))
ac0 = ac0 + (*ar0+ * *ar0+);
repeat (#(GAEC_ERR_SZ-1))
ac0 = ac0 + (*ar2+ * *ar2+);
m_en2log ac0, t0
ac0 = ac0 + #_EN_CORR
*ar1+ = ac0;
}
; the last band
ac0 = #0;
|| repeat (#(GAEC_ERR_SZ-1))
ac0 = ac0 + (*ar0+ * *ar0+);
m_en2log ac0, t0
ac0 = ac0 + #_EN_CORR
*ar1+ = ac0;
return
.if 0
;-------------------------------------------------------------------------
.global _GAEC_err0_energy
;-------------------------------------------------------------------------
_GAEC_err0_energy
; GAEC_tDb *pDb = ar0,
; GAEC_tSc *pSc = ar1
xar2 = mar(*ar1(#(GAEC_tSc.aasErr0+GAEC_ERR_SZ - GAEC_BLKS)))
xar3 = mar(*ar1(#(GAEC_tSc.asErr0En)))
xar4 = mar(*ar2(#(GAEC_ERR_SZ*(GAEC_BANDS+1))))
t0 = #(GAEC_ERR_SZ - GAEC_BLKS+1);
; the first real band
ac0 = *ar2+ * *ar2+;
.loop (GAEC_BLKS-2)
ac0 = ac0 + (*ar2+ * *ar2+);
.endloop
ac0 = ac0 + (*(ar2+t0) * *(ar2+t0));
m_en2log ac0, t1
*ar3+ = ac0;
; middle complex bands
brc0 = #(GAEC_BANDS-2);
localrepeat {
ac0 = *ar2+ * *ar2+;
.loop (GAEC_BLKS-2)
ac0 = ac0 + (*ar2+ * *ar2+);
.endloop
ac0 = ac0 + (*(ar2+t0) * *(ar2+t0));
.loop (GAEC_BLKS-1)
ac0 = ac0 + (*ar4+ * *ar4+);
.endloop
ac0 = ac0 + (*(ar4+t0) * *(ar4+t0));
m_en2log ac0, t1
*ar3+ = ac0;
}
; the last real band
ac0 = *ar2+ * *ar2+;
.loop (GAEC_BLKS-1)
ac0 = ac0 + (*ar2+ * *ar2+);
.endloop
m_en2log ac0, t1
*ar3+ = ac0;
return
.endif
;-------------------------------------------------------------------------
.global _GAEC_snd_energy
;-------------------------------------------------------------------------
_GAEC_snd_energy
; GAEC_tDb *pDb = ar0,
; GAEC_tSc *pSc = ar1
xar2 = mar(*ar1(#(GAEC_tSc.aasSin)))
xar3 = mar(*ar1(#(GAEC_tSc.asSinEn)))
xar4 = mar(*ar2(#(GAEC_BLKS*(GAEC_BANDS+1))))
; the first real band
ac0 = *ar2+ * *ar2+;
.loop (GAEC_BLKS-2)
ac0 = ac0 + (*ar2+ * *ar2+);
.endloop
ac0 = ac0 + (*ar2+ * *ar2+);
m_en2log ac0, t1
*ar3+ = ac0;
; middle complex bands
brc0 = #(GAEC_BANDS-2);
localrepeat {
ac0 = *ar2+ * *ar2+;
.loop (GAEC_BLKS-2)
ac0 = ac0 + (*ar2+ * *ar2+);
.endloop
ac0 = ac0 + (*ar2+ * *ar2+);
.loop (GAEC_BLKS-1)
ac0 = ac0 + (*ar4+ * *ar4+);
.endloop
ac0 = ac0 + (*ar4+ * *ar4+);
m_en2log ac0, t1
*ar3+ = ac0;
}
; the last real band
ac0 = *ar2+ * *ar2+;
.loop (GAEC_BLKS-1)
ac0 = ac0 + (*ar2+ * *ar2+);
.endloop
m_en2log ac0, t1
*ar3+ = ac0;
return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -