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

📄 qua_gain_asm.asm

📁 g.729汇编手工优化
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;** 128	-----------------------    goto g6;
	.line	86
;----------------------------------------------------------------------
; 127 | L_tmp = L_sub( L_shr( L_tmp1,1 ), L_shr( L_tmp2, add(sub(exp2,exp1),1 )
;     | ) );                                                                   
;----------------------------------------------------------------------
        RSBX      FRCT
        RSBX      OVM
        ST        #1,*SP(0)             ; |127| 
        CALL      #_L_shr               ; |127| 
        ; call occurs [#_L_shr] ; |127| 
        SSBX      SXM
        RSBX      OVM
        DST       A,*SP(32)             ; |127| 
        LD        *SP(30),B
        RSBX      FRCT
        LD        *(AR6),16,A           ; |127| 
        SSBX      OVM
        SUB       *(BL),16,A,A          ; |127| 
        ADD       #1,16,A,A             ; |127| 
        RSBX      OVM
        STH       A,*SP(0)              ; |127| 
        DLD       *SP(28),A             ; |127| 
        CALL      #_L_shr               ; |127| 
        ; call occurs [#_L_shr] ; |127| 
        RSBX      OVM
        RSBX      FRCT
        DST       A,*SP(0)              ; |127| 
        DLD       *SP(32),A             ; |127| 
        CALL      #_L_sub               ; |127| 
        ; call occurs [#_L_sub] ; |127| 
	.line	87
;----------------------------------------------------------------------
; 128 | exp = sub(exp1,1);                                                     
; 130 | sft = norm_l( L_tmp );                                                 
;----------------------------------------------------------------------
        RSBX      OVM
        LD        *SP(30),B
        SSBX      SXM
        LD        *(BL),16,B            ; |128| 
        SSBX      OVM
        NOP
        SUB       #1,16,B,B             ; |128| 
        BD        L12                   ; |128| 
        SFTA      B,-16,B               ; |128| 
        STL       B,*SP(30)
        ; branch occurs ; |128| 
L11:    
;**	-----------------------g5:
;** 123	-----------------------    L_tmp = L_sub(L_shr(L_tmp1, _sadd(_ssub(exp1, exp2), 1)), L_shr(L_tmp2, 1));
;** 124	-----------------------    exp = _ssub(exp2, 1);
	.line	82
        RSBX      OVM
        LD        *SP(30),B
        LD        *(BL),16,B            ; |123| 
        RSBX      FRCT
        SSBX      OVM
        SUB       *(AR6),16,B,B         ; |123| 
        ADD       #1,16,B,B             ; |123| 
        RSBX      OVM
        STH       B,*SP(0)              ; |123| 
        CALL      #_L_shr               ; |123| 
        ; call occurs [#_L_shr] ; |123| 
        DST       A,*SP(32)             ; |123| 
        RSBX      OVM
        RSBX      FRCT
        ST        #1,*SP(0)             ; |123| 
        DLD       *SP(28),A             ; |123| 
        CALL      #_L_shr               ; |123| 
        ; call occurs [#_L_shr] ; |123| 
        RSBX      OVM
        DST       A,*SP(0)              ; |123| 
        RSBX      FRCT
        DLD       *SP(32),A             ; |123| 
        CALL      #_L_sub               ; |123| 
        ; call occurs [#_L_sub] ; |123| 
	.line	83
        SSBX      SXM
        RSBX      OVM
        LD        *(AR6),16,B           ; |124| 
        SSBX      OVM
        NOP
        SUB       #1,16,B,B             ; |124| 
        SFTA      B,-16,B               ; |124| 
        STL       B,*SP(30)
L12:    
;**	-----------------------g6:
;** 131	-----------------------    C$10 = _lnorm(L_tmp);
;** 131	-----------------------    nume = (unsigned long)L_shl(L_tmp, C$10)>>16;
;** 135	-----------------------    L_acc = L_shr(_lsmpy(nume, inv_denom), _ssub(_sadd(_ssub(_sadd(exp, C$10), 16), exp_inv_denom), 24));
;** 136	-----------------------    best_gain[0] = L_acc>>16;
;** 75	-----------------------    K$12 = &past_qua_en[0];
;** 138	-----------------------    if ( tameflag != 1 || (int)(L_acc>>16) < 482 ) goto g8;
	.line	90
;----------------------------------------------------------------------
; 131 | nume = extract_h( L_shl(L_tmp, sft) );                                 
; 132 | exp_nume = sub( add( exp, sft ), 16 );                                 
; 134 | sft = sub( add( exp_nume, exp_inv_denom ), (9+16-1) );                 
;----------------------------------------------------------------------
        RSBX      OVM
        LD        A,B                   ; |131| 
        SFTA      B,8                   ; |131| 
        SFTA      B,-8                  ; |131| 
        EXP       B                     ; |131| 
        RSBX      FRCT
        MVMD      T,AR6
        MVKD      *(AR6),*SP(0)
        CALL      #_L_shl               ; |131| 
        ; call occurs [#_L_shl] ; |131| 
        SFTL      A,#-16,A              ; |131| 
	.line	94
;----------------------------------------------------------------------
; 135 | 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            ; |135| 
        SSBX      OVM
        ADD       *(AR6),16,B,B         ; |135| 
        LD        *SP(34),T
        SUB       #16,16,B,B            ; |135| 
        ADD       *(AR2),16,B,B         ; |135| 
        MPY       *(AL),A               ; |135| 
        SUB       #24,16,B,B            ; |135| 
        RSBX      FRCT
        RSBX      OVM
        STH       B,*SP(0)              ; |135| 
        CALL      #_L_shr               ; |135| 
        ; call occurs [#_L_shr] ; |135| 
	.line	95
;----------------------------------------------------------------------
; 136 | best_gain[0] = extract_h( L_acc );             /*-- best_gain[0]:Q9 --*
;     | /                                                                      
;----------------------------------------------------------------------
        LD        A,B                   ; |136| 
        SFTL      B,#-16,B              ; |136| 
        STL       B,*SP(23)             ; |136| 
	.line	34
        LD        #_past_qua_en$1,B
        STL       B,*SP(36)
	.line	97
;----------------------------------------------------------------------
; 138 | if (tameflag == 1){                                                    
;----------------------------------------------------------------------
        MVDK      *SP(25),*(AR2)
        BANZ      L13,*AR2(-1)          ; |138| 
        ; branch occurs ; |138| 
        SSBX      SXM
        SFTL      A,#-16,A              ; |138| 
        RSBX      OVM
        LD        *(AL),A               ; |138| 
        SUB       #482,A,A              ; |138| 
        BC        L13,ALT               ; |138| 
        ; branch occurs ; |138| 
;** 139	-----------------------    best_gain[0] = 481;
	.line	98
;----------------------------------------------------------------------
; 139 | if(sub(best_gain[0], GPCLIP2) > 0) best_gain[0] = GPCLIP2;             
;----------------------------------------------------------------------
        ST        #481,*SP(23)          ; |139| 
L13:    
;**	-----------------------g8:
;** 145	-----------------------    L_tmp1 = _lsmpy(*g_coeff, g_coeff[3]);
;** 146	-----------------------    exp1 = _sadd(*exp_coeff, exp_coeff[3]);
;** 147	-----------------------    L_tmp2 = _lsmpy(g_coeff[1], g_coeff[4]);
;** 148	-----------------------    exp2 = _sadd(_sadd(exp_coeff[1], exp_coeff[4]), 1);
;** 150	-----------------------    if ( _ssub(exp1, exp2) > 0 ) goto g10;
	.line	104
;----------------------------------------------------------------------
; 145 | L_tmp1 = L_mult( g_coeff[0], g_coeff[3] );                             
;----------------------------------------------------------------------
        SSBX      FRCT
        SSBX      OVM
        LD        *AR1(3),T
        NOP
        MPY       *AR1,A                ; |145| 
	.line	105
;----------------------------------------------------------------------
; 146 | exp1   = add( exp_coeff[0], exp_coeff[3] ) ;                           
;----------------------------------------------------------------------
        SSBX      SXM
        RSBX      OVM
        NOP
        LD        *AR7,16,B             ; |146| 
        SSBX      OVM
        ADD       *AR7(3),16,B,B        ; |146| 
        SFTA      B,-16,B               ; |146| 
        STL       B,*SP(30)
	.line	106
;----------------------------------------------------------------------
; 147 | L_tmp2 = L_mult( g_coeff[1], g_coeff[4] );                             
;----------------------------------------------------------------------
        LD        *AR1(4),T
        MPY       *AR1(1),B             ; |147| 
        DST       B,*SP(28)             ; |147| 
	.line	107
;----------------------------------------------------------------------
; 148 | exp2   = add( add( exp_coeff[1], exp_coeff[4] ), 1 );                  
;----------------------------------------------------------------------
        RSBX      OVM
        LD        *AR7(1),16,B          ; |148| 
        SSBX      OVM
        ADD       *AR7(4),16,B,B        ; |148| 
        ADD       #1,16,B,B             ; |148| 
        SFTA      B,-16,B               ; |148| 
        STLM      B,AR6
	.line	109
;----------------------------------------------------------------------
; 150 | if( sub(exp1, exp2)>0 ){                                               
; 151 |    L_tmp = L_sub( L_shr( L_tmp1, add(sub(exp1,exp2),1) ), L_shr( L_tmp2
;     | ,1 ) );                                                                
; 152 |    exp = sub(exp2,1);                                                  
; 154 | else{                                                                  
;----------------------------------------------------------------------
        RSBX      OVM
        LD        *SP(30),B
        LD        *(BL),16,B            ; |150| 
        SSBX      OVM
        SUB       *(AR6),16,B,B         ; |150| 
        SFTA      B,-16,B               ; |150| 
        LD        *(BL),B               ; |150| 
        BC        L14,BGT               ; |150| 
        ; branch occurs ; |150| 
;** 155	-----------------------    L_tmp = L_sub(L_shr(L_tmp1, 1), L_shr(L_tmp2, _sadd(_ssub(exp2, exp1), 1)));
;** 156	-----------------------    exp = _ssub(exp1, 1);
;** 156	-----------------------    goto g11;
	.line	114
;----------------------------------------------------------------------
; 155 | L_tmp = L_sub( L_shr( L_tmp1,1 ), L_shr( L_tmp2, add(sub(exp2,exp1),1)
;     | ) );                                                                   
;----------------------------------------------------------------------
        RSBX      FRCT
        RSBX      OVM
        ST        #1,*SP(0)             ; |155| 
        CALL      #_L_shr               ; |155| 
        ; call occurs [#_L_shr] ; |155| 
        SSBX      SXM
        RSBX      OVM
        DST       A,*SP(32)             ; |155| 
        LD        *SP(30),B
        RSBX      FRCT
        LD        *(AR6),16,A           ; |155| 
        SSBX      OVM
        SUB       *(BL),16,A,A          ; |155| 
        ADD       #1,16,A,A             ; |155| 
        RSBX      OVM
        STH       A,*SP(0)              ; |155| 
        DLD       *SP(28),A             ; |155| 
        CALL      #_L_shr               ; |155| 
        ; call occurs [#_L_shr] ; |155| 
        RSBX      OVM
        RSBX      FRCT
        DST       A,*SP(0)              ; |155| 
        DLD       *SP(32),A             ; |155| 
        CALL      #_L_sub               ; |155| 
        ; call occurs [#_L_sub] ; |155| 
	.line	115
;----------------------------------------------------------------------
; 156 | exp = sub(exp1,1);                                                     
; 158 | sft = norm_l( L_tmp );                                                 
;----------------------------------------------------------------------
        RSBX      OVM
        LD        *SP(30),B
        SSBX      SXM
        LD        *(BL),16,B            ; |156| 
        SSBX      OVM
        NOP
        SUB       #1,16,B,B             ; |156| 
        BD        L15                   ; |156| 
        SFTA      B,-16,B               ; |156| 
        STL       B,*SP(30)
        ; branch occurs ; |156| 
L14:    
;**	-----------------------g10:
;** 151	-----------------------    L_tmp = L_sub(L_shr(L_tmp1, _sadd(_ssub(exp1, exp2), 1)), L_shr(L_tmp2, 1));
;** 152	-----------------------    exp = _ssub(exp2, 1);
	.line	110
        RSBX      OVM
        LD        *SP(30),B
        LD        *(BL),16,B            ; |151| 
        RSBX      FRCT
        SSBX      OVM
        SUB       *(AR6),16,B,B         ; |151| 
        ADD       #1,16,B,B             ; |151| 
        RSBX      OVM
        STH       B,*SP(0)              ; |151| 
        CALL      #_L_shr               ; |151| 
        ; call occurs [#_L_shr] ; |151| 
        DST       A,*SP(32)             ; |151| 
        RSBX      OVM
        RSBX      FRCT
        ST        #1,*SP(0)             ; |151| 
        DLD       *SP(28),A             ; |151| 
        CALL      #_L_shr               ; |151| 
        ; call occurs [#_L_shr] ; |151| 
        RSBX      OVM
        DST       A,*SP(0)              ; |151| 
        RSBX      FRCT
        DLD       *SP(32),A             ; |151| 
        CALL      #_L_sub               ; |151| 
        ; call occurs [#_L_sub] ; |151| 
	.line	111
        SSBX      SXM
        RSBX      OVM
        LD        *(AR6),16,B           ; |152| 
        SSBX      OVM
        NOP
        SUB       #1,16,B,B             ; |152| 

⌨️ 快捷键说明

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