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

📄 postfilt_asm_nok.asm

📁 g.729汇编手工优化
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	.mmregs
FP	.set	AR7

	.bss	_res2_buf,183,0,0
	.bss	_res2,1,0,0
	.bss	_scal_res2_buf,183,0,0
	.bss	_scal_res2,1,0,0
	.bss	_mem_syn_pst,10,0,0
	

	.sect	".cinit"
	.align	1
	.field  	1,16
	.field  	_mem_pre$1+0,16
	.field  	0,16			; _mem_pre$1 @ 0

	.sect	".text"
	.bss	_mem_pre$1,1,0,0

	.sect	".cinit"
	.align	1
	.field  	1,16
	.field  	_past_gain$2+0,16
	.field  	4096,16			; _past_gain$2 @ 0

	.sect	".text"
	.bss	_past_gain$2,1,0,0

	.sect	".text"
	.global	_preemphasis
;----------------------------------------------------------------------
; 347 | void preemphasis(                                                      
; 348 | Word16 *signal,  /* (i/o)   : input signal overwritten by the output */
; 349 | Word16 g,        /* (i) Q15 : preemphasis coefficient                */
; 350 | Word16 L         /* (i)     : size of filtering                      */
; 351 | )                                                                      
;----------------------------------------------------------------------

_preemphasis:

        PSHM      AR1
        NOP
;----------------------------------------------------------------------
; 353 | static Word16 mem_pre = 0;                                             
; 354 | Word16 *p1, *p2, temp, i;                                              
; 356 | p1 = signal + L - 1;                                                   
;----------------------------------------------------------------------
        LD        *SP(3),B
        STLM      B,AR3
        NOP
        MVDK      *SP(2),*(AR2)

;----------------------------------------------------------------------
; 357 | p2 = p1 - 1;                                                           
;----------------------------------------------------------------------
        RSBX      OVM
        NOP
        ADD       A,B                   ; |357| 
        SUB       #1,B,A                ; |357| 
        STLM      A,AR1
        SUB       #1,A,A                ; |357| 
        STLM      A,AR4
        NOP

;----------------------------------------------------------------------
; 358 | temp = *p1;                                                            
;----------------------------------------------------------------------
        MVDK      *AR1,*(AR1)
;----------------------------------------------------------------------
; 360 | for (i = 0; i <= L-2; i++)                                             
;----------------------------------------------------------------------
        SSBX      SXM
        SSBX      OVM                   ; ****
        SSBX      FRCT                  ; ****
        NOP                             ; ****
        LDM       AR3,A
        LD        *(AL),A               ; |360| 
        SUB       #2,A,A                ; |360| 
        BC        L2,ALT                ; |360| 

        LDM       AR3,A
        SUB       #2,A,A
        STLM      A,BRC
        NOP
        RPTB      L2-1      
L1:    
;----------------------------------------------------------------------
; 362 | *p1-- = sub(*p1, mult(g, *p2--));                                      
;----------------------------------------------------------------------
        LD        *AR4,16,A             ; |362| 
        ;SSBX      FRCT
        ;SSBX      OVM
        MVMD      AR2,T
        MPYA      A                     ; |362| 
        ;RSBX      OVM
        LD        *AR4(1),16,B          ; |362| 
        ;SSBX      OVM
        SFTA      A,-16,A               ; |362| 
        SUB       *(AL),16,B,A          ; |362| 
        ;RSBX      OVM
        STH       A,*AR4(1)             ; |362| 
        MAR       *AR4-
L2:    
;----------------------------------------------------------------------
; 365 | *p1 = sub(*p1, mult(g, mem_pre));                                      
;----------------------------------------------------------------------
        LD        *(_mem_pre$1),16,A    ; |365| 
        ;SSBX      FRCT
        ;SSBX      OVM
        MVMD      AR2,T
        MPYA      A                     ; |365| 
        ;RSBX      OVM
        LD        *AR4(1),16,B          ; |365| 
        ;SSBX      OVM
        SFTA      A,-16,A               ; |365| 
        SUB       *(AL),16,B,A          ; |365| 
        STH       A,*AR4(1)             ; |365| 

;----------------------------------------------------------------------
; 367 | mem_pre = temp;                                                        
;----------------------------------------------------------------------
        MVMD      AR1,*(_mem_pre$1)
;----------------------------------------------------------------------
; 369 | return;                                                                
;----------------------------------------------------------------------
        ANDM      #-833,*(ST1)
        ANDM      #-4,*(PMST)
        POPM      AR1
        RET




	.sect	".text"
	.global	_pit_pst_filt
;----------------------------------------------------------------------
; 219 | void pit_pst_filt(                                                     
; 220 | Word16 *signal,      /* (i)     : input signal                        *
;     | /                                                                      
; 221 | Word16 *scal_sig,    /* (i)     : input signal (scaled, divided by 4) *
;     | /                                                                      
; 222 | Word16 t0_min,       /* (i)     : minimum value in the searched range *
;     | /                                                                      
; 223 | Word16 t0_max,       /* (i)     : maximum value in the searched range *
;     | /                                                                      
; 224 | Word16 L_subfr,      /* (i)     : size of filtering                   *
;     | /                                                                      
; 225 | Word16 *signal_pst   /* (o)     : harmonically postfiltered signal    *
;     | /                                                                      
; 226 | )                                                                      
;----------------------------------------------------------------------
_pit_pst_filt:

        PSHM      AR1
        PSHM      AR6
        PSHM      AR7
        FRAME     #-16
        NOP
;----------------------------------------------------------------------
; 228 | Word16 i, j, t0;                                                       
; 229 | Word16 g0, gain, cmax, en, en0;                                        
; 230 | Word16 *p, *p1, *deb_sig;                                              
; 231 | Word32 corr, cor_max, ener, ener0, temp;                               
; 232 | Word32 L_temp;                                                         
;----------------------------------------------------------------------
        STL       A,*SP(2)
        LD        *SP(24),A
        LD        *SP(21),B
        STL       A,*SP(3)
        MVDK      *SP(20),*(AR6)
        LD        *SP(23),A
        STL       A,*SP(4)
        MVDK      *SP(22),*(AR2)

;----------------------------------------------------------------------
; 239 | deb_sig = &scal_sig[-t0_min];                                          
; 240 | cor_max = MIN_32;                                                      
;----------------------------------------------------------------------
        RSBX      OVM
        LDM       AR6,A
        SUB       B,A                   ; |239| 
        STLM      A,AR1

;----------------------------------------------------------------------
; 241 | t0 = t0_min;             /* Only to remove warning from some compilers
;     | */                                                                     
;----------------------------------------------------------------------
        STL       B,*SP(5)
;----------------------------------------------------------------------
; 242 | for (i=t0_min; i<=t0_max; i++)                                         
;----------------------------------------------------------------------
        LD        B,A
        STL       A,*SP(6)

        SSBX      SXM
        NOP
        LD        #-32768,16,A          ; |240| 
        DST       A,*SP(8)              ; |240| 

;----------------------------------------------------------------------
; 244 | corr = 0;                                                              
;----------------------------------------------------------------------
        LD        B,A
        LD        *(AL),A               ; |242| 
        SUB       *(AR2),A              ; |242| 
        BC        L7,AGT                ; |242| 

        LDM       AR2,A
        SUB       B,A
        ADD       #1,A,A
        STLM      A,AR7
        SSBX      OVM                   ; ****
        ;SSBX      SXM
        SSBX      FRCT
        ORM       #2,*(PMST)
L3:    
;----------------------------------------------------------------------
; 245 | p    = scal_sig;                                                       
;----------------------------------------------------------------------
        MVMM      AR6,AR2

;----------------------------------------------------------------------
; 246 | p1   = deb_sig;                                                        
;----------------------------------------------------------------------
        MVMM      AR1,AR3
        LD        #0,A
        DST       A,*SP(10)             ; |244| 
;----------------------------------------------------------------------
; 247 | for (j=0; j<L_subfr; j++)                                              
;----------------------------------------------------------------------
        LD        *SP(4),A
        BC        L5,ALEQ               ; |247| 

        LD        *SP(4),A
        SUB       #1,A,A
        STLM      A,BRC
        ;NOP
        DLD       *SP(10),A
        RPTB      LOOP_1-1
L4:    
;----------------------------------------------------------------------
; 248 | corr = L_mac(corr, *p++, *p1++);                                       
;----------------------------------------------------------------------
        ;RSBX      OVM
        ;NOP
        ;DLD       *SP(10),A
        ;ORM       #2,*(PMST)
        ;SSBX      FRCT
        ;SSBX      OVM
        ;ORM       #2,*(PMST)
        ;NOP
        MAC       *AR3+, *AR2+, A, A    ; |248| 
        ;DST       A,*SP(10)      
LOOP_1:
		DST       A,*SP(10)       
L5:    
;----------------------------------------------------------------------
; 250 | L_temp = L_sub(corr, cor_max);                                         
; 251 | if (L_temp > (Word32)0)                                                
;----------------------------------------------------------------------
        ;RSBX      OVM
        ;NOP
        ;DLD       *SP(8),A
        ;RSBX      FRCT
        ;DST       A,*SP(0)              ; |250| 
        DLD       *SP(10),A             ; |250| 
        ;CALL      #_L_sub               ; |250| 
        DSUB      *SP(8),A
        
        ;RSBX      OVM
        ;SSBX      SXM
        ;SFTA      A,8                   ; |250| 
        ;SFTA      A,-8                  ; |250| 
        BC        L6,ALEQ               ; |250| 
;----------------------------------------------------------------------
; 253 | cor_max = corr;                                                        
;----------------------------------------------------------------------
        DLD       *SP(10),A
        DST       A,*SP(8)              ; |253| 
;----------------------------------------------------------------------
; 254 | t0 = i;                                                                
;----------------------------------------------------------------------
        LD        *SP(6),A
        STL       A,*SP(5)
L6:    
;----------------------------------------------------------------------
; 256 | deb_sig--;                                                             
;----------------------------------------------------------------------
        MAR       *AR1-
;----------------------------------------------------------------------
; 261 | ener = 1;                                                              
;----------------------------------------------------------------------
        LD        *SP(6),A
        ADD       #1,A
        BANZD     L3,*+AR7(-1)          ; |257| 
        NOP
        STL       A,*SP(6)
L7:    
;----------------------------------------------------------------------
; 262 | p = scal_sig - t0;                                                     
;----------------------------------------------------------------------
        LD        *SP(5),B
        LDM       AR6,A
        SUB       B,A                   ; |262| 
        STLM      A,AR1

        LD        #1,A
        DST       A,*SP(12)             ; |261| 

;----------------------------------------------------------------------
; 263 | for ( i=0; i<L_subfr ;i++, p++)                                        
;----------------------------------------------------------------------
        LD        *SP(4),A
        BC        L9,ALEQ               ; |263| 

        LD        *SP(4),A
        SUB       #1,A,A
        STLM      A,BRC
        NOP
        DLD       *SP(12),A
        RPTB      LOOP_2-1

⌨️ 快捷键说明

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