📄 lspgetq_asm.asm
字号:
;;ORM #2,*(PMST)
;;SSBX OVM
;;ORM #2,*(PMST)
NOP
MAC *AR3, *AR2, A, A ; |136|
MAR *+AR2(#10)
MAR *+AR3(#10)
; loop ends ; |136|
L13:
;** ----------------------- U$19 -= 39;
;** ----------------------- U$17 -= 39;
;** 138 ----------------------- *U$30++ = L_acc>>16;
;** 139 ----------------------- if ( (--L$1) != (-1) ) goto g2;
;** ----------------------- return;
MAR *+AR3(#-39)
MAR *+AR2(#-39)
.line 17
;----------------------------------------------------------------------
; 138 | lsp[j] = extract_h(L_acc);
;----------------------------------------------------------------------
SFTL A,#-16,A ; |138|
STL A,*AR1+ ; |138|
.line 18
;----------------------------------------------------------------------
; 140 | return;
;----------------------------------------------------------------------
;;RSBX OVM
;;NOP
NOP
MAR *AR4-
BANZ L11,*AR4(1) ; |139|
; branch occurs ; |139|
.line 20
ANDM #-833,*(ST1)
ANDM #-4,*(PMST)
POPM AR1
RET
; return occurs
;; .endfunc 141,000000400h,1
.sect ".text"
.global _Lsp_expand_1_2
;----------------------------------------------------------------------
; 93 | void Lsp_expand_1_2(
; 94 | Word16 buf[], /* (i/o) Q13 : LSP vectors */
; 95 | Word16 gap /* (i) Q13 : gap */
; 96 | )
;----------------------------------------------------------------------
;***************************************************************
;* FUNCTION DEF: _Lsp_expand_1_2 *
;***************************************************************
;***************************************************************
;* *
;* Using -g (debug) with optimization (-o3) may disable key op *
;* *
;***************************************************************
_Lsp_expand_1_2:
.line 5
;* A assigned to _buf
.sym _buf,0, 19, 17, 16
.sym _gap,6, 3, 9, 16
;* AR1 assigned to U$4
.sym U$4,10, 19, 4, 16
;* AR6 assigned to L$1
.sym L$1,15, 4, 4, 16
;* A assigned to _tmp
.sym _tmp,0, 3, 4, 16
;* AR7 assigned to _gap
.sym _gap,16, 3, 4, 16
;* A assigned to _buf
.sym _buf,0, 19, 4, 16
;** ----------------------- #pragma MUST_ITERATE(9, 9, 9)
;** ----------------------- #pragma LOOP_FLAGS(5120u)
;** ----------------------- U$4 = buf;
;** ----------------------- L$1 = 9;
PSHM AR1
PSHM AR6
PSHM AR7
FRAME #-2
;----------------------------------------------------------------------
; 98 | Word16 j, tmp;
; 99 | Word16 diff; /* Q13 */
; 101 | for ( j = 1 ; j < M ; j++ ) {
; 102 | diff = sub( buf[j-1], buf[j] );
;----------------------------------------------------------------------
STLM A,AR1
NOP
STM #9,AR6
MVDK *SP(6),*(AR7)
L14:
;** -----------------------g2:
;** 103 ----------------------- if ( (tmp = crshft(_sadd(_ssub(*U$4, U$4[1]), gap), 1)) <= 0 ) goto g4;
.line 11
;----------------------------------------------------------------------
; 103 | tmp = shr( add( diff, gap), 1 );
; 105 | if ( tmp > 0 ) {
;----------------------------------------------------------------------
RSBX OVM
SSBX SXM
;;ST #1,*SP(0) ; |103|
RSBX FRCT
LD *AR1,16,A ; |103|
SSBX OVM
SUB *AR1(1),16,A,A ; |103|
ADD *(AR7),16,A,A ; |103|
;;RSBX OVM
NOP
;;CALLD #_crshft ; |103|
SFTA A,-1;;WLY
NOP
SFTA A,-16,A ; |103|
; call occurs [#_crshft] ; |103|
;;SSBX SXM
LD *(AL),A ; |103|
BC L15,ALEQ ; |103|
; branch occurs ; |103|
;** 106 ----------------------- *U$4 = _ssub(*U$4, tmp);
;** 107 ----------------------- U$4[1] = _sadd(U$4[1], tmp);
.line 14
;----------------------------------------------------------------------
; 106 | buf[j-1] = sub( buf[j-1], tmp );
;----------------------------------------------------------------------
;;RSBX OVM
NOP
LD *AR1,16,B ; |106|
;;SSBX OVM
SUB *(AL),16,B,B ; |106|
STH B,*AR1 ; |106|
.line 15
;----------------------------------------------------------------------
; 107 | buf[j] = add( buf[j], tmp );
;----------------------------------------------------------------------
;;RSBX OVM
LD *AR1(1),16,B ; |107|
;;SSBX OVM
ADD *(AL),16,B,A ; |107|
STH A,*AR1(1) ; |107|
L15:
;** -----------------------g4:
;** 109 ----------------------- ++U$4;
;** 109 ----------------------- if ( --L$1 ) goto g2;
;** ----------------------- return;
.line 17
;----------------------------------------------------------------------
; 110 | return;
;----------------------------------------------------------------------
BANZD L14,*+AR6(-1) ; |109|
NOP
MAR *AR1+
; branch occurs ; |109|
.line 19
ANDM #-833,*(ST1)
ANDM #-4,*(PMST)
FRAME #2
POPM AR7
POPM AR6
POPM AR1
RET
; return occurs
;; .endfunc 111,000018400h,5
.sect ".text"
.global _Lsp_get_quant
;----------------------------------------------------------------------
; 16 | void Lsp_get_quant(
; 17 | Word16 lspcb1[][M], /* (i) Q13 : first stage LSP codebook */
; 18 | Word16 lspcb2[][M], /* (i) Q13 : Second stage LSP codebook */
; 19 | Word16 code0, /* (i) : selected code of first stage */
; 20 | Word16 code1, /* (i) : selected code of second stage */
; 21 | Word16 code2, /* (i) : selected code of second stage */
; 22 | Word16 fg[][M], /* (i) Q15 : MA prediction coef. */
; 23 | Word16 freq_prev[][M], /* (i) Q13 : previous LSP vector */
; 24 | Word16 lspq[], /* (o) Q13 : quantized LSP parameters */
; 25 | Word16 fg_sum[] /* (i) Q15 : present MA prediction coef. */
; 26 | )
;----------------------------------------------------------------------
;***************************************************************
;* FUNCTION DEF: _Lsp_get_quant *
;***************************************************************
;***************************************************************
;* *
;* Using -g (debug) with optimization (-o3) may disable key op *
;* *
;***************************************************************
_Lsp_get_quant:
.line 12
;* A assigned to _lspcb1
.sym _lspcb1,0, 211, 17, 16,, 10
.sym _lspcb2,20, 211, 9, 16,, 10
.sym _code0,21, 3, 9, 16
.sym _code1,22, 3, 9, 16
.sym _code2,23, 3, 9, 16
.sym _fg,24, 211, 9, 16,, 10
.sym _freq_prev,25, 211, 9, 16,, 10
.sym _lspq,26, 19, 9, 16
.sym _fg_sum,27, 19, 9, 16
;
; BRC assigned to temp var L$1
; BRC assigned to temp var L$2
;
;* BRC assigned to L$1
.sym L$1,25, 4, 4, 16
;* BRC assigned to L$2
.sym L$2,25, 4, 4, 16
;* A assigned to L$2
.sym L$2,0, 4, 4, 16
;* A assigned to L$1
.sym L$1,0, 4, 4, 16
;* AR2 assigned to U$23
.sym U$23,11, 20, 4, 16
;* AR4 assigned to U$23
.sym U$23,13, 20, 4, 16
;* AR3 assigned to U$18
.sym U$18,12, 20, 4, 16
;* AR5 assigned to U$18
.sym U$18,14, 20, 4, 16
;* AR3 assigned to _lspcb1
.sym _lspcb1,12, 211, 4, 16,, 10
;* BK assigned to _lspcb2
.sym _lspcb2,19, 211, 4, 16,, 10
;* A assigned to _code0
.sym _code0,0, 3, 4, 16
;* AR2 assigned to _code1
.sym _code1,11, 3, 4, 16
;* AR0 assigned to _code2
.sym _code2,9, 3, 4, 16
;* AR7 assigned to _fg
.sym _fg,16, 211, 4, 16,, 10
;* AR1 assigned to _freq_prev
.sym _freq_prev,10, 211, 4, 16,, 10
;* AR6 assigned to _lspq
.sym _lspq,15, 19, 4, 16
.sym _fg_sum,14, 19, 1, 16
;* B assigned to K$16
.sym K$16,6, 4, 4, 16
;* AR4 assigned to U$32
.sym U$32,13, 20, 4, 16
;* AR2 assigned to U$14
.sym U$14,11, 20, 4, 16
.sym _buf,4, 51, 1, 160,, 10
;** ----------------------- #pragma MUST_ITERATE(5, 5, 5)
;** ----------------------- #pragma LOOP_FLAGS(4096u)
;** ----------------------- U$14 = &lspcb2[10*code1];
;** ----------------------- K$16 = code0*10;
;** ----------------------- U$18 = &lspcb1[K$16];
;** ----------------------- U$23 = &buf[0];
;** -----------------------g2:
;** ----------------------- L$1 = 4;
;** -----------------------g8:
PSHM AR1
PSHM AR6
PSHM AR7
FRAME #-16
;----------------------------------------------------------------------
; 28 | Word16 j;
; 29 | Word16 buf[M]; /* Q13 */
; 32 | for ( j = 0 ; j < NC ; j++ )
;----------------------------------------------------------------------
SSBX SXM;;
SSBX OVM;;
STLM A,AR3
STM #10,T
MVDK *SP(20),*(BK)
LD *SP(27),A
MVDK *SP(22),*(AR2)
MVDK *SP(23),*(AR0)
MVDK *SP(25),*(AR1)
LDM BK,B
MVDK *SP(26),*(AR6)
STL A,*SP(14)
MVDK *SP(24),*(AR7)
LD *SP(21),A
ANDM #65533,*(PMST)
RSBX FRCT
;;RSBX OVM
ANDM #65533,*(PMST)
MVMM SP,AR4
MAC *(AR2), B
STM #4,BRC
STLM A,T
STLM B,AR2
MAR *+AR4(#4)
MPY #10,B
ADD *(AR3),B,A
STLM A,AR5
RPTB L17-1
; loop starts
L16:
;** 33 ----------------------- *U$23++ = _sadd(*U$18++, *U$14++);
;** 33 ----------------------- if ( --L$1 != -1 ) goto g8;
.line 18
;----------------------------------------------------------------------
; 33 | buf[j] = add( lspcb1[code0][j], lspcb2[code1][j] );
; 35 | for ( j = NC ; j < M ; j++ )
;----------------------------------------------------------------------
;;RSBX OVM
;;SSBX SXM
;;NOP
LD *AR5+,16,A ; |33|
;;SSBX OVM
NOP
ADD *AR2+,16,A,A ; |33|
STH A,*AR4+ ; |33|
; loop ends ; |33|
L17:
;** ----------------------- #pragma MUST_ITERATE(5, 5, 5)
;** ----------------------- #pragma LOOP_FLAGS(4096u)
;** ----------------------- U$18 = &lspcb1[K$16+5];
;** ----------------------- U$23 = &buf[5];
;** ----------------------- U$32 = &lspcb2[10*code2+5];
;** -----------------------g5:
;** ----------------------- L$2 = 4;
;** -----------------------g7:
;;RSBX OVM
LDM AR3,A
MVMM SP,AR2
STM #10,T
ADD B,A
STM #4,BRC
ADD #5,A,A
STLM A,AR3
MAR *+AR2(#9)
LDM BK,A
MAC *(AR0), A
ADD #5,A,A
STLM A,AR4
RPTB L19-1
; loop starts
L18:
;** 36 ----------------------- *U$23++ = _sadd(*U$18++, *U$32++);
;** 36 ----------------------- if ( --L$2 != -1 ) goto g7;
.line 21
;----------------------------------------------------------------------
; 36 | buf[j] = add( lspcb1[code0][j], lspcb2[code2][j] );
;----------------------------------------------------------------------
;;RSBX OVM
;;SSBX SXM
;;NOP
LD *AR3+,16,A ; |36|
;;SSBX OVM
NOP
ADD *AR4+,16,A,A ; |36|
STH A,*AR2+ ; |36|
; loop ends ; |36|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -