www.pudn.com > g729Decoder.rar > test_ma3.asm


;================================================================ 
;  File Name 
;  ---------- 
;  TEST_MAX3.ASM 
; 
;  Brief Description of the Code: 
;  ------------------------------ 
;  Test around max3 
; 
;  Ref 
;  ------ 
;  PITCH_A.C 
;================================================================ 
;  Str_Lag_max        .struct 
;  ptr_signal         .word   1 
;  lag_max            .word   1 
;  lag_min            .word   1 
;  ptr_cor_max        .word   1 
;  Str_Lag_max_Len    .endstruct 
;---------------------------------------------------------------- 
;  Buffer : Addr_lag_max_buf[2] at even boundary 
;---------------------------------------------------------------- 
;  Output : AR1 = p_max 
;  Modified Registers: AR4, AR5 
;---------------------------------------------------------------- 
		.mmregs 
		.include ../include/const.h 
		.include ../include/struct.h 
		.include ../include/ld8amem.h 
 
        .def     test_around_lag_max_3 
 
param_lag_max   .tag     Str_Lag_max 
 
		.asg     "Addr_lag_max_buf", max 
        .asg     "Addr_lag_max_buf+2", inv_energy  
		.asg     "AR1", p_max 
 
		.asg     "AR4", pSig 
		.asg     "AR5", pSig1 
 
        .asg     "Addr_lag_max_buf",         max 
        .asg     "ptr_wsp",                  signal 
        .asg     "Addr_pitch_ol_buf",        scal_sig 
        .asg     "scal_sig+PIT_MAX+L_FRAME", max3 
        .asg     "max3+1",                   max2 
        .asg     "max2+1",                   max1 
        .asg     "max1+1",                   p_max3 
        .asg     "p_max3+1",                 p_max2 
        .asg     "p_max2+1",                 p_max1 
 
 
		.asg     "AR4", pTemp 
		.asg     "AR5", pMax 
;---------------------- 
;Test around lag max3 
;---------------------- 
 
test_around_lag_max_3: 
 
        LD      *(max), 16, B 
        ADD     *(max+1), 1, B 
        MVDM    p_max, AR0             ; i = t3 
        STM     #scal_sig+PIT_MAX, pSig 
        MAR     *AR0+                  ; AR0 = t3+1 
        MVMM    pSig, pSig1 
        LD      #L_FRAME, 0, A          
        MAR     *pSig1-0                ; p1 = &scal_sig[-(i+1)] 
 
        ROR     A 
        SUB     #1, A 
        STLM    A, AR6 
        LD      #0, 0, A 
 
C1:             MAC     *pSig, *pSig1, A 
                MAR     *+pSig(2)        ; p += 2 
                MAR     *+pSig1(2)       ; p1 += 2 
                BANZ    C1, *AR6-          
 
        SAT     A 
        MAX     B 
        STM     #scal_sig+PIT_MAX, pSig ; pSig -> scal_sig[0] 
        BC      P1, C 
        MVMM    AR0, p_max     ; AR1(p_max) = i+1 
 
 
P1: 
        MAR     *+AR0(-2)                ; AR0 = t3-1 
        MVMM    pSig, pSig1 
        LD      #L_FRAME, 0, A 
        MAR     *pSig1-0                 ; p1 = &scal_sig[-i+1] 
        ROR     A 
        SUB     #1, A 
        STLM    A, AR6 
        LD      #0, 0, A 
 
C2:             MAC     *pSig, *pSig1, A 
                MAR     *+pSig(2)         ; p += 2 
                MAR     *+pSig1(2)        ; p1 += 2 
                BANZ    C2, *AR6-          
 
 
        SAT     A 
        MAX     B 
        NOP 
        BC      P2, C 
 
        MVMM    AR0, p_max     ; AR1(p_max) = i-1 
 
P2: 
 
        LD      #0, DP 
        ST      #max, pTemp 
        STL     B, -16, *pTemp 
        LD      *pTemp+, 15, A 
        LD      B, -1, B 
        SUB     A, B 
        STL     B, *pTemp 
 
 
        RET