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