📄 acelp_ca_asm.asm
字号:
.mmregs
FP .set AR7
.sect ".text"
;----------------------------------------------------------------------
; 104 | static void Cor_h(
; 105 | Word16 *H, /* (i) Q12 :Impulse response of filters */
; 106 | Word16 *rr /* (o) :Correlations of H[] */
; 107 | )
;----------------------------------------------------------------------
_Cor_h:
PSHM AR1
PSHM AR6
PSHM AR7
FRAME #-60
STLM A,AR1
LD *SP(64),A
STL A,*SP(42)
MVMM AR1,AR2
;----------------------------------------------------------------------
; 123 | cor = 0;
; 124 | for(i=0; i<L_SUBFR; i++)
;----------------------------------------------------------------------
STM #39,BRC
LD #0,A
SSBX SXM
SSBX OVM
SSBX FRCT
ORM #2,*(PMST)
RPTB L2-1
L1:
;----------------------------------------------------------------------
; 125 | cor = L_mac(cor, H[i], H[i]);
;----------------------------------------------------------------------
LD *AR2+,B
STLM B,T
MAC *(BL), A
L2:
;----------------------------------------------------------------------
; 127 | if(sub(extract_h(cor),32000) > 0)
; 129 | for(i=0; i<L_SUBFR; i++) {
; 130 | h[i] = shr(H[i], 1);
; 133 | else
; 135 | k = norm_l(cor);
;----------------------------------------------------------------------
LD A,B
SFTL B,#-16,B
LD *(BL),B
SUB #32000,B,B
BC L4,BGT
;----------------------------------------------------------------------
; 136 | k = shr(k, 1);
; 138 | for(i=0; i<L_SUBFR; i++) {
;----------------------------------------------------------------------
EXP A
NOP
LD *(T),A
SFTA A,-1
STM #40,AR7
MVMM SP,AR6
MAR *+AR6(#2)
STL A,*SP(43)
L3:
;----------------------------------------------------------------------
; 139 | h[i] = shl(H[i], k);
;----------------------------------------------------------------------
LD *SP(43),A
STL A,*SP(0)
LD *AR1+,A
CALL #_shl
NOP
STL A,*AR6+
;----------------------------------------------------------------------
; 148 | rri0i0 = rr;
; 149 | rri1i1 = rri0i0 + NB_POS;
; 150 | rri2i2 = rri1i1 + NB_POS;
; 151 | rri3i3 = rri2i2 + NB_POS;
; 152 | rri4i4 = rri3i3 + NB_POS;
;----------------------------------------------------------------------
BANZ L3,*+AR7(-1)
B L6
L4:
MVMM SP,AR6
STM #40,AR7
MAR *+AR6(#2)
L5:
LD *AR1+,A
SFTA A,-1
NOP
STL A,*AR6+
BANZ L5,*+AR7(-1)
L6:
;----------------------------------------------------------------------
; 153 | rri0i1 = rri4i4 + NB_POS;
;----------------------------------------------------------------------
RSBX OVM
LD *SP(42),A
ADD #102,A,A
STL A,*SP(44)
;----------------------------------------------------------------------
; 154 | rri0i2 = rri0i1 + MSIZE;
;----------------------------------------------------------------------
LD *SP(42),A
ADD #166,A,A
STL A,*SP(45)
;----------------------------------------------------------------------
; 155 | rri0i3 = rri0i2 + MSIZE;
;----------------------------------------------------------------------
LD *SP(42),A
ADD #231,A,A
STL A,*SP(46)
;----------------------------------------------------------------------
; 156 | rri0i4 = rri0i3 + MSIZE;
;----------------------------------------------------------------------
LD *SP(42),A
ADD #295,A,A
STL A,*SP(47)
;----------------------------------------------------------------------
; 157 | rri1i2 = rri0i4 + MSIZE;
;----------------------------------------------------------------------
LD *SP(42),A
ADD #358,A,A
STL A,*SP(48)
;----------------------------------------------------------------------
; 158 | rri1i3 = rri1i2 + MSIZE;
;----------------------------------------------------------------------
LD *SP(42),A
ADD #422,A,A
STL A,*SP(49)
;----------------------------------------------------------------------
; 159 | rri1i4 = rri1i3 + MSIZE;
;----------------------------------------------------------------------
LD *SP(42),A
ADD #487,A,A
STL A,*SP(50)
;----------------------------------------------------------------------
; 160 | rri2i3 = rri1i4 + MSIZE;
;----------------------------------------------------------------------
LD *SP(42),A
ADD #550,A,A
STL A,*SP(51)
;----------------------------------------------------------------------
; 161 | rri2i4 = rri2i3 + MSIZE;
;----------------------------------------------------------------------
LD *SP(42),A
ADD #614,A,A
STL A,*SP(52)
;----------------------------------------------------------------------
; 163 | p0 = rri0i0 + NB_POS-1; /* Init pointers to last position of rrixix[]
; | */
;----------------------------------------------------------------------
LD *SP(42),A
ADD #7,A,A
STLM A,AR5
;----------------------------------------------------------------------
; 164 | p1 = rri1i1 + NB_POS-1;
;----------------------------------------------------------------------
LD *SP(42),A
ADD #15,A,A
STLM A,AR2
;----------------------------------------------------------------------
; 165 | p2 = rri2i2 + NB_POS-1;
;----------------------------------------------------------------------
LD *SP(42),A
ADD #23,A,A
STLM A,AR3
;----------------------------------------------------------------------
; 166 | p3 = rri3i3 + NB_POS-1;
;----------------------------------------------------------------------
LD *SP(42),A
ADD #31,A,A
STLM A,AR4
;----------------------------------------------------------------------
; 167 | p4 = rri4i4 + NB_POS-1;
;----------------------------------------------------------------------
LD *SP(42),A
ADD #39,A,A
STLM A,AR0
;----------------------------------------------------------------------
; 169 | ptr_h1 = h;
;----------------------------------------------------------------------
MVMM SP,AR1
MAR *+AR1(#2)
;----------------------------------------------------------------------
; 170 | cor = 0;
; 171 | for(i=0; i<NB_POS; i++)
;----------------------------------------------------------------------
LD #0,B
STM #7,BRC
SSBX SXM ; ****
SSBX OVM ; ****
SSBX FRCT ; ****
ORM #2,*(PMST) ; ****
RPTB L8-1
L7:
;----------------------------------------------------------------------
; 173 | cor = L_mac(cor, *ptr_h1, *ptr_h1); ptr_h1++;
;----------------------------------------------------------------------
LD *AR1+,A
STLM A,T
MAC *(AL), B
;----------------------------------------------------------------------
; 174 | *p4-- = extract_h(cor);
;----------------------------------------------------------------------
LD B,A
SFTL A,#-16,A
STL A,*AR0-
;----------------------------------------------------------------------
; 176 | cor = L_mac(cor, *ptr_h1, *ptr_h1); ptr_h1++;
;----------------------------------------------------------------------
LD *AR1+,A
STLM A,T
MAC *(AL), B
;----------------------------------------------------------------------
; 177 | *p3-- = extract_h(cor);
;----------------------------------------------------------------------
LD B,A ; |177|
SFTL A,#-16,A ; |177|
STL A,*AR4- ; |177|
;----------------------------------------------------------------------
; 179 | cor = L_mac(cor, *ptr_h1, *ptr_h1); ptr_h1++;
;----------------------------------------------------------------------
;RSBX OVM
LD *AR1+,A
;SFTA B,8 ; |179|
STLM A,T
;SSBX OVM
;SFTA B,-8 ; |179|
MAC *(AL), B ; |179|
;----------------------------------------------------------------------
; 180 | *p2-- = extract_h(cor);
;----------------------------------------------------------------------
LD B,A ; |180|
SFTL A,#-16,A ; |180|
STL A,*AR3- ; |180|
;----------------------------------------------------------------------
; 182 | cor = L_mac(cor, *ptr_h1, *ptr_h1); ptr_h1++;
;----------------------------------------------------------------------
;RSBX OVM
LD *AR1+,A
;SFTA B,8 ; |182|
STLM A,T
;SSBX OVM
;SFTA B,-8 ; |182|
MAC *(AL), B ; |182|
;----------------------------------------------------------------------
; 183 | *p1-- = extract_h(cor);
;----------------------------------------------------------------------
LD B,A ; |183|
SFTL A,#-16,A ; |183|
STL A,*AR2- ; |183|
;----------------------------------------------------------------------
; 185 | cor = L_mac(cor, *ptr_h1, *ptr_h1); ptr_h1++;
;----------------------------------------------------------------------
;RSBX OVM
LD *AR1+,A
;SFTA B,8 ; |185|
STLM A,T
;SSBX OVM
;SFTA B,-8 ; |185|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -