📄 lpcfunc_asm.asm
字号:
RSBX FRCT
LDM SP,A
ADD #6,A
STL A,*SP(1)
MVDK *SP(12),*(AR1)
DLD *AR1(-2),A ; |90|
CALL #_L_Extract ; |90|
;;SSBX SXM;;WLY
;;SSBX OVM;;WLY
LD *SP(6),A
;;RSBX FRCT
RSBX OVM
NOP
STL A,*SP(0)
MVDK *SP(2),*(AR1)
LD *AR1,A
STL A,*SP(1)
LD *SP(5),A
CALL #_Mpy_32_16 ; |91|
; call occurs [#_Mpy_32_16] ; |91|
DST A,*SP(8) ; |91|
;RSBX OVM
;RSBX FRCT
;ST #1,*SP(0) ; |92|
;DLD *SP(8),A ; |92|
;CALL #_L_shl ; |92|
SSBX SXM;;WLY
SSBX OVM;;WLY
NOP
DLD *SP(8),A ; |92|
SFTA A,1,A;;wly
NOP
; call occurs [#_L_shl] ; |92|
DST A,*SP(8) ; |92|
SSBX OVM
SSBX SXM
MVDK *SP(12),*(AR1)
DLD *AR1,A
DADD *AR1(-4),A,A ; |93|
DST A,*AR1 ; |93|
;;RSBX OVM
NOP
;;DLD *SP(8),A ; |94|
;;DST A,*SP(0) ; |94|
DLD *SP(8),B;;WLY
MVDK *SP(12),*(AR1)
;;RSBX FRCT
DLD *AR1,A ; |94|
;;CALL #_L_sub ; |94|
SUB B,A;;WLY
NOP
; call occurs [#_L_sub] ; |94|
;;MVDK *SP(12),*(AR1)
DST A,*AR1 ; |94|
;;RSBX OVM
;;SSBX SXM
ADDM #1,*SP(4) ; |95|
ADDM #-2,*SP(12) ; |95|
LD *SP(3),A ; |95|
SUB *SP(4),A ; |95|
BC L106,AGT ; |95|
; branch occurs ; |95|
L107:
MVDK *SP(12),*(AR1)
DLD *AR1,A ; |96|
LD #512,B
MVDK *SP(2),*(AR1)
LD *AR1,T
;ORM #2,*(PMST)
SSBX FRCT
;;SSBX OVM
;ORM #2,*(PMST)
MVDK *SP(12),*(AR1)
MAS *(BL), A ; |96|
DST A,*AR1 ; |96|
;;RSBX OVM
LD *SP(3),B
LD *SP(12),A
ADD B,#1,A ; |97|
STL A,*SP(12)
ADDM #2,*SP(2) ; |98|
LD #5,A
ADDM #1,*SP(3) ; |99|
SUB *SP(3),A ; |99|
BC L105,AGEQ ; |99|
; branch occurs ; |99|
L108:
ANDM #-833,*(ST1)
ANDM #-4,*(PMST)
FRAME #10
POPM AR1
RET
.sect ".text"
.global _Lsp_Az
;----------------------------------------------------------------------
; 27 | void Lsp_Az(
; 28 | Word16 lsp[], /* (i) Q15 : line spectral frequencies */
; 29 | Word16 a[] /* (o) Q12 : predictor coefficients (order = 10) */
; 30 | )
;----------------------------------------------------------------------
_Lsp_Az:
PSHM AR1
PSHM AR6
PSHM AR7
FRAME #-28
;----------------------------------------------------------------------
; 32 | Word16 i, j;
; 33 | Word32 f1[6], f2[6];
; 34 | Word32 t0;
;----------------------------------------------------------------------
STLM A,AR1
LD *SP(32),A
STL A,*SP(26)
;----------------------------------------------------------------------
; 36 | Get_lsp_pol(&lsp[0],f1);
;----------------------------------------------------------------------
;;RSBX OVM
SSBX OVM;;WLY
SSBX SXM;;WLY
RSBX FRCT
LDM SP,A
ADD #2,A
STL A,*SP(0)
CALLD #_Get_lsp_pol ; |36| ;;wly to recover!
;;CALLD #_Get_lsp_pol_asm ; |36|
NOP
LDM AR1,A
; call occurs [#_Get_lsp_pol] ; |36|
;----------------------------------------------------------------------
; 37 | Get_lsp_pol(&lsp[1],f2);
; 39 | for (i = 5; i > 0; i--)
;----------------------------------------------------------------------
;;RSBX OVM
SSBX OVM;;WLY
SSBX SXM;;WLY
LDM SP,A
ADD #14,A
RSBX FRCT
STL A,*SP(0)
LDM AR1,A
CALLD #_Get_lsp_pol ; |37| ;;wly to recover!
;;CALLD #_Get_lsp_pol_asm ; |36|
ADD #1,A,A ; |37|
; call occurs [#_Get_lsp_pol] ; |37|
STM #5,AR7
MVMM SP,AR6
MVMM SP,AR1
MAR *+AR6(#12)
MAR *+AR1(#24)
SSBX SXM
SSBX OVM
L13:
;----------------------------------------------------------------------
; 41 | f1[i] = L_add(f1[i], f1[i-1]); /* f1[i] += f1[i-1]; */
;----------------------------------------------------------------------
;;SSBX SXM
;;SSBX OVM
DLD *AR6,A
DADD *AR6(-2),A,A ; |41|
DST A,*AR6- ; |41|
;----------------------------------------------------------------------
; 42 | f2[i] = L_sub(f2[i], f2[i-1]); /* f2[i] -= f2[i-1]; */
;----------------------------------------------------------------------
;;RSBX FRCT
;;RSBX OVM
;;DLD *AR1(-2),A ; |42|
DLD *AR1(-2),B;;WLY
;;DST A,*SP(0) ; |42|
DLD *AR1,A ; |42|
;;CALL #_L_sub ; |42|
SUB B,A;;WLY
; call occurs [#_L_sub] ; |42|
DST A,*AR1- ; |42|
BANZ L13,*+AR7(-1) ; |43|
;----------------------------------------------------------------------
; 45 | a[0] = 4096;
; 46 | for (i = 1, j = 10; i <= 5; i++, j--)
; 48 | t0 = L_add(f1[i], f2[i]); /* f1[i] + f2[i]
; | */
;----------------------------------------------------------------------
MVDK *SP(26),*(AR1)
;;RSBX OVM
ST #4096,*AR1 ; |45|
MVMM SP,AR6
LD *SP(26),A
STM #5,AR7
MVMM SP,AR1
ADD #1,A,A
MAR *+AR6(#4)
STL A,*SP(27)
MAR *+AR1(#16)
LD *SP(26),A
ADD #10,A,A
STL A,*SP(26)
L14:
;----------------------------------------------------------------------
; 49 | a[i] = extract_l( L_shr_r(t0, 13) ); /* from Q24 to Q12 and * 0.
; | 5 */
;----------------------------------------------------------------------
;;SSBX SXM
ST #13,*SP(0) ; |49|
SSBX OVM
;;RSBX FRCT
DLD *AR6,A
DADD *AR1,A,A ; |49|
;;RSBX OVM
;;NOP
CALL #_L_crshft_r ; |49|
;;SFTA A,-13,A;;WLY
; call occurs [#_L_crshft_r] ; |49|
MVDK *SP(27),*(AR2)
STL A,*AR2+
MVKD *(AR2),*SP(27)
;----------------------------------------------------------------------
; 51 | t0 = L_sub(f1[i], f2[i]); /* f1[i] - f2[i]
; | */
;----------------------------------------------------------------------
;;RSBX OVM
;;RSBX FRCT
;;DLD *AR1+,A ; |51|
;;SSBX OVM;;WLY
DLD *AR1+,B;;WLY
;;DST A,*SP(0) ; |51|
DLD *AR6+,A ; |51|
;;CALL #_L_sub ; |51|
SSBX OVM;;WLY
SUB B,A
; call occurs [#_L_sub] ; |51|
;----------------------------------------------------------------------
; 52 | a[j] = extract_l( L_shr_r(t0, 13) ); /* from Q24 to Q12 and * 0.
; | 5 */
;----------------------------------------------------------------------
;;RSBX FRCT
;;RSBX OVM
ST #13,*SP(0) ; |52|
CALL #_L_crshft_r ; |52|
;;SFTA A,-13,A;;
; call occurs [#_L_crshft_r] ; |52|
MVDK *SP(26),*(AR2)
STL A,*AR2-
MVKD *(AR2),*SP(26)
;----------------------------------------------------------------------
; 56 | return;
;----------------------------------------------------------------------
BANZ L14,*+AR7(-1) ; |54|
ANDM #-833,*(ST1)
ANDM #-4,*(PMST)
FRAME #28
POPM AR7
POPM AR6
POPM AR1
RET
.sect ".text"
.global _Int_qlpc
;----------------------------------------------------------------------
; 290 | void Int_qlpc(
; 291 | Word16 lsp_old[], /* input : LSP vector of past frame */
; 292 | Word16 lsp_new[], /* input : LSP vector of present frame */
; 293 | Word16 Az[] /* output: interpolated Az() for the 2 subframes */
; 294 | )
;----------------------------------------------------------------------
_Int_qlpc:
PSHM AR1
PSHM AR6
PSHM AR7
FRAME #-16
;----------------------------------------------------------------------
; 296 | Word16 i;
; 297 | Word16 lsp[M];
; 301 | for (i = 0; i < M; i++) {
;----------------------------------------------------------------------
MVMM SP,AR6
STM #10,AR7
LD *SP(21),B
MAR *+AR6(#2)
STL B,*SP(12)
STL A,*SP(14)
LD *SP(20),B
STLM B,AR1
STL B,*SP(13)
SSBX SXM
SSBX OVM
L20:
;----------------------------------------------------------------------
; 302 | lsp[i] = add(shr(lsp_new[i], 1), shr(lsp_old[i], 1));
;----------------------------------------------------------------------
;ST #1,*SP(0) ; |302|
;RSBX FRCT
MVDK *SP(14),*(AR2)
;RSBX OVM
LD *AR2+,A
MVKD *(AR2),*SP(14)
;CALL #_crshft ; |302|
SFTA A,-1
STL A,*SP(15)
;RSBX FRCT
;RSBX OVM
;ST #1,*SP(0) ; |302|
LD *AR1+,A
;CALL #_crshft
SFTA A,-1
;RSBX OVM
;SSBX SXM
LD *(AL),16,A
LD *SP(15),B
;SSBX OVM
ADD *(BL),16,A,A
STH A,*AR6+
BANZ L20,*+AR7(-1)
;----------------------------------------------------------------------
; 305 | Lsp_Az(lsp, Az); /* Subframe 1 */
;----------------------------------------------------------------------
LD *SP(12),A
RSBX FRCT
RSBX OVM
STL A,*SP(0)
LDM SP,A
CALLD #_Lsp_Az ; |305|
ADD #2,A
;----------------------------------------------------------------------
; 307 | Lsp_Az(lsp_new, &Az[MP1]); /* Subframe 2 */
;----------------------------------------------------------------------
RSBX OVM
LD *SP(12),A
RSBX FRCT
ADD #11,A,A ; |307|
STL A,*SP(0)
LD *SP(13),A
CALL #_Lsp_Az ; |307|
;----------------------------------------------------------------------
; 309 | return;
;----------------------------------------------------------------------
ANDM #-833,*(ST1)
ANDM #-4,*(PMST)
FRAME #16
POPM AR7
POPM AR6
POPM AR1
RET
;***************************************************************
;* UNDEFINED EXTERNAL REFERENCES *
;***************************************************************
.global _L_Extract
.global _Mpy_32_16
.global _L_crshft_r
.global _table
.global _slope
.global _table2
.global _slope_cos
.global _slope_acos
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -