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

📄 qua_gain_asm.asm

📁 g.729汇编手工优化
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        SFTA      B,-16,B               ; |152| 
        STL       B,*SP(30)
L15:    
;**	-----------------------g11:
;** 159	-----------------------    C$9 = _lnorm(L_tmp);
;** 159	-----------------------    nume = (unsigned long)L_shl(L_tmp, C$9)>>16;
;** 163	-----------------------    L_acc = L_shr(_lsmpy(nume, inv_denom), _ssub(_sadd(_ssub(_sadd(exp, C$9), 16), exp_inv_denom), 17));
;** 164	-----------------------    best_gain[1] = L_acc>>16;
;** 167	-----------------------    if ( exp_gcode0 >= 4 ) goto g13;
	.line	118
;----------------------------------------------------------------------
; 159 | nume = extract_h( L_shl(L_tmp, sft) );                                 
; 160 | exp_nume = sub( add( exp, sft ), 16 );                                 
; 162 | sft = sub( add( exp_nume, exp_inv_denom ), (2+16-1) );                 
;----------------------------------------------------------------------
        RSBX      OVM
        LD        A,B                   ; |159| 
        SFTA      B,8                   ; |159| 
        SFTA      B,-8                  ; |159| 
        EXP       B                     ; |159| 
        RSBX      FRCT
        MVMD      T,AR6
        MVKD      *(AR6),*SP(0)
        CALL      #_L_shl               ; |159| 
        ; call occurs [#_L_shl] ; |159| 
        SFTL      A,#-16,A              ; |159| 
	.line	122
;----------------------------------------------------------------------
; 163 | L_acc = L_shr( L_mult( nume,inv_denom ), sft );                        
;----------------------------------------------------------------------
        SSBX      SXM
        RSBX      OVM
        LD        *SP(30),B
        SSBX      FRCT
        MVDK      *SP(35),*(AR2)
        LD        *(BL),16,B            ; |163| 
        SSBX      OVM
        ADD       *(AR6),16,B,B         ; |163| 
        LD        *SP(34),T
        SUB       #16,16,B,B            ; |163| 
        ADD       *(AR2),16,B,B         ; |163| 
        MPY       *(AL),A               ; |163| 
        SUB       #17,16,B,B            ; |163| 
        RSBX      FRCT
        RSBX      OVM
        STH       B,*SP(0)              ; |163| 
        CALL      #_L_shr               ; |163| 
        ; call occurs [#_L_shr] ; |163| 
	.line	123
;----------------------------------------------------------------------
; 164 | best_gain[1] = extract_h( L_acc );             /*-- best_gain[1]:Q2 --*
;     | /                                                                      
;----------------------------------------------------------------------
        SFTL      A,#-16,A              ; |164| 
        STL       A,*SP(24)             ; |164| 
	.line	126
;----------------------------------------------------------------------
; 167 | if( sub(exp_gcode0,4) >= 0 ){                                          
; 168 |    gcode0_org = shr( gcode0, sub(exp_gcode0,4) );                      
; 170 | else{                                                                  
; 171 |    L_acc = L_deposit_l( gcode0 );                                      
;----------------------------------------------------------------------
        SSBX      SXM
        RSBX      OVM
        LD        #4,A
        SUB       *SP(7),A              ; |167| 
        BC        L16,ALEQ              ; |167| 
        ; branch occurs ; |167| 
;** 172	-----------------------    L_acc = L_shl((long)gcode0, _ssub(20, exp_gcode0));
;** 173	-----------------------    gcode0_org = L_acc>>16;
;**  	-----------------------    U$113 = _ssub(exp_gcode0, 4);
;** 173	-----------------------    goto g14;
	.line	131
;----------------------------------------------------------------------
; 172 | L_acc = L_shl( L_acc, sub( (4+16), exp_gcode0 ) );                     
;----------------------------------------------------------------------
        LD        #20,16,A              ; |172| 
        SSBX      OVM
        RSBX      FRCT
        SUB       *SP(7),16,A,A         ; |172| 
        RSBX      OVM
        STH       A,*SP(0)              ; |172| 
        LD        *SP(6),A              ; |172| 
        CALL      #_L_shl               ; |172| 
        ; call occurs [#_L_shl] ; |172| 
	.line	132
;----------------------------------------------------------------------
; 173 | gcode0_org = extract_h( L_acc );              /*-- gcode0_org:Q4 --*/  
;----------------------------------------------------------------------
        SSBX      SXM
        RSBX      OVM
        NOP
        LD        *SP(7),16,B
        SSBX      OVM
        NOP
        SUB       #4,16,B,B
        SFTA      B,-16,B
        BD        L17                   ; |173| 
        STL       B,*SP(30)
        SFTL      A,#-16,A              ; |173| 
        ; branch occurs ; |173| 
L16:    
;**	-----------------------g13:
;** 168	-----------------------    gcode0_org = crshft(gcode0, U$113 = _ssub(exp_gcode0, 4));
	.line	127
        LD        *SP(7),16,A           ; |168| 
        SSBX      OVM
        RSBX      FRCT
        SUB       #4,16,A,A             ; |168| 
        RSBX      OVM
        SFTA      A,-16,A               ; |168| 
        STL       A,*SP(30)
        STL       A,*SP(0)
        LD        *SP(6),A
        CALL      #_crshft              ; |168| 
        ; call occurs [#_crshft] ; |168| 
L17:    
;**	-----------------------g14:
;** 180	-----------------------    Gbk_presel(&best_gain, &cand1, &cand2, gcode0_org);
;** 219	-----------------------    exp_min[0] = _sadd(*exp_coeff, 13);
;** 220	-----------------------    C$8 = &exp_min[1];
;** 220	-----------------------    *C$8 = _sadd(exp_coeff[1], 14);
;** 221	-----------------------    exp_min[2] = _sadd(exp_coeff[2], _ssub(clshft(exp_gcode0, 1), 21));
;** 222	-----------------------    exp_min[3] = _sadd(exp_coeff[3], _ssub(exp_gcode0, 3));
;** 223	-----------------------    exp_min[4] = _sadd(exp_coeff[4], U$113);
;** 225	-----------------------    e_min = exp_min[0];
;**  	-----------------------    #pragma MUST_ITERATE(4, 4, 4)
;**  	-----------------------    #pragma LOOP_FLAGS(4096u)
;**  	-----------------------    U$139 = C$8;
;**	-----------------------g16:
;**  	-----------------------    L$1 = 3;
;**	-----------------------g41:
	.line	139
;----------------------------------------------------------------------
; 180 | Gbk_presel(best_gain, &cand1, &cand2, gcode0_org );                    
;----------------------------------------------------------------------
        RSBX      OVM
        LDM       SP,B
        ADD       #4,B
        RSBX      FRCT
        STL       B,*SP(0)
        LDM       SP,B
        ADD       #5,B
        STL       B,*SP(1)
        STL       A,*SP(2)
        LDM       SP,A
        CALLD     #_Gbk_presel          ; |180| 
        ADD       #23,A
        ; call occurs [#_Gbk_presel] ; |180| 
	.line	178
;----------------------------------------------------------------------
; 219 | exp_min[0] = add( exp_coeff[0], 13 );                                  
;----------------------------------------------------------------------
        SSBX      SXM
        RSBX      OVM
        NOP
        LD        *AR7,16,A             ; |219| 
        SSBX      OVM
        NOP
        ADD       #13,16,A,A            ; |219| 
        STH       A,*SP(18)             ; |219| 
	.line	179
;----------------------------------------------------------------------
; 220 | exp_min[1] = add( exp_coeff[1], 14 );                                  
;----------------------------------------------------------------------
        RSBX      OVM
        LD        *AR7(1),16,A          ; |220| 
        SSBX      OVM
        MVMM      SP,AR6
        ADD       #14,16,A,A            ; |220| 
        MAR       *+AR6(#19)
        STH       A,*AR6                ; |220| 
	.line	180
;----------------------------------------------------------------------
; 221 | exp_min[2] = add( exp_coeff[2], sub( shl( exp_gcode0, 1 ), 21 ) );     
;----------------------------------------------------------------------
        RSBX      FRCT
        ST        #1,*SP(0)             ; |221| 
        RSBX      OVM
        LD        *SP(7),A
        CALL      #_clshft              ; |221| 
        ; call occurs [#_clshft] ; |221| 
        RSBX      OVM
        SSBX      SXM
        LD        *(AL),16,A            ; |221| 
        SSBX      OVM
        NOP
        SUB       #21,16,A,A            ; |221| 
        SFTA      A,-16,A               ; |221| 
        RSBX      OVM
        LD        *AR7(2),16,B          ; |221| 
        SSBX      OVM
        ADD       *(AL),16,B,A          ; |221| 
        STH       A,*SP(20)             ; |221| 
	.line	181
;----------------------------------------------------------------------
; 222 | exp_min[3] = add( exp_coeff[3], sub( exp_gcode0, 3 ) );                
;----------------------------------------------------------------------
        RSBX      OVM
        NOP
        LD        *SP(7),16,A           ; |222| 
        SSBX      OVM
        NOP
        SUB       #3,16,A,A             ; |222| 
        RSBX      OVM
        LD        *AR7(3),16,B          ; |222| 
        SSBX      OVM
        SFTA      A,-16,A               ; |222| 
        ADD       *(AL),16,B,A          ; |222| 
        STH       A,*SP(21)             ; |222| 
	.line	182
;----------------------------------------------------------------------
; 223 | exp_min[4] = add( exp_coeff[4], sub( exp_gcode0, 4 ) );                
;----------------------------------------------------------------------
        RSBX      OVM
        LD        *AR7(4),16,A          ; |223| 
        LD        *SP(30),B
        SSBX      OVM
        ADD       *(BL),16,A,A          ; |223| 
        STH       A,*SP(22)             ; |223| 
	.line	184
;----------------------------------------------------------------------
; 225 | e_min = exp_min[0];                                                    
; 226 | for(i=1; i<5; i++){                                                    
;----------------------------------------------------------------------
        STM       #3,BRC
        MVDK      *SP(18),*(AR7)
        RPTB      L20-1
        ; loop starts
L18:    
;** 227	-----------------------    C$7 = *U$139++;
;** 227	-----------------------    if ( _ssub(C$7, e_min) >= 0 ) goto g18;
	.line	186
;----------------------------------------------------------------------
; 227 | if( sub(exp_min[i], e_min) < 0 ){                                      
;----------------------------------------------------------------------
        RSBX      OVM
        LD        *AR6+,B
        LD        *(BL),16,A            ; |227| 
        SSBX      OVM
        SUB       *(AR7),16,A,A         ; |227| 
        SFTA      A,-16,A               ; |227| 
        LD        *(AL),A               ; |227| 
        BC        L19,AGEQ              ; |227| 
        ; branch occurs ; |227| 
;** 228	-----------------------    e_min = C$7;
	.line	187
;----------------------------------------------------------------------
; 228 | e_min = exp_min[i];                                                    
;----------------------------------------------------------------------
        STLM      B,AR7
L19:    
;**	-----------------------g18:
;** 230	-----------------------    if ( --L$1 != -1 ) goto g41;
        NOP
	.line	189
;----------------------------------------------------------------------
; 234 | for(i=0; i<5; i++){                                                    
; 235 |   j = sub( exp_min[i], e_min );                                        
; 236 |   L_tmp = L_deposit_h( g_coeff[i] );                                   
;----------------------------------------------------------------------
        ; loop ends ; |230| 
L20:    
;**  	-----------------------    #pragma MUST_ITERATE(5, 5, 5)
;**  	-----------------------    #pragma LOOP_FLAGS(5120u)
;**  	-----------------------    U$148 = g_coeff;
;**  	-----------------------    U$158 = &coeff[0];
;**  	-----------------------    U$155 = &coeff_lsf[0];
;**  	-----------------------    U$139 = &exp_min[0];
;**  	-----------------------    L$2 = 5;
        MVKD      *(AR1),*SP(35)
        RSBX      OVM
        LDM       SP,A
        MVMM      SP,AR6
        MVMM      SP,AR1
        ADD       #18,A
        MAR       *+AR6(#13)
        STL       A,*SP(30)
        MAR       *+AR1(#8)
        LD        #5,A
        STL       A,*SP(34)
L21:    
;**	-----------------------g21:
;** 237	-----------------------    L_tmp = L_shr((long)*U$148++<<16, _ssub(*U$139++, e_min));
;** 238	-----------------------    L_Extract(L_tmp, U$158, U$155);
;** 239	-----------------------    ++U$155;
;** 239	-----------------------    ++U$158;
;** 239	-----------------------    if ( --L$2 ) goto g21;
	.line	196
;----------------------------------------------------------------------
; 237 | L_tmp = L_shr( L_tmp, j );          /* L_tmp:Q[exp_g_coeff[i]+16-j] */ 
;----------------------------------------------------------------------
        RSBX      OVM
        SSBX      SXM
        MVDK      *SP(30),*(AR2)
        LD        *AR2+,16,A            ; |237| 
        RSBX      FRCT
        SSBX      OVM
        MVKD      *(AR2),*SP(30)
        SUB       *(AR7),16,A,A         ; |237| 
        MVDK      *SP(35),*(AR2)
        RSBX      OVM
        STH       A,*SP(0)              ; |237| 
        LD        *AR2+,A               ; |237| 
        MVKD      *(AR2),*SP(35)
        CALLD     #_L_shr               ; |237| 
        SFTL      A,#15,A               ; |237| 
        SFTL      A,#1,A                ; |237| 
        ; call occurs [#_L_shr] ; |237| 
	.line	197
;-------------------------------------

⌨️ 快捷键说明

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