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

📄 acelp_ca_asm.asm

📁 g.729汇编手工优化
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	.mmregs
FP	.set	AR7
	.sect	".text"
;----------------------------------------------------------------------
; 104 | static void Cor_h(                                                     
; 105 | Word16 *H,     /* (i) Q12 :Impulse response of filters */              
; 106 | Word16 *rr     /* (o)     :Correlations of H[]         */              
; 107 | )                                                                      
;----------------------------------------------------------------------
_Cor_h:

        PSHM      AR1
        PSHM      AR6
        PSHM      AR7
        FRAME     #-60
        STLM      A,AR1
        LD        *SP(64),A
        STL       A,*SP(42)
        MVMM      AR1,AR2
;----------------------------------------------------------------------
; 123 | cor = 0;                                                               
; 124 | for(i=0; i<L_SUBFR; i++)                                               
;----------------------------------------------------------------------
        STM       #39,BRC
        LD        #0,A
        
        SSBX      SXM
        SSBX      OVM
        SSBX      FRCT
        ORM       #2,*(PMST)
        RPTB      L2-1
L1:    
;----------------------------------------------------------------------
; 125 | cor = L_mac(cor, H[i], H[i]);                                          
;----------------------------------------------------------------------
        LD        *AR2+,B            
        STLM      B,T
        MAC       *(BL), A             
