📄 qua_lsp_asm.asm
字号:
MVDK *SP(24),*(AR7)
ADD #5,B,B
STLM B,AR2
SSBX SXM ; added by d.l.b
SSBX OVM ; added by d.l.b
RPTB L12-1
L11:
LD *AR3+,16,A
SUB *AR2+,16,A,A
STH A,*AR1+
L12:
;----------------------------------------------------------------------
; 228 | *index = 0;
;----------------------------------------------------------------------
LD #5,A
ST #0,*AR6
STL A,*SP(13)
;----------------------------------------------------------------------
; 229 | L_dmin = MAX_32;
;----------------------------------------------------------------------
RSBX OVM
NOP
LD #32767,16,A ; |229|
OR #65535,A,A ; |229|
DST A,*SP(14) ; |229|
;----------------------------------------------------------------------
; 230 | for ( k1 = 0 ; k1 < NC1 ; k1++ ) {
;----------------------------------------------------------------------
STM #0,AR1
SSBX FRCT ; line-205
SSBX OVM ; line-199
ORM #2,*(PMST) ; line-216
L13:
LD *SP(13),A
ADD *(AR7),A
STLM A,AR3
LD *SP(12),A
MVMM SP,AR2
ADD #5,A,A
STLM A,AR4
MAR *+AR2(#7)
;----------------------------------------------------------------------
; 231 | L_dist = 0;
; 232 | for ( j = NC ; j < M ; j++ ) {
; 233 | tmp = sub(buf[j], lspcb2[k1][j]);
; 234 | tmp2 = mult( wegt[j], tmp );
;----------------------------------------------------------------------
STM #4,BRC
LD #0,A
DST A,*SP(16)
RPTB L15-1
L14:
;----------------------------------------------------------------------
; 235 | L_dist = L_mac( L_dist, tmp2, tmp );
;----------------------------------------------------------------------
;RSBX OVM
;SSBX SXM
;NOP
LD *AR2+,16,A
;SSBX OVM
;NOP
SUB *AR3+,16,A,A ; (a) = tmp = sub(buf[j], lspcb2[k1][j])
;SFTA A,-16,A
;RSBX OVM
;STLM A,AR5
;SSBX FRCT
;LD *(AR5),16,A
STH A,*(AR5)
;SSBX OVM
;NOP
MPYA *AR4+
;RSBX OVM
STH B,*(T)
DLD *SP(16),A
;ORM #2,*(PMST)
;SSBX OVM
;ORM #2,*(PMST)
MAC *(AR5), A
DST A,*SP(16)
L15:
;----------------------------------------------------------------------
; 238 | L_temp = L_sub(L_dist, L_dmin);
; 239 | if ( L_temp <0L ) {
;----------------------------------------------------------------------
;RSBX OVM
;NOP
DLD *SP(14),A
;RSBX FRCT
;DST A,*SP(0)
;DLD *SP(16),A
;CALL #_L_sub
DRSUB *SP(16),A
;RSBX OVM
;SSBX SXM
;SFTA A,8
;SFTA A,-8
BC L16,AGEQ
;----------------------------------------------------------------------
; 240 | L_dmin = L_dist;
;----------------------------------------------------------------------
DLD *SP(16),A
DST A,*SP(14) ; |240|
;----------------------------------------------------------------------
; 241 | *index = k1;
;----------------------------------------------------------------------
MVKD *(AR1),*AR6
L16:
;----------------------------------------------------------------------
; 244 | return;
;----------------------------------------------------------------------
LD *SP(13),A
MAR *AR1+
ADD #10,A
STL A,*SP(13)
LD *(AR1),A ; |243|
SUB #32,A,A ; |243|
BC L13,ALT ; |243|
ANDM #-833,*(ST1)
ANDM #-4,*(PMST)
FRAME #18
POPM AR7
POPM AR6
POPM AR1
RET
.sect ".text"
.global _Lsp_get_tdist
;----------------------------------------------------------------------
; 137 | void Lsp_get_tdist(
; 138 | Word16 wegt[], /* (i) norm: weight coef. */
; 139 | Word16 buf[], /* (i) Q13 : candidate LSP vector */
; 140 | Word32 *L_tdist, /* (o) Q27 : distortion */
; 141 | Word16 rbuf[], /* (i) Q13 : target vector */
; 142 | Word16 fg_sum[] /* (i) Q15 : present MA prediction coef. */
; 143 | )
;----------------------------------------------------------------------
_Lsp_get_tdist:
PSHM AR1
PSHM AR6
PSHM AR7
FRAME #-6
;NOP
SSBX SXM ; ****
SSBX OVM
SSBX FRCT
;----------------------------------------------------------------------
; 145 | Word16 j;
; 146 | Word16 tmp, tmp2; /* Q13 */
; 147 | Word32 L_acc; /* Q25 */
;----------------------------------------------------------------------
MVDK *SP(12),*(AR2)
MVDK *SP(10),*(AR1)
MVDK *SP(11),*(AR6)
MVDK *SP(13),*(AR3)
;----------------------------------------------------------------------
; 149 | *L_tdist = 0;
; 150 | for ( j = 0 ; j < M ; j++ ) {
;----------------------------------------------------------------------
LD #0,B
STLM A,AR7
LD #10,A
DST B,*AR6 ; |149|
STL A,*SP(4)
MVKD *(AR2),*SP(3)
MVKD *(AR3),*SP(2)
L17:
;----------------------------------------------------------------------
; 152 | tmp = sub( buf[j], rbuf[j] );
; 153 | tmp = mult( tmp, fg_sum[j] );
; 156 | L_acc = L_mult( wegt[j], tmp );
;----------------------------------------------------------------------
;RSBX OVM
;SSBX SXM
MVDK *SP(3),*(AR2)
LD *AR1+,16,A ; |152|
;SSBX OVM
;SSBX FRCT
SUB *AR2+,16,A,A ; |152|
;RSBX OVM
MVKD *(AR2),*SP(3)
STH A,*(T)
MVDK *SP(2),*(AR2)
LD *AR2+,16,A ; |152|
;SSBX OVM
NOP
MPYA A ; |152|
SFTA A,-16,A ; |152|
STL A,*SP(5)
MVKD *(AR2),*SP(2)
;----------------------------------------------------------------------
; 157 | tmp2 = extract_h( L_shl( L_acc, 4 ) );
;----------------------------------------------------------------------
STLM A,T
;ST #4,*SP(0) ; |157|
NOP
MPY *AR7+,A ; |157|
;RSBX FRCT
;RSBX OVM
NOP
;CALL #_L_shl ; |157|
SFTA A,4
SFTL A,#-16,A ; |157|
STLM A,T
;----------------------------------------------------------------------
; 158 | *L_tdist = L_mac( *L_tdist, tmp2, tmp );
;----------------------------------------------------------------------
;SSBX SXM
;NOP
DLD *AR6,A
LD *SP(5),B
ORM #2,*(PMST)
;SSBX FRCT
;SSBX OVM
;ORM #2,*(PMST)
MAC *(BL), A ; |158|
DST A,*AR6 ; |158|
;----------------------------------------------------------------------
; 161 | return;
;----------------------------------------------------------------------
MVDK *SP(4),*(AR2)
BANZD L17,*+AR2(-1) ; |159|
MVKD *(AR2),*SP(4)
ANDM #-833,*(ST1)
ANDM #-4,*(PMST)
FRAME #6
POPM AR7
POPM AR6
POPM AR1
RET
.sect ".text"
.global _Lsp_last_select
;----------------------------------------------------------------------
; 166 | void Lsp_last_select(
; 167 | Word32 L_tdist[], /* (i) Q27 : distortion */
; 168 | Word16 *mode_index /* (o) : the selected mode */
; 169 | )
;----------------------------------------------------------------------
_Lsp_last_select:
PSHM AR1
;FRAME #-2
SSBX SXM
SSBX OVM
;----------------------------------------------------------------------
; 171 | Word32 L_temp;
;----------------------------------------------------------------------
MVDK *SP(2),*(AR1)
STLM A,AR2
;----------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -