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 + -
显示快捷键?