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

📄 lspgetq_asm.asm

📁 g.729汇编手工优化
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;***************************************************************
;* TMS320C54x C/C++ Codegen                  PC Version 3.831  *
;* Date/Time created: Wed May 11 09:36:39 2005                 *
;***************************************************************
	.mmregs
FP	.set	AR7

;	c:\ti\c5400\cgtools\bin\opt500.exe -i20 -q -s -O3 D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\TI3856_2 D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\TI3856_5 -w F:/ATA/Code/g729a_v1.4/G729A/Debug 

	.sect	".text"
	.global	_Lsp_stability
;----------------------------------------------------------------------
; 191 | void Lsp_stability(                                                    
; 192 | Word16 buf[]       /* (i/o) Q13 : quantized LSP parameters      */     
; 193 | )                                                                      
;----------------------------------------------------------------------

;***************************************************************
;* FUNCTION DEF: _Lsp_stability                                *
;***************************************************************

;***************************************************************
;*                                                             *
;* Using -g (debug) with optimization (-o3) may disable key op *
;*                                                             *
;***************************************************************
_Lsp_stability:
;* A     assigned to _buf
	.sym	_buf,0, 19, 17, 16
;* A     assigned to _L_diff
	.sym	_L_diff,0, 5, 4, 32
;* A     assigned to _L_diff
	.sym	_L_diff,0, 5, 4, 32
;* AR1   assigned to U$3
	.sym	U$3,10, 19, 4, 16
;* AR1   assigned to U$3
	.sym	U$3,10, 19, 4, 16
;* AR6   assigned to _buf
	.sym	_buf,15, 19, 4, 16
;* B     assigned to _tmp
	.sym	_tmp,6, 3, 4, 16
;* AR7   assigned to L$2
	.sym	L$2,16, 4, 4, 16
;* AR7   assigned to L$1
	.sym	L$1,16, 4, 4, 16
;**  	-----------------------    #pragma MUST_ITERATE(9, 9, 9)
;**  	-----------------------    #pragma LOOP_FLAGS(5120u)
;**  	-----------------------    U$3 = buf;
;**  	-----------------------    L$1 = 9;
        PSHM      AR1
        PSHM      AR6
        PSHM      AR7
        FRAME     #-2
