📄 pitch_a_c_asm.asm
字号:
RSBX FRCT
DLD *SP(10),A
CALL #_Inv_sqrt
; OVM = SXM = FRCT = 0
DST A,*SP(10)
;----------------------------------------------------------------------
; 125 | L_Extract(max, &max_h, &max_l);
;----------------------------------------------------------------------
;RSBX OVM
LDM SP,A
ADD #6,A
STL A,*SP(0)
;LDM SP,A
;ADD #7,A
ADD #1,A ; ****
STL A,*SP(1)
;RSBX FRCT
DLD *FP(240),A
CALL #_L_Extract
;----------------------------------------------------------------------
; 126 | L_Extract(sum, &ener_h, &ener_l);
;----------------------------------------------------------------------
;RSBX OVM
LDM SP,A
ADD #8,A
STL A,*SP(0)
;LDM SP,A
;ADD #9,A
ADD #1,A
STL A,*SP(1)
;RSBX FRCT
DLD *SP(10),A
CALL #_L_Extract
;----------------------------------------------------------------------
; 127 | sum = Mpy_32(max_h, max_l, ener_h, ener_l);
;----------------------------------------------------------------------
LD *SP(7),A
STL A,*SP(0)
LD *SP(8),A
STL A,*SP(1)
LD *SP(9),A
STL A,*SP(2)
;RSBX FRCT
;RSBX OVM
LD *SP(6),A
CALL #_Mpy_32
DST A,*SP(10)
;----------------------------------------------------------------------
; 128 | max1 = extract_l(sum);
;----------------------------------------------------------------------
LD *SP(11),A
STL A,*FP(238)
;RSBX OVM
LD *FP(236),A
SUB #40,A,A
STLM A,AR6 ; ar6 = scal_sig[-40]
;----------------------------------------------------------------------
; 132 | max = MIN_32;
;----------------------------------------------------------------------
SSBX SXM
NOP
LD #-32768,16,A
DST A,*FP(240)
;----------------------------------------------------------------------
; 133 | T2 = 40; /* Only to remove warning from some compilers */
;----------------------------------------------------------------------
LD #40,A
STL A,*FP(243) ; sp(243) = 40 = T2
;----------------------------------------------------------------------
; 134 | for (i = 40; i < 80; i++) {
;----------------------------------------------------------------------
STM #40,AR1
SSBX FRCT ; ****
SSBX OVM ; ****
ORM #2,*(PMST)
L14:
;----------------------------------------------------------------------
; 135 | p = scal_sig;
;----------------------------------------------------------------------
MVDK *FP(236),*(AR2)
MVMM AR6,AR3
LD #0,A
DST A,*SP(10)
;----------------------------------------------------------------------
; 138 | for (j=0; j<L_frame; j+=2, p+=2, p1+=2)
;----------------------------------------------------------------------
LD *FP(235),A
BC L16,ALEQ ; |138|
;LD *FP(235),A
ADD #1,A,A
;LD *(AL),A
SFTA A,#-1,A
SUB #1,A ; ****
STLM A,BRC
;SSBX SXM
;SSBX FRCT
;SSBX OVM
;ORM #2,*(PMST)
DLD *SP(10),A ; ****
NOP
RPTB LOOP11-1
L15:
;----------------------------------------------------------------------
; 139 | sum = L_mac(sum, *p, *p1);
;----------------------------------------------------------------------
;DLD *SP(10),A
;ORM #2,*(PMST)
;SSBX FRCT
;SSBX OVM
;ORM #2,*(PMST)
;NOP
MAC *AR3, *AR2, A, A
MAR *+AR3(#2)
MAR *+AR2(#2)
;DST A,*SP(10)
LOOP11:
DST A,*SP(10)
L16:
;----------------------------------------------------------------------
; 140 | L_temp = L_sub(sum, max);
;----------------------------------------------------------------------
;RSBX OVM
;DLD *FP(240),A
;RSBX FRCT
;DST A,*SP(0)
DLD *SP(10),A
;CALL #_L_sub
DSUB *FP(240),A
;RSBX OVM
;SSBX SXM
;SFTA A,8
;SFTA A,-8
BC L17,ALEQ
;----------------------------------------------------------------------
; 141 | if (L_temp > 0) { max = sum; T2 = i; }
;----------------------------------------------------------------------
DLD *SP(10),A
MVKD *(AR1),*FP(243)
DST A,*FP(240)
L17:
MAR *AR1+
LD *(AR1),A
SUB #80,A,A
BCD L14,ALT
NOP
MAR *AR6-
;----------------------------------------------------------------------
; 146 | sum = 1; /* to avoid division by zero */
;----------------------------------------------------------------------
LD #1,A
DST A,*SP(10)
;----------------------------------------------------------------------
; 147 | p = &scal_sig[-T2];
;----------------------------------------------------------------------
LD *FP(243),B
LD *FP(236),A
SUB B,A
STLM A,AR1
;----------------------------------------------------------------------
; 148 | for(i=0; i<L_frame; i+=2, p+=2)
;----------------------------------------------------------------------
LD *FP(235),A
BC L19,ALEQ ; |148|
;LD *FP(235),A
ADD #1,A,A
LD *(AL),A
SFTA A,#-1,A
SUB #1,A
STLM A,BRC
NOP
;FRCT = OVM = SXM = SMUL =1
RPTB LOOP12-1
L18:
;----------------------------------------------------------------------
; 149 | sum = L_mac(sum, *p, *p);
;----------------------------------------------------------------------
LD *AR1,B
;DLD *SP(10),A
STLM B,T
;ORM #2,*(PMST)
;SSBX FRCT
;SSBX OVM
;ORM #2,*(PMST)
MAR *+AR1(#2)
MAC *(BL), A
;DST A,*SP(10)
LOOP12:
DST A,*SP(10)
L19:
;----------------------------------------------------------------------
; 154 | sum = Inv_sqrt(sum); /* 1/sqrt(energy), result in Q30 */
;----------------------------------------------------------------------
RSBX OVM
RSBX FRCT
DLD *SP(10),A
CALL #_Inv_sqrt
DST A,*SP(10)
;----------------------------------------------------------------------
; 155 | L_Extract(max, &max_h, &max_l);
;----------------------------------------------------------------------
;RSBX OVM
LDM SP,A
ADD #6,A
STL A,*SP(0)
;LDM SP,A
;ADD #7,A
ADD #1,A
STL A,*SP(1)
;RSBX FRCT
DLD *FP(240),A
CALL #_L_Extract
;----------------------------------------------------------------------
; 156 | L_Extract(sum, &ener_h, &ener_l);
;----------------------------------------------------------------------
;RSBX OVM
LDM SP,A
ADD #8,A
STL A,*SP(0)
;LDM SP,A
;ADD #9,A
ADD #1,A
STL A,*SP(1)
;RSBX FRCT
DLD *SP(10),A
CALL #_L_Extract
;----------------------------------------------------------------------
; 157 | sum = Mpy_32(max_h, max_l, ener_h, ener_l);
;----------------------------------------------------------------------
LD *SP(7),A
STL A,*SP(0)
LD *SP(8),A
STL A,*SP(1)
LD *SP(9),A
STL A,*SP(2)
;RSBX FRCT
;RSBX OVM
LD *SP(6),A
CALL #_Mpy_32
DST A,*SP(10)
;----------------------------------------------------------------------
; 158 | max2 = extract_l(sum);
;----------------------------------------------------------------------
LD *SP(11),A
STL A,*FP(237)
;RSBX OVM
LD *FP(236),A
SUB #80,A,A
STLM A,AR6
;----------------------------------------------------------------------
; 162 | max = MIN_32;
;----------------------------------------------------------------------
SSBX SXM
NOP
LD #-32768,16,A
DST A,*FP(240)
;----------------------------------------------------------------------
; 163 | T3 = 80; /* Only to remove warning from some compilers */
;----------------------------------------------------------------------
LD #80,A
STL A,*FP(244)
;----------------------------------------------------------------------
; 164 | for (i = 80; i < 143; i+=2) {
;----------------------------------------------------------------------
STM #80,AR1
SSBX FRCT
SSBX OVM
ORM #2,*(PMST)
L20:
MVDK *FP(236),*(AR2)
MVMM AR6,AR3
LD #0,A
DST A,*SP(10)
;----------------------------------------------------------------------
; 168 | for (j=0; j<L_frame; j+=2, p+=2, p1+=2)
;----------------------------------------------------------------------
LD *FP(235),A
BC L22,ALEQ
;LD *FP(235),A
ADD #1,A,A
LD *(AL),A
SFTA A,#-1,A
SUB #1,A
STLM A,BRC
DLD *SP(10),A
;SSBX SXM
;SSBX FRCT
;SSBX OVM
;ORM #2,*(PMST)
;NOP
RPTB LOOP21-1
L21:
;----------------------------------------------------------------------
; 169 | sum = L_mac(sum, *p, *p1);
;----------------------------------------------------------------------
;DLD *SP(10),A
;ORM #2,*(PMST)
;SSBX FRCT
;SSBX OVM
;ORM #2,*(PMST)
;NOP
MAC *AR3, *AR2, A, A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -