📄 qua_lsp_asm.asm
字号:
.mmregs
FP .set AR7
.sect ".text"
.global _Lsp_pre_select
;***************************************************************
;* FUNCTION DEF: _Lsp_pre_select *
;***************************************************************
_Lsp_pre_select:
PSHM AR1
PSHM AR6
PSHM AR7
FRAME #-8
STLM A,AR7 ; (ar7)= rbuf
LD *SP(12),A ; sp(12) = lspcb1
STL A,*SP(2) ; sp(2) = lspcb1
MVDK *SP(13),*(AR6) ; (ar6) = cand
LD #0,A
ST #0,*AR6 ; *cand = 0
STL A,*SP(3) ; sp(3) = 0
;RSBX OVM
NOP
LD #32767,16,A
OR #65535,A,A ; (a) = 0x7FFFFFFF
DST A,*SP(4) ; sp(4) = MAX_32
;----------------------------------------------------------------------
; 151 | for ( i = 0 ; i < NC0 ; i++ ) {
;----------------------------------------------------------------------
STM #0,AR1
SSBX SXM ; line-81
SSBX OVM ; line-85
SSBX FRCT ; line-95
ORM #2,*(PMST)
LD *SP(2),B ; (b) = lspcb1
LD *SP(3),A
ADD *(BL),A ; (a) = lspcb1 + sp(3)
STLM A,AR4 ; (ar3) = lspcb1 + sp(3)
L1:
;LD *SP(2),B ; (b) = lspcb1
;LD *SP(3),A
;ADD *(BL),A ; (a) = lspcb1 + sp(3)
;STLM A,AR3 ; (ar3) = lspcb1 + sp(3)
MVMM AR4,AR3
MVMM AR7,AR2 ; (ar2) = rbuf
;----------------------------------------------------------------------
; 152 | L_tmp = 0;
; 153 | for ( j = 0 ; j < M ; j++ ) {
; 154 | tmp = sub(rbuf[j], lspcb1[i][j]);
;----------------------------------------------------------------------
STM #9,BRC
LD #0,A
;LD #0,B ; ADDED BY D.L.B
;DST A,*SP(6) ; sp(6) = L_tmp
;DLD *SP(6),B ; ****
LD A,B
;ORM #2,*(PMST) ; line-97
RPTB LOOP_1-1
L2:
;----------------------------------------------------------------------
; 155 | L_tmp = L_mac( L_tmp, tmp, tmp );
;----------------------------------------------------------------------
LD *AR2+,A
SUB *AR3+,A,A
STLM A,T ; (T) = tmp
MAC *(AL), B ; (b) = L_mac(L_tmp,tmp,tmp)
LOOP_1:
DST B,*SP(6)
L3:
;----------------------------------------------------------------------
; 158 | L_temp = L_sub(L_tmp,L_dmin);
; 159 | if ( L_temp< 0L) {
;----------------------------------------------------------------------
DLD *SP(4),A
DRSUB *SP(6),A
BC L4,AGEQ
;----------------------------------------------------------------------
; 160 | L_dmin = L_tmp;
;----------------------------------------------------------------------
DLD *SP(6),A ; sp(6) = L_tmp
DST A,*SP(4) ; sp(4) = L_dmin = L_tmp
MVKD *(AR1),*AR6 ; (ar6) = cand = i
L4:
;LD *SP(3),A
MAR *AR1+ ; (ar1) = i = i++
;ADD #10,A
;STL A,*SP(3)
MAR *+AR4(10)
LD *(AR1),A
SUB #128,A,A
BC L1,ALT
ANDM #-833,*(ST1)
ANDM #-4,*(PMST)
FRAME #8
POPM AR7
POPM AR6
POPM AR1
RET
.sect ".text"
.global _Lsp_select_1
;***************************************************************
;* FUNCTION DEF: _Lsp_select_1 *
;***************************************************************
_Lsp_select_1:
PSHM AR1
PSHM AR6
PSHM AR7
FRAME #-18
STLM A,AR3 ; (ar3) = rbuf
STM #4,BRC
MVMM SP,AR1
MAR *+AR1(#2) ; (ar1) = buf = sp+2
LD *SP(23),B ; (b) = sp(23) = wegt
MVDK *SP(22),*(AR2) ; (ar2) = lspcb1
MVDK *SP(25),*(AR6) ; (ar6) = index
MVDK *SP(24),*(AR7) ; (ar7) = lspcb2
STL B,*SP(12) ; sp(12) = wegt
SSBX SXM ; added by d.l.b
SSBX OVM
RPTB L6-1
L5:
;----------------------------------------------------------------------
; 185 | buf[j] = sub(rbuf[j], lspcb1[j]);
;----------------------------------------------------------------------
LD *AR3+,16,A
SUB *AR2+,16,A,A
STH A,*AR1+
L6:
;----------------------------------------------------------------------
; 188 | *index = 0;
;----------------------------------------------------------------------
LD #0,A
ST #0,*AR6 ; (ar6) = index
STL A,*SP(13)
;----------------------------------------------------------------------
; 189 | L_dmin = MAX_32;
;----------------------------------------------------------------------
;RSBX OVM
;NOP
LD #32767,16,A
OR #65535,A,A
DST A,*SP(14) ; sp(14) = L_dmin
STM #0,AR1
SSBX FRCT ; line-205
;SSBX OVM ; line-199
ORM #2,*(PMST) ; line-216
L7:
LD *SP(13),A
ADD *(AR7),A ; (a) point to lspcb2[][5] (ar7) = lspcb2
MVMM SP,AR3
STLM A,AR4 ; (ar4) = lspcb2[][5]
MAR *+AR3(#2) ; (ar3) = buf
MVDK *SP(12),*(AR2) ; (ar2) = wegt
;----------------------------------------------------------------------
; 191 | L_dist = 0;
; 192 | for ( j = 0 ; j < NC ; j++ ) {
; 193 | tmp = sub(buf[j], lspcb2[k1][j]);
; 194 | tmp2 = mult( wegt[j], tmp );
;----------------------------------------------------------------------
STM #4,BRC
LD #0,A
DST A,*SP(16) ; sp(16) is a temporary L_dist
RPTB L9-1
L8:
;----------------------------------------------------------------------
; 195 | L_dist = L_mac( L_dist, tmp2, tmp );
;----------------------------------------------------------------------
LD *AR3+,16,A ; (a) = buf[j]
SUB *AR4+,16,A,A ; (ar4) = lspcb2
;SFTA A,-16,A ; (a) = tmp = sub(buf[j], lspcb2[k1][j])
;STLM A,AR5 ; (ar5) = tmp
;LD *(AR5),16,A
STH A,*(AR5)
MPYA *AR2+ ; (b) = tmp2 = mult( wegt[j], tmp )
STH B,*(T) ; (T) = tmp2
DLD *SP(16),A ; (a) = L_dist
MAC *(AR5), A ; (a) = L_dist = L_mac( L_dist, tmp2, tmp )
DST A,*SP(16) ; sp(16) = L_dist
L9:
;----------------------------------------------------------------------
; 198 | L_temp =L_sub(L_dist,L_dmin);
; 199 | 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 L10,AGEQ
;----------------------------------------------------------------------
; 200 | L_dmin = L_dist;
;----------------------------------------------------------------------
DLD *SP(16),A
DST A,*SP(14) ; sp(14) = L_dmin
;----------------------------------------------------------------------
; 201 | *index = k1;
;----------------------------------------------------------------------
MVKD *(AR1),*AR6
L10:
;----------------------------------------------------------------------
; 204 | return;
;----------------------------------------------------------------------
LD *SP(13),A
MAR *AR1+
ADD #10,A
STL A,*SP(13)
LD *(AR1),A
SUB #32,A,A
BC L7,ALT
ANDM #-833,*(ST1)
ANDM #-4,*(PMST)
FRAME #18
POPM AR7
POPM AR6
POPM AR1
RET
.sect ".text"
.global _Lsp_select_2
;***************************************************************
;* FUNCTION DEF: _Lsp_select_2 *
;***************************************************************
_Lsp_select_2:
PSHM AR1
PSHM AR6
PSHM AR7
FRAME #-18
RSBX OVM
NOP
ADD #5,A,A
STM #4,BRC
MVMM SP,AR1
STLM A,AR3
LD *SP(23),B
MAR *+AR1(#7)
STL B,*SP(12)
MVDK *SP(25),*(AR6)
LD *SP(22),B
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -