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

📄 postfilt_asm_nok.asm

📁 g.729汇编手工优化
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;----------------------------------------------------------------------
        RSBX      FRCT
        ST        #11,*SP(0)            ; |158| 
        MVMM      SP,AR1
        RSBX      OVM
        MAR       *+AR1(#159)
        CALLD     #_Set_zero            ; |158| 
        NOP
        LDM       AR1,A

;----------------------------------------------------------------------
; 159 | Syn_filt(Ap4, h, h, L_H, &h[M+1], 0);                                  
;----------------------------------------------------------------------
        RSBX      OVM
        LDM       SP,A
        ADD       #148,A
        STL       A,*SP(0)
        LDM       SP,A
        ADD       #148,A
        STL       A,*SP(1)
        ST        #22,*SP(2)            ; |159| 
        MVKD      *(AR1),*SP(3)
        RSBX      FRCT
        LDM       SP,A
        ST        #0,*SP(4)             ; |159| 
        CALLD     #_Syn_filt            ; |159| 
        ADD       #137,A

;----------------------------------------------------------------------
; 163 | L_tmp = L_mult(h[0], h[0]);                                            
;----------------------------------------------------------------------
        SSBX      FRCT
        SSBX      OVM
        SSBX      SXM
        ORM       #2,*(PMST)
        LD        *FP(148),T
        MPY       *FP(148),A            ; |163| 
        MVMM      SP,AR1
        STM       #20,BRC
        MAR       *+AR1(#149)
        RPTB      L41-1
L40:    
;----------------------------------------------------------------------
; 164 | for (i=1; i<L_H; i++) L_tmp = L_mac(L_tmp, h[i], h[i]);                
;----------------------------------------------------------------------
        ;RSBX      OVM
        LD        *AR1+,B
        ;SSBX      SXM
        ;SFTA      A,8                   ; |164| 
        STLM      B,T
        ;SFTA      A,-8                  ; |164| 
        ;ORM       #2,*(PMST)
        ;SSBX      OVM
        ;ORM       #2,*(PMST)
        MAC       *(BL), A              ; |164| 
       
L41:    
;----------------------------------------------------------------------
; 165 | temp1 = extract_h(L_tmp);                                              
;----------------------------------------------------------------------
        SFTL      A,#-16,A              ; |165| 
        STLM      A,AR2
;----------------------------------------------------------------------
; 167 | L_tmp = L_mult(h[0], h[1]);                                            
;----------------------------------------------------------------------
        MVMM      SP,AR1
        MAR       *+AR1(#149)
        STM       #19,BRC
        LD        *AR1,T
        MVMM      AR1,AR3
        MPY       *FP(148),B            ; |167| 
        RPTB      L43-1
L42:    
;----------------------------------------------------------------------
; 168 | for (i=1; i<L_H-1; i++) L_tmp = L_mac(L_tmp, h[i], h[i+1]);            
; 169 | temp2 = extract_h(L_tmp);                                              
;----------------------------------------------------------------------
        ;RSBX      OVM
        MVMM      AR3,AR4
        ;SSBX      SXM
        ;SFTA      B,8                   ; |168| 
        MAR       *AR4+
        ;SFTA      B,-8                  ; |168| 
        ;ORM       #2,*(PMST)
        ;SSBX      OVM
        ;ORM       #2,*(PMST)
        NOP
        MAC       *AR4, *AR3, B, B      ; |168| 
        MAR       *AR3+
 
L43:    
;----------------------------------------------------------------------
; 171 | if(temp2 <= 0) {                                                       
; 172 |   temp2 = 0;                                                           
;----------------------------------------------------------------------
        LD        B,A                   ; |171| 
        ;SSBX      SXM
        SFTL      A,#-16,A              ; |171| 
        LD        *(AL),A               ; |171| 
        BC        L44,AGT               ; |171| 
        
        BD        L45                   ; |171| 
        NOP
        LD        #0,A
        
L44:    
        RSBX      OVM
        SFTL      B,#-16,B              ; |171| 
        LD        #26214,16,A           ; |171| 
        STLM      B,T
        SSBX      OVM
        NOP
        MPYA      A                     ; |171| 
        RSBX      FRCT
        RSBX      OVM
        MVKD      *(AR2),*SP(0)
        CALLD     #_divs                ; |171| 
        NOP
        SFTA      A,-16,A               ; |171| 
       
L45:    
;----------------------------------------------------------------------
; 174 | else {                                                                 
; 175 |   temp2 = mult(temp2, MU);                                             
; 176 |   temp2 = div_s(temp2, temp1);                                         
; 179 | preemphasis(res2_pst, temp2, L_SUBFR);                                 
;----------------------------------------------------------------------
        STL       A,*SP(0)
        RSBX      FRCT
        RSBX      OVM
        LDM       SP,A
        ST        #40,*SP(1)            ; |173| 
        CALLD     #_preemphasis         ; |173| 
        ADD       #6,A

;----------------------------------------------------------------------
; 183 | Syn_filt(Ap4, res2_pst, &syn_pst[i_subfr], L_SUBFR, mem_syn_pst, 1);   
;----------------------------------------------------------------------
        RSBX      OVM
        LDM       SP,A
        ADD       #6,A
        STL       A,*SP(0)
        MVKD      *(AR6),*SP(1)
        RSBX      FRCT
        ST        #40,*SP(2)            ; |183| 
        LD        *FP(174),A
        STL       A,*SP(3)
        LDM       SP,A
        ST        #1,*SP(4)             ; |183| 
        CALLD     #_Syn_filt            ; |183| 
        ADD       #137,A

;----------------------------------------------------------------------
; 187 | agc(&syn[i_subfr], &syn_pst[i_subfr], L_SUBFR);                        
;----------------------------------------------------------------------
        MVKD      *(AR6),*SP(0)
        ST        #40,*SP(1)            ; |187| 
        RSBX      FRCT
        RSBX      OVM
        LD        *FP(173),A
        CALL      #_agc                 ; |187| 

;----------------------------------------------------------------------
; 191 | Copy(&res2[L_SUBFR-PIT_MAX], &res2[-PIT_MAX], PIT_MAX);                
;----------------------------------------------------------------------
        SSBX      SXM
        RSBX      OVM
        LD        *(_res2),A
        ADD       #-143,A
        STL       A,*SP(0)
        ST        #143,*SP(1)           ; |191| 
        RSBX      FRCT
        LD        *(_res2),A
        CALLD     #_Copy                ; |191| 
        SUB       #103,A,A              ; |191| 

;----------------------------------------------------------------------
; 192 | Copy(&scal_res2[L_SUBFR-PIT_MAX], &scal_res2[-PIT_MAX], PIT_MAX);      
;----------------------------------------------------------------------
        RSBX      OVM
        SSBX      SXM
        LD        *(_scal_res2),A
        ADD       #-143,A
        STL       A,*SP(0)
        LD        *(_scal_res2),A
        RSBX      FRCT
        ST        #143,*SP(1)           ; |192| 
        CALLD     #_Copy                ; |192| 
        SUB       #103,A,A              ; |192| 

;----------------------------------------------------------------------
; 194 | Az += MP1;                                                             
;----------------------------------------------------------------------
        RSBX      OVM
        LD        *FP(172),A
        ADD       #11,A
        STL       A,*FP(172)

        LD        *FP(173),A
        MAR       *+AR6(#40)
        MVDK      *FP(175),*(AR1)
        MAR       *+AR1(#-1)
        ADD       #40,A
        MVKD      *(AR1),*FP(175)
        BANZD     L37,*AR1       
              
        STL       A,*FP(173)

;----------------------------------------------------------------------
; 199 | Copy(&syn[L_FRAME-M], &syn[-M], M);                                    
;----------------------------------------------------------------------
        LD        *FP(170),A
        SUB       #10,A,A               ; |199| 
        RSBX      FRCT
        STL       A,*SP(0)
        ST        #10,*SP(1)            ; |199| 
        LD        *FP(170),A
        CALLD     #_Copy                ; |199| 
        ADD       #70,A,A               ; |199| 

;----------------------------------------------------------------------
; 203 | Copy(syn_pst, syn, L_FRAME);                                           
;----------------------------------------------------------------------
        LD        *FP(170),A
        RSBX      FRCT
        RSBX      OVM
        STL       A,*SP(0)
        LDM       SP,A
        ST        #80,*SP(1)            ; |203| 
        CALLD     #_Copy                ; |203| 
        ADD       #46,A

;----------------------------------------------------------------------
; 205 | return;                                                                
;----------------------------------------------------------------------
        ANDM      #-833,*(ST1)
        ANDM      #-4,*(PMST)
        RSBX      OVM
        ADDM      #178,*(SP)
        NOP
        NOP
        POPM      FP
        POPM      AR6
        POPM      AR1
        RET




	.sect	".text"
	.global	_Init_Post_Filter
;----------------------------------------------------------------------
;  59 | void Init_Post_Filter(void)                                            
;----------------------------------------------------------------------
_Init_Post_Filter:

        PSHM      AR1
        PSHM      AR6
        FRAME     #-3

;----------------------------------------------------------------------
;  61 | res2  = res2_buf + PIT_MAX;                                            
;----------------------------------------------------------------------
        STM       #_res2_buf,AR6
        LDM       AR6,A
        ADD       #143,A,A              ; |61| 
        STL       A,*(_res2)

;----------------------------------------------------------------------
;  62 | scal_res2  = scal_res2_buf + PIT_MAX;                                  
;----------------------------------------------------------------------
        STM       #_scal_res2_buf,AR1
        LDM       AR1,A
        ADD       #143,A,A              ; |62| 
        STL       A,*(_scal_res2)

;----------------------------------------------------------------------
;  64 | Set_zero(mem_syn_pst, M);                                              
;----------------------------------------------------------------------
        ST        #10,*SP(0)            ; |64| 
        CALLD     #_Set_zero            ; |64| 
        LD        #_mem_syn_pst,A

;----------------------------------------------------------------------
;  65 | Set_zero(res2_buf, PIT_MAX+L_SUBFR);                                   
;----------------------------------------------------------------------
        ST        #183,*SP(0)           ; |65| 
        CALLD     #_Set_zero            ; |65| 
        NOP
        LDM       AR6,A

;----------------------------------------------------------------------
;  66 | Set_zero(scal_res2_buf, PIT_MAX+L_SUBFR);                              
;----------------------------------------------------------------------
        ST        #183,*SP(0)           ; |66| 
        CALLD     #_Set_zero            ; |66| 
        NOP
        LDM       AR1,A

;----------------------------------------------------------------------
;  68 | return;                                                                
;----------------------------------------------------------------------

        FRAME     #3
        POPM      AR6
        POPM      AR1
        RET



;***************************************************************
;* UNDEFINED EXTERNAL REFERENCES                               *
;***************************************************************
	.global	_L_shl
	.global	_L_shr
	.global	_Inv_sqrt
	.global	_Weight_Az
	.global	_Residu

⌨️ 快捷键说明

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