;----------------------------------------------------------------------
; 195 | Word16 j;                                                              
; 196 | Word16 tmp;                                                            
; 197 | Word32 L_diff;                                                         
; 198 | Word32 L_acc, L_accb;                                                  
; 200 | for(j=0; j<M-1; j++) {                                                 
; 201 |   L_acc = L_deposit_l( buf[j+1] );                                     
; 202 |   L_accb = L_deposit_l( buf[j] );                                      
;----------------------------------------------------------------------
        STLM      A,AR6
        NOP
        NOP
        MVMM      AR6,AR1
        STM       #9,AR7
L1:    
;**	-----------------------g2:
;** 203	-----------------------    if ( (L_diff = L_sub((long)U$3[1], (long)*U$3)) >= 0L ) goto g4;

;----------------------------------------------------------------------
; 203 | L_diff = L_sub( L_acc, L_accb );                                       
; 205 | if( L_diff < 0L ) {                                                    
;----------------------------------------------------------------------
        ;;RSBX      OVM
        SSBX	OVM;;WLY
        SSBX      SXM
        RSBX      FRCT
        ;;LD        *AR1,A                ; |203| 
        ;;DST       A,*SP(0)              ; |203| 
        LD		*AR1,B;;WLY
        LD        *AR1(1),A             ; |203| 
        ;;CALL      #_L_sub               ; |203| 
        NOP;;
        SUB 	B,A;;WLY
        ; call occurs [#_L_sub] ; |203| 
        ;;RSBX      OVM
        ;;SSBX      SXM
        ;;SFTA      A,8                   ; |203| 
        ;;SFTA      A,-8                  ; |203| 
        BC        L2,AGEQ               ; |203| 
        ; branch occurs ; |203| 
;** 207	-----------------------    tmp = U$3[1];
;** 208	-----------------------    U$3[1] = *U$3;
;** 209	-----------------------    *U$3 = tmp;
	.line	17
;----------------------------------------------------------------------
; 207 | tmp      = buf[j+1];                                                   
;----------------------------------------------------------------------
        LD        *AR1(1),B
	.line	18
;----------------------------------------------------------------------
; 208 | buf[j+1] = buf[j];                                                     
;----------------------------------------------------------------------
        LD        *AR1,A
        STL       A,*AR1(1)
	.line	19
;----------------------------------------------------------------------
; 209 | buf[j]   = tmp;                                                        
;----------------------------------------------------------------------
        STL       B,*AR1
L2:    
;**	-----------------------g4:
;** 211	-----------------------    ++U$3;
;** 211	-----------------------    if ( --L$1 ) goto g2;
	.line	21
        BANZD     L1,*+AR7(-1)          ; |211| 
        NOP
        MAR       *AR1+
        ; branch occurs ; |211| 
;** 214	-----------------------    if ( *buf >= 40 ) goto g7;
	.line	24
;----------------------------------------------------------------------
; 214 | if( sub(buf[0], L_LIMIT) <0 ) {                                        
;----------------------------------------------------------------------
        LD        #40,A
        SUB       *AR6,A                ; |214| 
        BC        L3,ALEQ               ; |214| 
        ; branch occurs ; |214| 
;** 215	-----------------------    *buf = 40;
;** 216	-----------------------    printf((char *)"lsp_stability warning Low \n");
	.line	25
;----------------------------------------------------------------------
; 215 | buf[0] = L_LIMIT;                                                      
;----------------------------------------------------------------------
        ST        #40,*AR6              ; |215| 
	.line	26
;----------------------------------------------------------------------
; 216 | printf("lsp_stability warning Low \n");                                
; 218 | for(j=0; j<M-1; j++) {                                                 
; 219 | L_acc = L_deposit_l( buf[j+1] );                                       
; 220 | L_accb = L_deposit_l( buf[j] );                                        
;----------------------------------------------------------------------
        RSBX      FRCT
        ST        #SL1,*SP(0)           ; |216| 
        CALL      #_printf              ; |216| 
        ; call occurs [#_printf] ; |216| 
L3:    
;**	-----------------------g7:
;**  	-----------------------    #pragma MUST_ITERATE(9, 9, 9)
;**  	-----------------------    #pragma LOOP_FLAGS(5120u)
;**  	-----------------------    U$3 = buf;
;**  	-----------------------    L$2 = 9;
        NOP
        NOP
        NOP
        NOP
        STM       #9,AR7
        MVMM      AR6,AR1
L4:    
;**	-----------------------g9:
;** 221	-----------------------    L_diff = L_sub((long)U$3[1], (long)*U$3);
;** 223	-----------------------    if ( L_sub(L_diff, 321L) >= 0L ) goto g11;
	.line	31
;----------------------------------------------------------------------
; 221 | L_diff = L_sub( L_acc, L_accb );                                       
;----------------------------------------------------------------------
        ;;RSBX      OVM
        ;;SSBX      SXM
        ;;RSBX      FRCT
        ;;LD        *AR1,A                ; |221| 
        ;;DST       A,*SP(0)              ; |221| 
        LD 		*AR1,B;;WLY
        LD        *AR1(1),A             ; |221| 
        ;;CALL      #_L_sub               ; |221| 
        NOP;;
        SUB 	B,A;;WLY
        ; call occurs [#_L_sub] ; |221| 
	.line	33
;----------------------------------------------------------------------
; 223 | if( L_sub(L_diff, GAP3)<0L ) {                                         
;----------------------------------------------------------------------
        LD        #321,B
        ;;RSBX      FRCT
        ;;RSBX      OVM
        ;;DST       B,*SP(0)              ; |223| 
        ;;CALL      #_L_sub               ; |223| 
        ; call occurs [#_L_sub] ; |223| 
        SUB 	B,A;;WLY
        ;;RSBX      OVM
        ;;SSBX      SXM
        ;;SFTA      A,8                   ; |223| 
        ;;SFTA      A,-8                  ; |223| 
        BC        L5,AGEQ               ; |223| 
        ; branch occurs ; |223| 
;** 224	-----------------------    U$3[1] = _sadd(*U$3, 321);
	.line	34
;----------------------------------------------------------------------
; 224 | buf[j+1] = add( buf[j], GAP3 );                                        
;----------------------------------------------------------------------
        LD        *AR1,16,A             ; |224| 
        ;;SSBX      OVM
        NOP
        ADD       #321,16,A,A           ; |224| 
        STH       A,*AR1(1)             ; |224| 
L5:    
;**	-----------------------g11:
;** 226	-----------------------    ++U$3;
;** 226	-----------------------    if ( --L$2 ) goto g9;
	.line	36
        BANZD     L4,*+AR7(-1)          ; |226| 
        NOP
        MAR       *AR1+
        ; branch occurs ; |226| 
;** 228	-----------------------    if ( buf[9] < 25682 ) goto g14;
	.line	38
;----------------------------------------------------------------------
; 228 | if( sub(buf[M-1],M_LIMIT)>0 ) {                                        
;----------------------------------------------------------------------
        ;;RSBX      OVM
        LD        #25682,A
        SUB       *AR6(9),A             ; |228| 
        BC        L6,AGT                ; |228| 
        ; branch occurs ; |228| 
;** 229	-----------------------    buf[9] = 25681;
;** 230	-----------------------    printf((char *)"lsp_stability warning High \n");
;**	-----------------------g14:
;**  	-----------------------    return;
	.line	39
;----------------------------------------------------------------------
; 229 | buf[M-1] = M_LIMIT;                                                    
;----------------------------------------------------------------------
        ST        #25681,*AR6(9)        ; |229| 
	.line	40
;----------------------------------------------------------------------
; 230 | printf("lsp_stability warning High \n");                               
; 232 | return;                                                                
;----------------------------------------------------------------------
        RSBX      FRCT
        ST        #SL2,*SP(0)           ; |230| 
        CALL      #_printf              ; |230| 
        ; call occurs [#_printf] ; |230| 
L6:    
	.line	43
        ANDM      #-833,*(ST1)
        ANDM      #-4,*(PMST)
        FRAME     #2
        POPM      AR7
        POPM      AR6
        POPM      AR1
        RET
        ; return occurs
;;	.endfunc	233,000018400h,5



	.sect	".text"
	.global	_Lsp_prev_update

;----------------------------------------------------------------------
; 177 | void Lsp_prev_update(                                                  
; 178 | Word16 lsp_ele[M],             /* (i)   Q13 : LSP vectors           */ 
; 179 | Word16 freq_prev[MA_NP][M]     /* (i/o) Q13 : previous LSP vectors  */ 
; 180 | )                                                                      
;----------------------------------------------------------------------

;***************************************************************
;* FUNCTION DEF: _Lsp_prev_update                              *
;***************************************************************

;***************************************************************
;*                                                             *
;* Using -g (debug) with optimization (-o3) may disable key op *
;*                                                             *
;***************************************************************
_Lsp_prev_update:
	.line	5
;* A     assigned to _lsp_ele
	.sym	_lsp_ele,0, 19, 17, 16
	.sym	_freq_prev,8, 211, 9, 16,, 10
	.sym	U$6,3, 20, 1, 16
;* AR1   assigned to U$8
	.sym	U$8,10, 20, 4, 16
;* AR6   assigned to L$1
	.sym	L$1,15, 4, 4, 16
	.sym	_freq_prev,2, 211, 1, 16,, 10
;* AR7   assigned to _lsp_ele
	.sym	_lsp_ele,16, 19, 4, 16
;**  	-----------------------    #pragma MUST_ITERATE(3, 3, 3)
;**  	-----------------------    #pragma LOOP_FLAGS(5120u)
;**  	-----------------------    U$6 = &freq_prev[30];
;**  	-----------------------    U$8 = &freq_prev[20];
;**  	-----------------------    L$1 = 3;
        PSHM      AR1
        PSHM      AR6
        PSHM      AR7
        FRAME     #-4
;----------------------------------------------------------------------
; 182 | Word16 k;                                                              
; 184 | for ( k = MA_NP-1 ; k > 0 ; k-- )                                      
;----------------------------------------------------------------------
        STLM      A,AR7
        NOP
        STM       #3,AR6
        LD        *SP(8),A
        STL       A,*SP(2)
        ADD       #30,A,A
        STL       A,*SP(3)
        LD        *SP(2),A
        ADD       #20,A,A
        STLM      A,AR1
        SSBX      SXM;;wly
L7:    
;**	-----------------------g2:
;** 185	-----------------------    Copy(U$8, U$6, 10);
;** 185	-----------------------    U$6 -= 10;
;** 185	-----------------------    U$8 -= 10;
;** 185	-----------------------    if ( --L$1 ) goto g2;
	.line	9
;----------------------------------------------------------------------
; 185 | Copy(freq_prev[k-1], freq_prev[k], M);                                 
;----------------------------------------------------------------------
        LD        *SP(3),A
        STL       A,*SP(0)
        ST        #10,*SP(1)            ; |185| 
        CALLD     #_Copy                ; |185| 
        NOP
        LDM       AR1,A
        ; call occurs [#_Copy] ; |185| 
        MAR       *+AR1(#-10)
        ;;SSBX      SXM
        LD        *SP(3),A
        ADD       #-10,A
        BANZD     L7,*+AR6(-1)          ; |185| 
        NOP
        STL       A,*SP(3)
        ; branch occurs ; |185| 
;** 187	-----------------------    Copy(lsp_ele, (int * const)freq_prev, 10);
;** 188	-----------------------    return;
	.line	11
;----------------------------------------------------------------------
; 187 | Copy(lsp_ele, freq_prev[0], M);                                        
;----------------------------------------------------------------------
        LD        *SP(2),A
        STL       A,*SP(0)
        ST        #10,*SP(1)            ; |187| 
        CALLD     #_Copy                ; |187| 
        NOP
        LDM       AR7,A
        ; call occurs [#_Copy] ; |187| 
	.line	12
;----------------------------------------------------------------------
; 188 | return;                                                                
;----------------------------------------------------------------------

⌨️ 快捷键说明

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