L2:    
;----------------------------------------------------------------------
; 127 | if(sub(extract_h(cor),32000) > 0)                                      
; 129 |   for(i=0; i<L_SUBFR; i++) {                                           
; 130 |     h[i] = shr(H[i], 1);                                               
; 133 | else                                                                   
; 135 |   k = norm_l(cor);                                                     
;----------------------------------------------------------------------
        LD        A,B                   
        SFTL      B,#-16,B              
        LD        *(BL),B               
        SUB       #32000,B,B            
        BC        L4,BGT               

;----------------------------------------------------------------------
; 136 | k = shr(k, 1);                                                         
; 138 | for(i=0; i<L_SUBFR; i++) {                                             
;----------------------------------------------------------------------
        EXP       A                       
        NOP
        LD        *(T),A
        SFTA      A,-1
        
        STM       #40,AR7
        MVMM      SP,AR6
        MAR       *+AR6(#2)
        STL       A,*SP(43)
L3:    
;----------------------------------------------------------------------
; 139 | h[i] = shl(H[i], k);                                                   
;----------------------------------------------------------------------
        LD        *SP(43),A
        STL       A,*SP(0)
        LD        *AR1+,A
        CALL      #_shl              
        
        NOP
        STL       A,*AR6+
;----------------------------------------------------------------------
; 148 | rri0i0 = rr;                                                           
; 149 | rri1i1 = rri0i0 + NB_POS;                                              
; 150 | rri2i2 = rri1i1 + NB_POS;                                              
; 151 | rri3i3 = rri2i2 + NB_POS;                                              
; 152 | rri4i4 = rri3i3 + NB_POS;                                              
;----------------------------------------------------------------------
        BANZ      L3,*+AR7(-1)          
        B         L6                            
L4:    
        MVMM      SP,AR6
        STM       #40,AR7
        MAR       *+AR6(#2)
L5:    

        LD        *AR1+,A
            
        SFTA      A,-1        
        NOP
        STL       A,*AR6+
        BANZ      L5,*+AR7(-1)         
        
L6:    
;----------------------------------------------------------------------
; 153 | rri0i1 = rri4i4 + NB_POS;                                              
;----------------------------------------------------------------------
        RSBX      OVM
        LD        *SP(42),A
        ADD       #102,A,A              
        STL       A,*SP(44)
;----------------------------------------------------------------------
; 154 | rri0i2 = rri0i1 + MSIZE;                                               
;----------------------------------------------------------------------
        LD        *SP(42),A
        ADD       #166,A,A              
        STL       A,*SP(45)
;----------------------------------------------------------------------
; 155 | rri0i3 = rri0i2 + MSIZE;                                               
;----------------------------------------------------------------------
        LD        *SP(42),A
        ADD       #231,A,A              
        STL       A,*SP(46)
;----------------------------------------------------------------------
; 156 | rri0i4 = rri0i3 + MSIZE;                                               
;----------------------------------------------------------------------
        LD        *SP(42),A
        ADD       #295,A,A              
        STL       A,*SP(47)
;----------------------------------------------------------------------
; 157 | rri1i2 = rri0i4 + MSIZE;                                               
;----------------------------------------------------------------------
        LD        *SP(42),A
        ADD       #358,A,A             
        STL       A,*SP(48)
;----------------------------------------------------------------------
; 158 | rri1i3 = rri1i2 + MSIZE;                                               
;----------------------------------------------------------------------
        LD        *SP(42),A
        ADD       #422,A,A              
        STL       A,*SP(49)
;----------------------------------------------------------------------
; 159 | rri1i4 = rri1i3 + MSIZE;                                               
;----------------------------------------------------------------------
        LD        *SP(42),A
        ADD       #487,A,A              
        STL       A,*SP(50)
;----------------------------------------------------------------------
; 160 | rri2i3 = rri1i4 + MSIZE;                                               
;----------------------------------------------------------------------
        LD        *SP(42),A
        ADD       #550,A,A              
        STL       A,*SP(51)
;----------------------------------------------------------------------
; 161 | rri2i4 = rri2i3 + MSIZE;                                               
;----------------------------------------------------------------------
        LD        *SP(42),A
        ADD       #614,A,A              
        STL       A,*SP(52)
;----------------------------------------------------------------------
; 163 | p0 = rri0i0 + NB_POS-1;   /* Init pointers to last position of rrixix[]
;     |  */                                                                    
;----------------------------------------------------------------------
        LD        *SP(42),A
        ADD       #7,A,A                
        STLM      A,AR5
;----------------------------------------------------------------------
; 164 | p1 = rri1i1 + NB_POS-1;                                                
;----------------------------------------------------------------------
        LD        *SP(42),A
        ADD       #15,A,A               
        STLM      A,AR2
;----------------------------------------------------------------------
; 165 | p2 = rri2i2 + NB_POS-1;                                                
;----------------------------------------------------------------------
        LD        *SP(42),A
        ADD       #23,A,A               
        STLM      A,AR3
;----------------------------------------------------------------------
; 166 | p3 = rri3i3 + NB_POS-1;                                                
;----------------------------------------------------------------------
        LD        *SP(42),A
        ADD       #31,A,A              
        STLM      A,AR4
;----------------------------------------------------------------------
; 167 | p4 = rri4i4 + NB_POS-1;                                                
;----------------------------------------------------------------------
        LD        *SP(42),A
        ADD       #39,A,A              
        STLM      A,AR0
;----------------------------------------------------------------------
; 169 | ptr_h1 = h;                                                            
;----------------------------------------------------------------------
        MVMM      SP,AR1
        MAR       *+AR1(#2)
;----------------------------------------------------------------------
; 170 | cor    = 0;                                                            
; 171 | for(i=0;  i<NB_POS; i++)                                               
;----------------------------------------------------------------------
        LD        #0,B
        STM       #7,BRC
        SSBX      SXM              ; ****
        SSBX      OVM              ; ****
        SSBX      FRCT             ; ****
        ORM       #2,*(PMST)       ; ****
        RPTB      L8-1
L7:    
;----------------------------------------------------------------------
; 173 | cor = L_mac(cor, *ptr_h1, *ptr_h1); ptr_h1++;                          
;----------------------------------------------------------------------
        LD        *AR1+,A                  
        STLM      A,T
        MAC       *(AL), B              
;----------------------------------------------------------------------
; 174 | *p4-- = extract_h(cor);                                                
;----------------------------------------------------------------------
        LD        B,A                   
        SFTL      A,#-16,A              
        STL       A,*AR0-                
;----------------------------------------------------------------------
; 176 | cor = L_mac(cor, *ptr_h1, *ptr_h1); ptr_h1++;                          
;----------------------------------------------------------------------
        LD        *AR1+,A                
        STLM      A,T               
        MAC       *(AL), B              

;----------------------------------------------------------------------
; 177 | *p3-- = extract_h(cor);                                                
;----------------------------------------------------------------------
        LD        B,A                   ; |177| 
        SFTL      A,#-16,A              ; |177| 
        STL       A,*AR4-               ; |177| 

;----------------------------------------------------------------------
; 179 | cor = L_mac(cor, *ptr_h1, *ptr_h1); ptr_h1++;                          
;----------------------------------------------------------------------
        ;RSBX      OVM
        LD        *AR1+,A
        ;SFTA      B,8                   ; |179| 
        STLM      A,T
        ;SSBX      OVM
        ;SFTA      B,-8                  ; |179| 
        MAC       *(AL), B              ; |179| 

;----------------------------------------------------------------------
; 180 | *p2-- = extract_h(cor);                                                
;----------------------------------------------------------------------
        LD        B,A                   ; |180| 
        SFTL      A,#-16,A              ; |180| 
        STL       A,*AR3-               ; |180| 
;----------------------------------------------------------------------
; 182 | cor = L_mac(cor, *ptr_h1, *ptr_h1); ptr_h1++;                          
;----------------------------------------------------------------------
        ;RSBX      OVM
        LD        *AR1+,A
        ;SFTA      B,8                   ; |182| 
        STLM      A,T
        ;SSBX      OVM
        ;SFTA      B,-8                  ; |182| 
        MAC       *(AL), B              ; |182| 

;----------------------------------------------------------------------
; 183 | *p1-- = extract_h(cor);                                                
;----------------------------------------------------------------------
        LD        B,A                   ; |183| 
        SFTL      A,#-16,A              ; |183| 
        STL       A,*AR2-               ; |183| 

;----------------------------------------------------------------------
; 185 | cor = L_mac(cor, *ptr_h1, *ptr_h1); ptr_h1++;                          
;----------------------------------------------------------------------
        ;RSBX      OVM
        LD        *AR1+,A
        ;SFTA      B,8                   ; |185| 
        STLM      A,T
        ;SSBX      OVM
        ;SFTA      B,-8                  ; |185| 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -