📄 pitch_a_c_asm.asm
字号:
;RSBX OVM
LD *(AR1),16,A ; |218|
;SSBX OVM
NOP
ABS A,A ; |218|
SFTA A,-16,A ; |218|
;RSBX OVM
LD *(AL),A ; |218|
SUB #5,A,A ; |218|
BC L32,AGEQ ; |218|
;----------------------------------------------------------------------
; 219 | max2 = add(max2, shr(max3, 2));
;----------------------------------------------------------------------
;ST #2,*SP(0) ; |219|
;RSBX FRCT
LD *SP(11),A
;CALL #_shr ; |219|
SFTA A,-2
;SSBX SXM
;RSBX OVM
LD *FP(237),B
LD *(BL),16,B ; |219|
;SSBX OVM
ADD *(AL),16,B,A ; |219|
SFTA A,-16,A ; |219|
STL A,*FP(237)
L32:
;----------------------------------------------------------------------
; 224 | i = add(i, T2);
; 225 | j = sub(abs_s(i), 7);
;----------------------------------------------------------------------
;RSBX OVM
LD *FP(243),B
LD *(AR1),16,A ; |224|
;SSBX OVM
ADD *(BL),16,A,A ; |224|
SFTA A,-16,A ; |224|
STLM A,AR1
;----------------------------------------------------------------------
; 226 | if(j < 0)
;----------------------------------------------------------------------
;RSBX OVM
LD *(AR1),16,A ; |226|
;SSBX OVM
NOP
ABS A,A ; |226|
SFTA A,-16,A ; |226|
;RSBX OVM
LD *(AL),A ; |226|
SUB #7,A,A ; |226|
BC L33,AGEQ ; |226|
;----------------------------------------------------------------------
; 227 | max2 = add(max2, shr(max3, 2));
;----------------------------------------------------------------------
;RSBX FRCT
;ST #2,*SP(0) ; |227|
;CALLD #_shr ; |227|
;NOP
LDM AR6,A
NOP
SFTA A,-2
;SSBX SXM
;RSBX OVM
LD *FP(237),B
LD *(BL),16,B ; |227|
;SSBX OVM
ADD *(AL),16,B,A ; |227|
SFTA A,-16,A ; |227|
STL A,*FP(237)
L33:
;----------------------------------------------------------------------
; 232 | i = sub(shl(T1,1), T2);
; 233 | j = sub(abs_s(i), 5);
;----------------------------------------------------------------------
;ST #1,*SP(0)
;RSBX FRCT
;RSBX OVM
LD *FP(242),A
;CALL #_clshft
SFTA A,1
;SSBX SXM
;RSBX OVM
LD *FP(243),B
LD *(AL),16,A
;SSBX OVM
SUB *(BL),16,A,A
SFTA A,-16,B
;----------------------------------------------------------------------
; 234 | if(j < 0)
;----------------------------------------------------------------------
;RSBX OVM
LD *(BL),16,A
;SSBX OVM
NOP
ABS A,A
;RSBX OVM
SFTA A,-16,A
LD *(AL),A
SUB #5,A,A
BC L34,AGEQ
;----------------------------------------------------------------------
; 235 | max1 = add(max1, mult(max2, 6554));
;----------------------------------------------------------------------
LD #6554,16,A
SSBX FRCT
LD *FP(237),T
;SSBX OVM
MVDK *FP(238),*(AR2)
MPYA A ; |235|
;RSBX OVM
SFTA A,-16,A ; |235|
STLM A,AR1
LD *(AR2),16,A ; |235|
;SSBX OVM
ADD *(AR1),16,A,A ; |235|
SFTA A,-16,A ; |235|
STL A,*FP(238)
L34:
;----------------------------------------------------------------------
; 240 | i = add(i, T1);
; 241 | j = sub(abs_s(i), 7);
;----------------------------------------------------------------------
;RSBX OVM
LD *(BL),16,A ; |240|
LD *FP(242),B
;SSBX OVM
ADD *(BL),16,A,A ; |240|
SFTA A,-16,B ; |240|
;----------------------------------------------------------------------
; 242 | if(j < 0)
;----------------------------------------------------------------------
;RSBX OVM
LD *(BL),16,A
;SSBX OVM
NOP
ABS A,A
;RSBX OVM
SFTA A,-16,A
LD *(AL),A
SUB #7,A,A
BC L35,AGEQ
;----------------------------------------------------------------------
; 243 | max1 = add(max1, mult(max2, 6554));
;----------------------------------------------------------------------
LD #6554,16,A
SSBX FRCT
LD *FP(237),T
;SSBX OVM
LD *FP(238),B
MPYA A
;RSBX OVM
LD *(BL),16,B
;SSBX OVM
SFTA A,-16,A
ADD *(AL),16,B,A
SFTA A,-16,A
STL A,*FP(238)
L35:
;----------------------------------------------------------------------
; 249 | if( sub(max1, max2) < 0 ) {max1 = max2; T1 = T2; }
;----------------------------------------------------------------------
;RSBX OVM
LD *FP(238),A
LD *FP(237),B
LD *(AL),16,A
;SSBX OVM
SUB *(BL),16,A,A
SFTA A,-16,A
LD *(AL),A
BC L36,AGEQ
LD B,A
STL A,*FP(238)
LD *FP(243),A
STL A,*FP(242)
L36:
;----------------------------------------------------------------------
; 250 | if( sub(max1, max3) <0 ) {T1 = T3; }
;----------------------------------------------------------------------
;RSBX OVM
LD *FP(238),A
LD *(AL),16,A
;SSBX OVM
SUB *(AR6),16,A,A
SFTA A,-16,A
LD *(AL),A
BC L37,AGEQ
LD *FP(244),A
STL A,*FP(242)
L37:
;----------------------------------------------------------------------
; 252 | return T1;
;----------------------------------------------------------------------
LD *FP(242),A
ANDM #-833,*(ST1)
ANDM #-4,*(PMST)
RSBX OVM
ADDM #246,*(SP)
NOP
NOP
POPM FP
POPM AR6
POPM AR1
RET
.sect ".text"
.global _Dot_Product
_Dot_Product:
SSBX SXM
MVDK *SP(1),*(AR2) ; ar2 = y
LD *SP(2),B ; b = lg
STLM A,AR3 ; ar3 = x
LD #0,A
SUB #1,B,B
STLM B,BRC
SSBX FRCT
SSBX OVM
ORM #2,*(PMST)
NOP
RPTB L39-1
L38:
MAC *AR2+, *AR3+, A, A
L39:
ANDM #-833,*(ST1)
ANDM #-4,*(PMST)
RET
.sect ".text"
.global _G_pitch
;----------------------------------------------------------------------
; 373 | Word16 G_pitch( /* (o) Q14 : Gain of pitch lag saturated to 1.2
; | */
; 374 | Word16 xn[], /* (i) : Pitch target.
; | */
; 375 | Word16 y1[], /* (i) : Filtered adaptive codebook.
; | */
; 376 | Word16 g_coeff[], /* (i) : Correlations need for gain quantization
; | . */
; 377 | Word16 L_subfr /* (i) : Length of subframe.
; | */
; 378 | )
;----------------------------------------------------------------------
_G_pitch:
PSHM AR1
PSHM AR6
PSHM AR7
FRAME #-52
NOP
STL A,*SP(48) ; sp(48) = xn[]
LD *SP(58),A
STL A,*SP(49) ; sp(49) = L_subfr
LD *SP(57),A
STL A,*SP(50) ; sp(50) = g_coeff[]
LD *SP(56),A
STL A,*SP(51) ; sp(51) = y1[]
;----------------------------------------------------------------------
; 388 | for(i=0; i<L_subfr; i++)
;----------------------------------------------------------------------
SSBX SXM
SSBX OVM
NOP
LD *SP(49),A
;BC L48,ALEQ
MVMM SP,AR1
MVDK *SP(49),*(AR7) ; ar7 = L_subfr
MVDK *SP(51),*(AR6) ; ar6 = y1[]
MAR *+AR1(#8) ; ar1 = scaled_y1[]
L47:
;----------------------------------------------------------------------
; 389 | scaled_y1[i] = shr(y1[i], 2);
;----------------------------------------------------------------------
;ST #2,*SP(0)
;RSBX FRCT
;RSBX OVM
LD *AR6+,A
;CALL #_shr
SFTA A,-2
BANZD L47,*+AR7(-1)
NOP
STL A,*AR1+
L48:
LD *SP(51),A
STL A,*SP(0)
;RSBX OVM
STL A,*SP(1)
;RSBX FRCT
LD *SP(49),A
ST #0,*SP(2)
STL A,*SP(3)
LDM SP,A
ADD #6,A
ST #1,*SP(4)
STL A,*SP(5)
CALLD #_Verifi_Overflow
NOP
LD #1,A
; OVM = SXM = 1
;RSBX OVM
;LD *(AL),A
BC L51,AEQ
;----------------------------------------------------------------------
; 406 | s = 1; /* Avoid case of all zeros */
;----------------------------------------------------------------------
LD #1,A
DST A,*SP(6)
;----------------------------------------------------------------------
; 407 | for(i=0; i<L_subfr; i++)
;----------------------------------------------------------------------
;SSBX SXM
;NOP
LD *SP(49),A
;BC L50,ALEQ
;LD *SP(49),A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -