lpc_asm.asm
来自「g.729汇编手工优化」· 汇编 代码 · 共 1,973 行 · 第 1/5 页
ASM
1,973 行
LDM SP,B
ADD #9,B
RSBX FRCT
STL B,*SP(1)
CALL #_L_Extract ; |310|
; call occurs [#_L_Extract] ; |310|
.line 111
LD *SP(62),A
RSBX OVM
SSBX SXM
LD *(AL),16,A ; |311|
SSBX OVM
ADD *(AR1),16,A,A ; |311|
SFTA A,-16,A ; |311|
MVMM SP,AR5
MVMM SP,AR2
STL A,*SP(62)
MVMM SP,AR3
MVMM SP,AR4
LD *SP(66),A
MAR *+AR5(#33)
MAR *+AR2(#44)
RSBX OVM
MAR *+AR3(#11)
SUB #1,A,A
STLM A,BRC
MAR *+AR4(#22)
RPTB L17-1
; loop starts
L16:
.line 117
MVDD *AR5+,*AR3+ ; |317|
.line 118
MVDD *AR2+,*AR4+ ; |318|
.line 119
; loop ends ; |319|
L17:
.line 120
LD *SP(63),A
ADD #1,A
STL A,*SP(63)
LD *SP(64),A
ADD #1,A
STL A,*SP(64)
LD *SP(65),A
ADD #1,A
STL A,*SP(65)
LD *SP(66),A
ADD #1,A
STL A,*SP(66)
LD *(AL),A ; |320|
SUB #10,A,A ; |320|
BC L12,ALEQ ; |320|
; branch occurs ; |320|
.line 124
MVDK *SP(56),*(AR1)
ST #4096,*AR1 ; |324|
MVMM SP,AR6
LD *SP(56),A
STM #_old_A+1,AR7
ADD #1,A,A
MVMM SP,AR1
MAR *+AR6(#22)
STL A,*SP(67)
MAR *+AR1(#11)
LD #10,A
STL A,*SP(68)
L18:
.line 127
LD *AR6+,A
RSBX FRCT
RSBX OVM
STL A,*SP(0)
LD *AR1+,A
CALL #_L_Comp ; |327|
; call occurs [#_L_Comp] ; |327|
.line 128
RSBX FRCT
RSBX OVM
ST #1,*SP(0) ; |328|
CALL #_L_shl ; |328|
; call occurs [#_L_shl] ; |328|
RSBX OVM
SSBX SXM
SFTA A,8 ; |328|
SFTA A,-8 ; |328|
SSBX OVM
ADD #1,#15,A,A ; |328|
MVDK *SP(67),*(AR2)
SFTA A,-16,A ; |328|
STL A,*AR2+
MVKD *(AR2),*SP(67)
STL A,*AR7+
.line 129
MVDK *SP(68),*(AR2)
BANZD L18,*+AR2(-1) ; |329|
MVKD *(AR2),*SP(68)
; branch occurs ; |329|
.line 130
MVDK *SP(55),*(AR3)
STM #_old_rc,AR2
MVDD *AR3,*AR2 ; |330|
.line 131
MVMM AR3,AR1
LD *AR1(1),A
STL A,*AR2(1)
.line 133
B L22 ; |333|
; branch occurs ; |333|
L19:
MVDK *SP(56),*(AR2)
STM #_old_A,AR3
RPT #10
; loop starts
L20:
.line 75
MVDD *AR3+,*AR2+ ; |275|
.line 76
; loop ends ; |276|
L21:
.line 77
STM #_old_rc,AR2
MVDK *SP(55),*(AR3)
MVDD *AR2,*AR3 ; |277|
.line 78
MVMM AR3,AR1
LD *AR2(1),A
STL A,*AR1(1)
L22:
.line 134
ANDM #-833,*(ST1)
ANDM #-4,*(PMST)
FRAME #74
POPM AR7
POPM AR6
POPM AR1
RET
; return occurs
.endfunc 334,000018400h,77
.sect ".text"
.global _Lag_window
.sym _Lag_window,_Lag_window, 32, 2, 0
.func 108
;***************************************************************
;* FUNCTION DEF: _Lag_window *
;***************************************************************
;***************************************************************
;* *
;* Using -g (debug) with optimization (-o3) may disable key op *
;* *
;***************************************************************
_Lag_window:
.line 6
;* A assigned to _m
.sym _m,0, 3, 17, 16
.sym _r_h,10, 19, 9, 16
.sym _r_l,11, 19, 9, 16
;* AR7 assigned to U$17
;* AR6 assigned to U$19
;* AR1 assigned to U$21
;* A assigned to _m
.sym _m,0, 3, 4, 16
;* AR1 assigned to _r_h
.sym _r_h,10, 19, 4, 16
;* AR6 assigned to _r_l
.sym _r_l,15, 19, 4, 16
;* A assigned to _x
.sym _x,0, 5, 4, 32
PSHM AR1
PSHM AR6
PSHM AR7
FRAME #-6
NOP
MVDK *SP(10),*(AR1)
MVDK *SP(11),*(AR6)
.line 10
SSBX SXM
LD *(AL),A ; |117|
BC L24,ALEQ ; |117|
; branch occurs ; |117|
STL A,*SP(4)
LD #_lag_l,A
STM #_lag_h,AR7
STL A,*SP(5)
L23:
.line 12
LD *+AR6(1),A
STL A,*SP(0)
LD *AR7+,A
STL A,*SP(1)
MVDK *SP(5),*(AR2)
LD *AR2+,A
MVKD *(AR2),*SP(5)
STL A,*SP(2)
LD *+AR1(1),A
CALL #_Mpy_32 ; |119|
; call occurs [#_Mpy_32] ; |119|
.line 13
MVKD *(AR1),*SP(0)
MVKD *(AR6),*SP(1)
CALL #_L_Extract ; |120|
; call occurs [#_L_Extract] ; |120|
.line 14
MVDK *SP(4),*(AR2)
BANZD L23,*+AR2(-1) ; |121|
MVKD *(AR2),*SP(4)
; branch occurs ; |121|
L24:
.line 16
FRAME #6
POPM AR7
POPM AR6
POPM AR1
RET
; return occurs
.endfunc 123,000018400h,9
.sect ".text"
.sym _Chebps_11,_Chebps_11, 35, 3, 0
.func 700
;***************************************************************
;* FUNCTION DEF: _Chebps_11 *
;***************************************************************
;***************************************************************
;* *
;* Using -g (debug) with optimization (-o3) may disable key op *
;* *
;***************************************************************
_Chebps_11:
PSHM AR1
PSHM AR6
PSHM AR7
FRAME #-12
NOP
STL A,*SP(6) ;sp(6) = x
LD *SP(16),A
STL A,*SP(7) ;sp(7) = f
MVDK *SP(17),*(AR1) ;ar1 = n
;----------------------------------------------------------------------
; 693 | L_Extract(t0, &b1_h, &b1_l); /* b1 = 2*x + f[1] */
;----------------------------------------------------------------------
;RSBX OVM
SSBX FRCT
SSBX SXM
LD #4096,B
LDM SP,A
ADD #3,A
STL A,*SP(0) ;sp(3) = &b1_h
LDM SP,A
ADD #2,A
STL A,*SP(1) ;sp(2) = &b1_l
SSBX OVM
LD *SP(6),A
MPY *(AL),#512,A ;a= t0 = L_mult(x, 512)
;RSBX OVM
MVDK *SP(7),*(AR2) ;ar2 = f
;SFTA A,8
LD *AR2(1),T ;T = f[1]
;SFTA A,-8
;ORM #2,*(PMST)
;SSBX OVM
ORM #2,*(PMST)
MAC *(BL), A ;a = t0 = L_mac(t0, f[1], 4096)
;RSBX FRCT
;RSBX OVM
;NOP
;CALL #_L_Extract
;------------------ L_Extract inlien ----------------------------
;SSBX SXM ; ****
;RSBX OVM
;SSBX FRCT
;SFTA A,8
;SFTA A,-8
;SSBX OVM
MVDK *SP(1),*(AR4)
MVDK *SP(0),*(AR2)
LD A,B
SFTL B,#-16,B
STLM B,AR3
MVKD *(AR3),*AR2
SFTA A,-1
MVMD AR3,T
LD #16384,B
ORM #2,*(PMST)
MAS *(BL), A
STL A,*AR4
;------------------ L_Extract End ----------------------------
STM #256,AR6
LD #0,A
STL A,*SP(8) ;sp(8) = b2_l = 0
;RSBX OVM
;SSBX SXM
LD *(AR1),A ;a = n
SUB #2,A,A
BC L25,AGT ;if( n-2 >0)
BD L27
LD #2,A
STL A,*SP(9)
L25:
LD *SP(7),A
ADD #2,A,A
STLM A,AR7 ;ar7 = &f[2]
MVKD *(AR1),*SP(9)
LD *SP(9),A
SUB #2,A,A
STLM A,AR1 ;ar1 = loop counter,sub 2 each time
L26:
;LD *SP(2),A
;RSBX FRCT
;STL A,*SP(0)
;RSBX OVM
;LD *SP(6),A
;STL A,*SP(1)
;LD *SP(3),A
;CALL #_Mpy_32_16
;----------------- Mpy_32_16 inline ----------------------------------
LD *SP(2),T ; T = lo
LD *SP(6),B ; B = n
;STLM A,AR4 ; ar1 = hi
MVDK *SP(3),*(AR4)
;SSBX SXM
;SSBX FRCT
;SSBX OVM
LD *(BL),16,A ; ah = n
NOP
MPYA A ; a = L_mult(lo, n)
STLM B,T ; T = n
STH A,*(AR2) ; (ar2) = L_mult(lo, n)
MPY *(AR4),A ; a = L_mult(hi, n)
MVMD AR2,T
MAC #1, A
;ANDM #-833,*(ST1)
;----------------- Mpy_32_16 End ----------------------------------
;OVM = SXM = FRCT =0 after calling Mpy_32_16
;RSBX FRCT
;RSBX OVM
;ST #1,*SP(0)
;CALL #_L_shl
;SSBX OVM ;d.l.b
SFTA A,1 ;use SFTA instead of L_shl
;RSBX OVM
;NOP
;SFTA A,8
;SSBX SXM
MVMD AR6,T ;T = ar6 = b2_h
LD #-32768,B
;SFTA A,-8 ;a = t0
;ORM #2,*(PMST)
;SSBX FRCT
;SSBX OVM
ORM #2,*(PMST)
MAC *(BL), A ;a = L_mac(t0,b2_h,(Word16)-32768L)
;RSBX OVM
;NOP
;SFTA A,8
;SSBX OVM
;SFTA A,-8
;SXM = OVM = FRCT =1
LD *SP(8),T ;sp(8) = b2_l
LD #1,B
MAS *(BL), A ;a = L_msu(t0, b2_l, 1)
;RSBX OVM
;NOP
;SFTA A,8
;SSBX OVM
LD *AR7+,T
LD #4096,B
;SFTA A,-8
MAC *(BL), A ;a = L_mac(t0, f[i], 4096)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?