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

📄 g729a_util_sa.sa

📁 DSP上优化的G.729A代码
💻 SA
字号:

;;;;;;;;;;;;;;;;;;Function  G729ASet_zero;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;16位操作;;;;;;;;;;;;;;;;;;;;;;;;;          
                  .global       _G729ASet_zero
_G729ASet_zero:   .cproc        X, L
                  .reg          zero
          
                  mvk.d2        0,    zero
             
LOOP1:           .trip          L

                 sth.d1t1       zero, *X++
 [L]             sub.d1         L,    1,     L
 [L]             b              LOOP1           
             
                .return        
                .endproc
           
           
;;;;;;;;;;;;;;;;;;Function  G729ASet_zero2;;;;;;;;;;;;;;;;;;  
;;;;;;;;;;;;;;;;;;;;;32位操作;;;;;;;;;;;;;;;;;;;;;;;;;;        
                  .global       _G729ASet_zero2
_G729ASet_zero2:  .cproc        X, L
                  .reg          zero
          
                  mvk.d2        0,    zero
                  shr.s1        L,    1,     L
             
LOOP2:           .trip          L

                 stw.d1t1       zero, *X++
 [L]             sub.d1         L,    1,     L
 [L]             b              LOOP2           
             
                .return        
                .endproc
           
;;;;;;;;;;;;;;;;;;Function  G729ASet_zero4;;;;;;;;;;;;;;;;;;  
;;;;;;;;;;;;;;;;;;;;;64位操作;;;;;;;;;;;;;;;;;;;;;;;;;;        
                  .global       _G729ASet_zero4
_G729ASet_zero4:  .cproc        X, L
                  .reg          zero0:zero1
          
                  mvk.d2        0,    zero0
                  mvk.d2        0,    zero1
                  shr.s1        L,    2,     L
             
LOOP3:           .trip          L

                 stdw.d1t1      zero0:zero1, *X++
 [L]             sub.d1         L,    1,     L
 [L]             b              LOOP3           
             
                .return        
                .endproc
   
   
;;;;;;;;;;;;;;;;;;Function  G729ACopy;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;16位操作;;;;;;;;;;;;;;;;;;;;;;;;;          
                  .global       _G729ACopy
_G729ACopy:       .cproc        X, Y, L
                  .reg          temp
          
                  mvk.d2        0,    temp
             
LOOP4:           .trip          L

                 ldh.d1t1       *X++, temp
                 sth.d2t1       temp, *Y++
 [L]             sub.d1         L,    1,     L
 [L]             b              LOOP4           
             
                .return        
                .endproc
            
           
;;;;;;;;;;;;;;;;;;Function  G729ACopy2;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;32位操作;;;;;;;;;;;;;;;;;;;;;;;;;;          
                  .global       _G729ACopy2
_G729ACopy2:      .cproc        X, Y, L
                  .reg          temp
          
                  mvk.d2        0,    temp
                  shr.s1        L,    1,     L
             
LOOP5:           .trip          L

                 ldw.d1t1       *X++, temp
                 stw.d2t1       temp, *Y++
 [L]             sub.d1         L,    1,     L
 [L]             b              LOOP5           
             
                .return        
                .endproc
           
;;;;;;;;;;;;;;;;;;Function  G729ACopy4;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;64位操作;;;;;;;;;;;;;;;;;;;;;;;;;;          
                  .global       _G729ACopy4
_G729ACopy4:      .cproc        X, Y, L
                  .reg          temp0:temp1
          
                  shr.s1        L,    2,     L
             
LOOP6:           .trip          L

                 lddw.d1t1      *X++, temp0:temp1
                 stdw.d2t1      temp0:temp1, *Y++
 [L]             sub.d1         L,    1,     L
 [L]             b              LOOP6           
             
                .return        
                .endproc
           
;;;;;;;;;;;;;;;;;;Function  G729ARandom;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;随机数产生函数;;;;;;;;;;;;;;;;;;;;;;;;;;          
                .global       _G729ARandom
_G729ARandom:   .cproc
                .reg          temp
                .reg          tmp0,    tmp1
                .reg          seed
             
                mvk.s2        21845,   seed 
                mvk.s1        31821,   tmp0         
             
                smpy.m1       seed,    tmp0,    temp
           
                mvk.s1        13849,   tmp1 
           
                shr.s1        temp,    0x1,     temp
                sadd.s1       temp,    tmp1,    temp
                ext.s1        temp,    0x10,    0x10,    seed
    
               .return        seed      
               .endproc

⌨️ 快捷键说明

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