⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 acelp_ca_asm.asm

📁 g.729汇编手工优化
💻 ASM
📖 第 1 页 / 共 5 页
字号:
; 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 + -