📄 acelp_ca_asm.asm
字号:
; 371 | ptr_h1 = ptr_hd;
;----------------------------------------------------------------------
MVMD BK,AR2
;----------------------------------------------------------------------
; 372 | ptr_h2 = ptr_hf;
;----------------------------------------------------------------------
MVMM AR0,AR4
MVMM SP,AR3
MAR *+AR3(#2)
;----------------------------------------------------------------------
; 373 | cor = 0;
;----------------------------------------------------------------------
LD #0,A
DST A,*SP(56) ; |373|
;----------------------------------------------------------------------
; 374 | for(i=k+(Word16)1; i<NB_POS; i++ ) {
;----------------------------------------------------------------------
LD *(BL),A ; |374|
SUB #7,A,A ; |374|
BC L21,AGEQ ; |374|
LD #6,A
SUB B,A
STLM A,BRC
NOP
RPTB L21-1
L20:
;----------------------------------------------------------------------
; 376 | cor = L_mac(cor, *ptr_h1, *ptr_h2); ptr_h1++; ptr_h2++;
;----------------------------------------------------------------------
;RSBX OVM
;NOP
DLD *SP(56),A
;SSBX OVM
;NOP
MAC *AR4+, *AR3+, A, A ; |376|
DST A,*SP(56) ; |376|
;----------------------------------------------------------------------
; 377 | *p3 = extract_h(cor);
;----------------------------------------------------------------------
SFTL A,#-16,A ; |377|
STL A,*AR1 ; |377|
;----------------------------------------------------------------------
; 379 | cor = L_mac(cor, *ptr_h1, *ptr_h2); ptr_h1++; ptr_h2++;
;----------------------------------------------------------------------
;RSBX OVM
;NOP
DLD *SP(56),A
;SSBX OVM
;NOP
MAC *AR4+, *AR3+, A, A ; |379|
;----------------------------------------------------------------------
; 380 | cor = L_mac(cor, *ptr_h1, *ptr_h2); ptr_h1++; ptr_h2++;
;----------------------------------------------------------------------
;RSBX OVM
;NOP
;SFTA A,8 ; |380|
;SSBX OVM
;SFTA A,-8 ; |380|
MAC *AR4+, *AR3+, A, A ; |380|
DST A,*SP(56) ; |380|
;----------------------------------------------------------------------
; 381 | *p2 = extract_h(cor);
;----------------------------------------------------------------------
SFTL A,#-16,A ; |381|
STL A,*AR7 ; |381|
;----------------------------------------------------------------------
; 383 | cor = L_mac(cor, *ptr_h1, *ptr_h2); ptr_h1++; ptr_h2++;
;----------------------------------------------------------------------
;RSBX OVM
;NOP
DLD *SP(56),A
;SSBX OVM
;NOP
MAC *AR4+, *AR3+, A, A ; |383|
DST A,*SP(56) ; |383|
;----------------------------------------------------------------------
; 384 | *p1 = extract_h(cor);
;----------------------------------------------------------------------
SFTL A,#-16,A ; |384|
STL A,*AR5 ; |384|
;----------------------------------------------------------------------
; 386 | cor = L_mac(cor, *ptr_h1, *ptr_h2); ptr_h1++; ptr_h2++;
;----------------------------------------------------------------------
;RSBX OVM
;NOP
DLD *SP(56),A
;SSBX OVM
;NOP
MAC *AR4+, *AR3+, A, A ; |386|
DST A,*SP(56) ; |386|
;----------------------------------------------------------------------
; 387 | *p0 = extract_h(cor);
;----------------------------------------------------------------------
SFTL A,#-16,A ; |387|
STL A,*AR2 ; |387|
;----------------------------------------------------------------------
; 389 | p3 -= ldec;
;----------------------------------------------------------------------
MAR *+AR1(#-9)
;----------------------------------------------------------------------
; 390 | p2 -= ldec;
;----------------------------------------------------------------------
MAR *+AR7(#-9)
;----------------------------------------------------------------------
; 391 | p1 -= ldec;
;----------------------------------------------------------------------
MAR *+AR5(#-9)
;----------------------------------------------------------------------
; 392 | p0 -= ldec;
;----------------------------------------------------------------------
MAR *+AR2(#-9)
L21:
;----------------------------------------------------------------------
; 394 | cor = L_mac(cor, *ptr_h1, *ptr_h2); ptr_h1++; ptr_h2++;
;----------------------------------------------------------------------
;RSBX OVM
;NOP
DLD *SP(56),A
;SSBX OVM
;NOP
MAC *AR4, *AR3, A, A ; |394|
DST A,*SP(56) ; |394|
;----------------------------------------------------------------------
; 395 | *p3 = extract_h(cor);
;----------------------------------------------------------------------
SFTL A,#-16,A ; |395|
STL A,*AR1 ; |395|
;----------------------------------------------------------------------
; 397 | l_fin_sup -= NB_POS;
;----------------------------------------------------------------------
;RSBX OVM
LD *SP(45),A
ADD #-8,A
STL A,*SP(45)
;----------------------------------------------------------------------
; 398 | l_fin_inf--;
;----------------------------------------------------------------------
LD *SP(42),A
SUB #1,A
STL A,*SP(42)
LDM BK,A
SUB #1,A
STLM A,BK
MAR *AR6-
;----------------------------------------------------------------------
; 399 | ptr_hf += STEP;
;----------------------------------------------------------------------
MAR *+AR0(#5)
;----------------------------------------------------------------------
; 401 | return;
;----------------------------------------------------------------------
LD *SP(43),A
SUB #1,A
STLM A,AR1
ADD #1,B
BANZD L19,*AR1(1) ; |400|
NOP
STL A,*SP(43)
ANDM #-833,*(ST1)
ANDM #-4,*(PMST)
FRAME #60
POPM AR7
POPM AR6
POPM AR1
RET
.sect ".text"
;----------------------------------------------------------------------
; 424 | static Word16 D4i40_17_fast(/*(o) : Index of pulses positions.
; | */
; 425 | Word16 dn[], /* (i) : Correlations between h[] and Xn[].
; | */
; 426 | Word16 rr[], /* (i) : Correlations of impulse response h[].
; | */
; 427 | Word16 h[], /* (i) Q12: Impulse response of filters.
; | */
; 428 | Word16 cod[], /* (o) Q13: Selected algebraic codeword.
; | */
; 429 | Word16 y[], /* (o) Q12: Filtered algebraic codeword.
; | */
; 430 | Word16 *sign /* (o) : Signs of 4 pulses.
; | */
; 431 | )
;----------------------------------------------------------------------
_D4i40_17_fast:
PSHM AR1
RSBX OVM
PSHM AR6
PSHM FP
ADDM #-134,*(SP)
NOP
NOP
MVMM SP,FP
;----------------------------------------------------------------------
; 433 | Word16 i0, i1, i2, i3, ip0, ip1, ip2, ip3;
; 434 | Word16 i, j, ix, iy, track, trk, max;
; 435 | Word16 prev_i0, i1_offset;
; 436 | Word16 psk, ps, ps0, ps1, ps2, sq, sq2;
; 437 | Word16 alpk, alp, alp_16;
; 438 | Word32 s, alp0, alp1, alp2;
; 439 | Word16 *p0, *p1, *p2, *p3, *p4;
; 440 | Word16 sign_dn[L_SUBFR], sign_dn_inv[L_SUBFR], *psign;
; 441 | Word16 tmp_vect[NB_POS];
; 442 | Word16 *rri0i0, *rri1i1, *rri2i2, *rri3i3, *rri4i4;
; 443 | Word16 *rri0i1, *rri0i2, *rri0i3, *rri0i4;
; 444 | Word16 *rri1i2, *rri1i3, *rri1i4;
; 445 | Word16 *rri2i3, *rri2i4;
; 447 | Word16 *ptr_rri0i3_i4;
; 448 | Word16 *ptr_rri1i3_i4;
; 449 | Word16 *ptr_rri2i3_i4;
; 450 | Word16 *ptr_rri3i3_i4;
; 453 | rri0i0 = rr;
;----------------------------------------------------------------------
STL A,*SP(90)
LD *FP(142),A
STL A,*SP(91)
LD *FP(141),A
STL A,*SP(92)
LD *FP(140),A
STL A,*SP(93)
LD *FP(139),A
STL A,*SP(94)
LD *FP(138),A
STL A,*SP(95)
;----------------------------------------------------------------------
; 454 | rri1i1 = rri0i0 + NB_POS;
;----------------------------------------------------------------------
ADD #8,A,A
STL A,*SP(96)
;----------------------------------------------------------------------
; 455 | rri2i2 = rri1i1 + NB_POS;
;----------------------------------------------------------------------
;LD *SP(95),A
;ADD #16,A,A
ADD #8,A,A ; ****
STL A,*SP(97)
;----------------------------------------------------------------------
; 456 | rri3i3 = rri2i2 + NB_POS;
;----------------------------------------------------------------------
;LD *SP(95),A
;ADD #24,A,A ; |456|
ADD #8,A,A ; ****
STL A,*SP(98)
;----------------------------------------------------------------------
; 457 | rri4i4 = rri3i3 + NB_POS;
;----------------------------------------------------------------------
;LD *SP(95),A
;ADD #32,A,A
ADD #8,A,A ; ****
STL A,*SP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -