⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pred_lt3.asm

📁 TI C54写的G729代码,视线8kbps高质量语音编码,汇编优化
💻 ASM
字号:
;==========================================================================
;  File Name
;  ----------
;  PRED_LT3.ASM
;
;  Brief Description of the Code:
;  ------------------------------
;  Compute the result of long term prediction with fractional
;  interpolation of resolution 1/3.
;
;  Ref
;  ------
;  PRED_LT3.C
;==========================================================================


        .mmregs

        .include  ..\include\const.h
        .include  ..\include\tab_ld8a.h
        .include  ..\include\ld8amem.h

        .text
        .def      Pred_lt_3

;-----------------------------------------------------------------------
;  Pred_lt_3
;-----------------------------------------------------------------------
;  void Pred_lt_3(
;    Word16   exc[],       /* in/out: excitation buffer */
;    Word16   T0,          /* input : integer pitch lag */
;    Word16   frac,        /* input : fraction of lag   */
;    Word16   L_subfr      /* input : subframe size     */
;  )
;  {
;    Word16   i, j, k;
;    Word16   *x0, *x1, *x2, *c1, *c2;
;    Word32  s;
;
;    x0 = &exc[-T0];
;
;    frac = negate(frac);
;    if (frac < 0)
;    {
;      frac = add(frac, UP_SAMP);
;      x0--;
;    }
;
;    for (j=0; j<L_subfr; j++)
;    {
;      x1 = x0++;
;      x2 = x0;
;      c1 = &inter_3l[frac];
;      c2 = &inter_3l[sub(UP_SAMP,frac)];
;
;      s = 0;
;      for(i=0, k=0; i< L_INTER10; i++, k+=UP_SAMP)
;      {
;        s = L_mac(s, x1[-i], c1[k]);
;        s = L_mac(s, x2[i],  c2[k]);
;      }
;
;      exc[j] = round(s);
;    }
;
;    return;
;  }
;-----------------------------------------------------------------------
;  Constants : Addr_T0 -> T0
;              Addr_T0_frac -> frac
;              L_SUBFR = Lsubfr
;
;  Pointers : ptr_exc_subfrm -> exc
;
;  Buffer : Addr_pred_lt3_buf[32]
;-----------------------------------------------------------------------
;  Modified registers : A, B, AR0 - AR6, BK, BRC , T
;-----------------------------------------------------------------------

        .asg    "AR1", pXn
        .asg    "AR2", pXn1
        .asg    "AR3", pXn2
        .asg    "AR7", pExc

        .asg    "AR2", pC1Ref
        .asg    "AR3", pC2Ref
        .asg    "AR4", pC1
        .asg    "AR5", pC2


        .asg    "Addr_local_buf1", C1
        .asg    "Addr_local_buf1+16", C2


Pred_lt_3:
	PSHM	AR7


        MVDM    Addr_T0, AR0
        MVDM    ptr_exc_subfrm, pXn
        MVDM    ptr_exc_subfrm, pExc
        LD      #Addr_T0_frac, DP
        LD      Addr_T0_frac, B
        NEG     B
        MAR     *pXn-0
        LD      #UP_SAMP, A
        XC      2, BLT
                ADD     A, B
                MAR     *pXn-
        STLM    A, AR0
        SUB     B, A
        ADD     #Intpl_3l, B
        ADD     #Intpl_3l, A
        STLM    B, pC1Ref
        STLM    A, pC2Ref

        STM     #C1, pC1
        STM     #C2, pC2
        STM     #L_INTER10 - 1, BRC
        STM     #0, BK

        RPTB    SUM_S - 1
                MVDD    *pC1Ref+0%, *pC1+
                MVDD    *pC2Ref+0%, *pC2+

SUM_S:
        MVMM    pXn, pXn1                ;x1 = x0
        NOP
        MAR     *pXn+                    ;x0++
        MVMM    pXn, pXn2                ;x2 = x0

        STM     #C1, pC1
        STM     #C2, pC2

        STM     #L_INTER10 - 1, BRC


        RPTBD    End_Sum - 1
        LD	#0, A
        NOP

                MAC     *pXn1-, *pC1+, A
                MAC     *pXn2+, *pC2+, A
End_Sum:
        ADD     #1,15,A
        BANZD    SUM_S,*AR6-
        STL     A, -16, *pExc+
EndPredLt3:
	POPM	AR7
        RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -