📄 qua_gain_asm.asm
字号:
;** 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 + -