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 + -
显示快捷键?