acelp_ca_asm.asm
来自「g.729汇编手工优化」· 汇编 代码 · 共 1,359 行 · 第 1/5 页
ASM
1,359 行
BANZD L9,*AR7(1)
STLM A,BK
NOP
;----------------------------------------------------------------------
; 251 | ptr_hf = ptr_hd + 2;
; 252 | l_fin_sup = MSIZE-1;
; 253 | l_fin_inf = l_fin_sup-(Word16)1;
;----------------------------------------------------------------------
; OVM = SXM = FRCT = 1
LD *SP(52),A
ADD #1,A,A
STL A,*SP(58)
LD *SP(49),A
ADD #1,A,A
STL A,*SP(59)
MVMM SP,AR7
LD *SP(45),A
ADD #1,A,A
STL A,*SP(53)
LD *SP(50),A
SUB #1,A,A
STL A,*SP(54)
LD *SP(46),A
SUB #1,A,A
STL A,*SP(42)
MAR *+AR7(#4)
;----------------------------------------------------------------------
; 254 | for(k=0; k<NB_POS; k++) {
;----------------------------------------------------------------------
STM #0,BK
LD #7,A
STL A,*SP(43)
L12:
;----------------------------------------------------------------------
; 256 | p4 = rri2i4 + l_fin_sup;
;----------------------------------------------------------------------
MVDK *SP(58),*(AR5)
;----------------------------------------------------------------------
; 257 | p3 = rri1i3 + l_fin_sup;
;----------------------------------------------------------------------
MVDK *SP(59),*(AR1)
;----------------------------------------------------------------------
; 258 | p2 = rri0i2 + l_fin_sup;
;----------------------------------------------------------------------
MVDK *SP(53),*(AR2)
;----------------------------------------------------------------------
; 259 | p1 = rri1i4 + l_fin_inf;
;----------------------------------------------------------------------
MVDK *SP(54),*(AR0)
;----------------------------------------------------------------------
; 260 | p0 = rri0i3 + l_fin_inf;
; 262 | cor = 0;
; 263 | ptr_h1 = ptr_hd;
;----------------------------------------------------------------------
MVDK *SP(42),*(AR6)
;----------------------------------------------------------------------
; 264 | ptr_h2 = ptr_hf;
;----------------------------------------------------------------------
MVMM AR7,AR4
LD #0,A
DST A,*SP(56) ; |262|
MVMM SP,AR3
MAR *+AR3(#2)
;----------------------------------------------------------------------
; 265 | for(i=k+(Word16)1; i<NB_POS; i++ ) {
;----------------------------------------------------------------------
LD *(BK),B
SUB #7,B,B
BC L14,BGEQ
LDM BK,A
LD #6,B
SUB A,B
STLM B,BRC
;SSBX OVM
NOP
RPTB L14-1
L13:
;----------------------------------------------------------------------
; 267 | 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 ; |267|
DST A,*SP(56) ; |267|
;----------------------------------------------------------------------
; 268 | *p4 = extract_h(cor);
;----------------------------------------------------------------------
SFTL A,#-16,B ; |268|
STL B,*AR5 ; |268|
;----------------------------------------------------------------------
; 270 | 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 ; |270|
;----------------------------------------------------------------------
; 271 | *p3 = extract_h(cor);
;----------------------------------------------------------------------
LD A,B
SFTL B,#-16,B ; |271|
STL B,*AR1 ; |271|
;----------------------------------------------------------------------
; 273 | cor = L_mac(cor, *ptr_h1, *ptr_h2); ptr_h1++; ptr_h2++;
;----------------------------------------------------------------------
;RSBX OVM
;NOP
;SFTA A,8 ; |273|
;SSBX OVM
;SFTA A,-8 ; |273|
MAC *AR4+, *AR3+, A, A ; |273|
;----------------------------------------------------------------------
; 274 | *p2 = extract_h(cor);
;----------------------------------------------------------------------
LD A,B
SFTL B,#-16,B ; |274|
STL B,*AR2 ; |274|
;----------------------------------------------------------------------
; 276 | cor = L_mac(cor, *ptr_h1, *ptr_h2); ptr_h1++; ptr_h2++;
;----------------------------------------------------------------------
;RSBX OVM
;NOP
;SFTA A,8 ; |276|
;SSBX OVM
;SFTA A,-8 ; |276|
MAC *AR4+, *AR3+, A, A ; |276|
;----------------------------------------------------------------------
; 277 | *p1 = extract_h(cor);
;----------------------------------------------------------------------
LD A,B
SFTL B,#-16,B ; |277|
STL B,*AR0 ; |277|
;----------------------------------------------------------------------
; 279 | cor = L_mac(cor, *ptr_h1, *ptr_h2); ptr_h1++; ptr_h2++;
;----------------------------------------------------------------------
;RSBX OVM
;NOP
;SFTA A,8 ; |279|
;SSBX OVM
;SFTA A,-8 ; |279|
MAC *AR4+, *AR3+, A, A ; |279|
DST A,*SP(56) ; |279|
;----------------------------------------------------------------------
; 280 | *p0 = extract_h(cor);
;----------------------------------------------------------------------
LD A,B
SFTL B,#-16,B ; |280|
STL B,*AR6 ; |280|
;----------------------------------------------------------------------
; 282 | p4 -= ldec;
;----------------------------------------------------------------------
MAR *+AR5(#-9)
;----------------------------------------------------------------------
; 283 | p3 -= ldec;
;----------------------------------------------------------------------
MAR *+AR1(#-9)
;----------------------------------------------------------------------
; 284 | p2 -= ldec;
;----------------------------------------------------------------------
MAR *+AR2(#-9)
;----------------------------------------------------------------------
; 285 | p1 -= ldec;
;----------------------------------------------------------------------
MAR *+AR0(#-9)
;----------------------------------------------------------------------
; 286 | p0 -= ldec;
;----------------------------------------------------------------------
MAR *+AR6(#-9)
L14:
;----------------------------------------------------------------------
; 288 | 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 ; |288|
;----------------------------------------------------------------------
; 289 | *p4 = extract_h(cor);
;----------------------------------------------------------------------
LD A,B
SFTL B,#-16,B ; |289|
STL B,*AR5 ; |289|
;----------------------------------------------------------------------
; 291 | cor = L_mac(cor, *ptr_h1, *ptr_h2); ptr_h1++; ptr_h2++;
;----------------------------------------------------------------------
;RSBX OVM
;NOP
;SFTA A,8 ; |291|
;SSBX OVM
;SFTA A,-8 ; |291|
MAC *AR4+, *AR3+, A, A ; |291|
;----------------------------------------------------------------------
; 292 | *p3 = extract_h(cor);
;----------------------------------------------------------------------
LD A,B
SFTL B,#-16,B ; |292|
STL B,*AR1 ; |292|
;----------------------------------------------------------------------
; 294 | cor = L_mac(cor, *ptr_h1, *ptr_h2); ptr_h1++; ptr_h2++;
;----------------------------------------------------------------------
;RSBX OVM
;NOP
;SFTA A,8 ; |294|
;SSBX OVM
;SFTA A,-8 ; |294|
MAC *AR4, *AR3, A, A ; |294|
DST A,*SP(56) ; |294|
;----------------------------------------------------------------------
; 295 | *p2 = extract_h(cor);
;----------------------------------------------------------------------
SFTL A,#-16,A ; |295|
STL A,*AR2 ; |295|
;----------------------------------------------------------------------
; 298 | l_fin_sup -= NB_POS;
;----------------------------------------------------------------------
;RSBX OVM
LD *SP(58),A
ADD #-8,A
STL A,*SP(58)
LD *SP(59),A
ADD #-8,A
STL A,*SP(59)
LD *SP(53),A
ADD #-8,A
STL A,*SP(53)
;----------------------------------------------------------------------
; 299 | l_fin_inf--;
;----------------------------------------------------------------------
LD *SP(54),A
SUB #1,A
STL A,*SP(54)
LD *SP(42),A
SUB #1,A
STL A,*SP(42)
;----------------------------------------------------------------------
; 300 | ptr_hf += STEP;
;----------------------------------------------------------------------
MAR *+AR7(#5)
;----------------------------------------------------------------------
; 307 | ptr_hd = h;
;----------------------------------------------------------------------
LDM BK,A
ADD #1,A
STLM A,BK
LD *SP(43),A
SUB #1,A
STLM A,AR1
NOP
NOP
BANZD L12,*AR1(1)
NOP
STL A,*SP(43)
;----------------------------------------------------------------------
; 308 | ptr_hf = ptr_hd + 3;
; 309 | l_fin_sup = MSIZE-1;
; 310 | l_fin_inf = l_fin_sup-(Word16)1;
;----------------------------------------------------------------------
LDM SP,A
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?