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

📄 qua_lsp_asm.asm

📁 g.729汇编手工优化
💻 ASM
📖 第 1 页 / 共 3 页
字号:
	.mmregs
FP	.set	AR7
	.sect	".text"
	.global	_Lsp_pre_select
	
;***************************************************************
;* FUNCTION DEF: _Lsp_pre_select                               *
;***************************************************************
_Lsp_pre_select:

        PSHM      AR1
        PSHM      AR6
        PSHM      AR7
        FRAME     #-8
        STLM      A,AR7              ; (ar7)= rbuf
        LD        *SP(12),A          ; sp(12) = lspcb1
        STL       A,*SP(2)           ; sp(2) = lspcb1
        MVDK      *SP(13),*(AR6)     ; (ar6) = cand
        LD        #0,A
        ST        #0,*AR6            ; *cand = 0
        STL       A,*SP(3)           ; sp(3) = 0 
        ;RSBX      OVM
        NOP
        LD        #32767,16,A           
        OR        #65535,A,A          ; (a) = 0x7FFFFFFF
        DST       A,*SP(4)            ;  sp(4) = MAX_32

;----------------------------------------------------------------------
; 151 | for ( i = 0 ; i < NC0 ; i++ ) {                                        
;----------------------------------------------------------------------
        STM       #0,AR1
        SSBX      SXM                   ; line-81
        SSBX      OVM                   ; line-85
        SSBX      FRCT                  ; line-95
        ORM       #2,*(PMST)
        LD        *SP(2),B            ; (b) = lspcb1
        LD        *SP(3),A
        ADD       *(BL),A             ; (a) = lspcb1 + sp(3)
        STLM      A,AR4               ; (ar3) = lspcb1 + sp(3)
L1:    
        ;LD        *SP(2),B            ; (b) = lspcb1
        ;LD        *SP(3),A
        ;ADD       *(BL),A             ; (a) = lspcb1 + sp(3)
        ;STLM      A,AR3               ; (ar3) = lspcb1 + sp(3)
        MVMM      AR4,AR3
        MVMM      AR7,AR2             ; (ar2) = rbuf
;----------------------------------------------------------------------
; 152 | L_tmp = 0;                                                             
; 153 | for ( j = 0 ; j < M ; j++ ) {                                          
; 154 |   tmp = sub(rbuf[j], lspcb1[i][j]);                                    
;----------------------------------------------------------------------
        STM       #9,BRC
        LD        #0,A
        ;LD        #0,B                  ; ADDED BY D.L.B
        ;DST       A,*SP(6)              ; sp(6) = L_tmp 
        ;DLD       *SP(6),B              ; ****
        LD         A,B
        ;ORM       #2,*(PMST)            ; line-97
        RPTB      LOOP_1-1
L2:    
;----------------------------------------------------------------------
; 155 | L_tmp = L_mac( L_tmp, tmp, tmp );                                      
;----------------------------------------------------------------------
        LD         *AR2+,A
        SUB        *AR3+,A,A
        STLM      A,T                   ; (T) = tmp
        MAC       *(AL), B              ; (b) =  L_mac(L_tmp,tmp,tmp)
LOOP_1:
        DST       B,*SP(6)              
L3:    
;----------------------------------------------------------------------
; 158 | L_temp = L_sub(L_tmp,L_dmin);                                          
; 159 | if (  L_temp< 0L) {                                                    
;----------------------------------------------------------------------
        DLD       *SP(4),A         
        DRSUB      *SP(6),A                
        BC        L4,AGEQ              
;----------------------------------------------------------------------
; 160 | L_dmin = L_tmp;                                                        
;----------------------------------------------------------------------
        DLD       *SP(6),A              ; sp(6) = L_tmp
        DST       A,*SP(4)              ; sp(4) = L_dmin = L_tmp
        MVKD      *(AR1),*AR6           ; (ar6) = cand = i
L4:     
        ;LD        *SP(3),A
        MAR       *AR1+                 ; (ar1) = i = i++
        ;ADD       #10,A
        ;STL       A,*SP(3)
        MAR       *+AR4(10)
   
        LD        *(AR1),A            
        SUB       #128,A,A              
        BC        L1,ALT   
                    
        ANDM      #-833,*(ST1)
        ANDM      #-4,*(PMST)
        FRAME     #8
        POPM      AR7
        POPM      AR6
        POPM      AR1
        RET


	.sect	".text"
	.global	_Lsp_select_1
	
;***************************************************************
;* FUNCTION DEF: _Lsp_select_1                                 *
;***************************************************************

_Lsp_select_1:

        PSHM      AR1
        PSHM      AR6
        PSHM      AR7
        FRAME     #-18
        STLM      A,AR3            ; (ar3) = rbuf
        STM       #4,BRC
        MVMM      SP,AR1           
        MAR       *+AR1(#2)        ; (ar1) = buf = sp+2
        LD        *SP(23),B        ; (b) = sp(23) = wegt
        MVDK      *SP(22),*(AR2)   ; (ar2) = lspcb1
        MVDK      *SP(25),*(AR6)   ; (ar6) = index
        MVDK      *SP(24),*(AR7)   ; (ar7) = lspcb2
        STL       B,*SP(12)        ; sp(12) = wegt
        SSBX      SXM              ; added by d.l.b
        SSBX      OVM
        RPTB      L6-1
L5:    
;----------------------------------------------------------------------
; 185 | buf[j] = sub(rbuf[j], lspcb1[j]);                                      
;----------------------------------------------------------------------
        LD        *AR3+,16,A           
        SUB       *AR2+,16,A,A          
        STH       A,*AR1+              
L6:    
;----------------------------------------------------------------------
; 188 | *index = 0;                                                            
;----------------------------------------------------------------------
        LD        #0,A
        ST        #0,*AR6               ; (ar6) = index
        STL       A,*SP(13)
;----------------------------------------------------------------------
; 189 | L_dmin = MAX_32;                                                       
;----------------------------------------------------------------------
        ;RSBX      OVM
        ;NOP
        LD        #32767,16,A           
        OR        #65535,A,A            
        DST       A,*SP(14)             ; sp(14) = L_dmin
        STM       #0,AR1
        SSBX      FRCT                  ; line-205
        ;SSBX      OVM                   ; line-199

        ORM       #2,*(PMST)            ; line-216
L7:    
        LD        *SP(13),A             
        ADD       *(AR7),A              ; (a) point to lspcb2[][5] (ar7) = lspcb2
        MVMM      SP,AR3
        STLM      A,AR4                 ; (ar4) = lspcb2[][5]
        MAR       *+AR3(#2)             ; (ar3) = buf
        MVDK      *SP(12),*(AR2)        ; (ar2) = wegt
;----------------------------------------------------------------------
; 191 | L_dist = 0;                                                            
; 192 | for ( j = 0 ; j < NC ; j++ ) {                                         
; 193 |   tmp = sub(buf[j], lspcb2[k1][j]);                                    
; 194 |   tmp2 = mult( wegt[j], tmp );                                         
;----------------------------------------------------------------------
        STM       #4,BRC
        LD        #0,A
        DST       A,*SP(16)             ; sp(16) is a temporary L_dist

        RPTB      L9-1
L8:    
;----------------------------------------------------------------------
; 195 | L_dist = L_mac( L_dist, tmp2, tmp );                                   
;----------------------------------------------------------------------
        LD        *AR3+,16,A            ; (a) = buf[j]  
        SUB       *AR4+,16,A,A          ; (ar4) = lspcb2
        
        ;SFTA      A,-16,A               ; (a) = tmp = sub(buf[j], lspcb2[k1][j])
        ;STLM      A,AR5                 ; (ar5) = tmp
        ;LD        *(AR5),16,A           
        STH       A,*(AR5)
        
        MPYA      *AR2+                 ; (b) = tmp2 = mult( wegt[j], tmp )
        STH       B,*(T)                ; (T) = tmp2
        DLD       *SP(16),A             ; (a) = L_dist 
        MAC       *(AR5), A             ; (a) =  L_dist = L_mac( L_dist, tmp2, tmp )
        DST       A,*SP(16)             ; sp(16) = L_dist 
L9:    
;----------------------------------------------------------------------
; 198 | L_temp =L_sub(L_dist,L_dmin);                                          
; 199 | if ( L_temp <0L ) {                                                    
;----------------------------------------------------------------------
        ;RSBX      OVM
        ;NOP
        DLD       *SP(14),A
        ;RSBX      FRCT
        ;DST       A,*SP(0)               
        ;DLD       *SP(16),A             
        ;CALL      #_L_sub              
        DRSUB     *SP(16),A
        ;RSBX      OVM
        ;SSBX      SXM
        ;SFTA      A,8                   
        ;SFTA      A,-8                  
        BC        L10,AGEQ             
;----------------------------------------------------------------------
; 200 | L_dmin = L_dist;                                                       
;----------------------------------------------------------------------
        DLD       *SP(16),A
        DST       A,*SP(14)             ; sp(14) = L_dmin 
;----------------------------------------------------------------------
; 201 | *index = k1;                                                           
;----------------------------------------------------------------------
        MVKD      *(AR1),*AR6
L10:    
;----------------------------------------------------------------------
; 204 | return;                                                                
;----------------------------------------------------------------------
        LD        *SP(13),A
        MAR       *AR1+
        ADD       #10,A
        STL       A,*SP(13)
        LD        *(AR1),A             
        SUB       #32,A,A              
        BC        L7,ALT               

        ANDM      #-833,*(ST1)
        ANDM      #-4,*(PMST)
        FRAME     #18
        POPM      AR7
        POPM      AR6
        POPM      AR1
        RET


	.sect	".text"
	.global	_Lsp_select_2

;***************************************************************
;* FUNCTION DEF: _Lsp_select_2                                 *
;***************************************************************

_Lsp_select_2:
        PSHM      AR1
        PSHM      AR6
        PSHM      AR7
        FRAME     #-18
        RSBX      OVM
        NOP
        ADD       #5,A,A
        STM       #4,BRC
        MVMM      SP,AR1
        STLM      A,AR3
        LD        *SP(23),B
        MAR       *+AR1(#7)
        STL       B,*SP(12)
        MVDK      *SP(25),*(AR6)
        LD        *SP(22),B

⌨️ 快捷键说明

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