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

📄 gbk_pres.asm

📁 TI C54写的G729代码,视线8kbps高质量语音编码,汇编优化
💻 ASM
字号:
		.mmregs
        .include ..\include\const.h
        .include ..\include\ld8amem.h
        .include ..\include\tab_ld8a.h
        .include ..\include\qua_gain.h

        .text
        .def     Gbk_presel

        .asg     "gcode0_org", gcode0

sft_y   .set    16-(14+4+1)     ; (Q[thr1]+Q[gcode0]+1)-Q[L_tmp_y]
sft_x   .set    15-(15+4+1)     ; (Q[thr2]+Q[gcode0]+1)-Q[L_tmp_x]

L_coef_To_coef  .set    4

Gbk_presel:
        STM     #coef, AR5

;---------------------------------------------------------------------------
; x = (best_gain[1]-(coef[0][0]*best_gain[0]+coef[1][1])*gcode0) * inv_coef;
;---------------------------------------------------------------------------

        LD      *AR5, T
        DLD     *AR5(L_coef_To_coef+(1*2+1)*2), A
        LD      A, -15, A
        MAC     best_gain0, A
        MPYA    gcode0                  ; B = L_preg
        LD      best_gain1, 7+2, A
        SUB     B, 2, A
        STM     #INV_COEF, T
        MPYA    A
        DST     A, L_tmp_x

;---------------------------------------------------------------------------
; y = (coef[1][0]*(-coef[0][1]+best_gain[0]*coef[0][0])*gcode0
;                                     -coef[0][0]*best_gain[1]) * inv_coef;
;---------------------------------------------------------------------------

        LD      *AR5, T
        DLD     *AR5(L_coef_To_coef+(0*2+1)*2), A
        LD      A, -10, A
        NEG     A
        MAC     best_gain0, A
        MPYA    gcode0
        LD      B, A
        LD      *AR5(1*2-0), T
        MPYA    A
        LD      *AR5, T
        MPY     best_gain1, B
        LD      B, -3, B
        SUB     B, A
        LD      A, 2, A
        STM     #INV_COEF, T
        MPYA    A
        DST     A, L_tmp_y

        LD      gcode0, A
        BCD     Not_Greater_Than_Zero, ALEQ
        STM     #Thr1Q14, AR5

Greater_Than_Zero:
Do1_Cand1:                                      ; pre select codebook #1
                LD      *AR5, T
                MPY     gcode0, B
                DLD     L_tmp_y, A
                SUB     B, sft_y, A
                BC      Break1, ALEQ
                MAR     *AR5+
                LDM     AR5, B
                SUB     #NCODE1-NCAN1+Thr1Q14, B
                BC      Do1_Cand1, BLT

Break1:
        LDM     AR5, A
        SUB     #Thr1Q14, A
        STL     A, cand1

        STM     #Thr2, AR5

Do1_Cand2:                                      ; pre select codebook #2
                LD      *AR5, T
                MPY     gcode0, B
                DLD     L_tmp_x, A
                SUB     B, sft_x, A
                BC      Return1, ALEQ
                MAR     *AR5+
                LDM     AR5, B
                SUB     #NCODE2-NCAN2+Thr2, B
                BC      Do1_Cand2, BLT

Return1:
        LDM     AR5, A
        SUB     #Thr2, A
        RETD
        STL     A, cand2
        NOP

Not_Greater_Than_Zero:
Do2_Cand1:
                LD      *AR5, T
                MPY     gcode0, B
                DLD     L_tmp_y, A
                SUB     B, sft_y, A
                BC      Break2, AGEQ
                MAR     *AR5+
                LDM     AR5, B
                SUB     #NCODE1-NCAN1+Thr1Q14, B
                BC      Do2_Cand1, BNEQ

Break2:
        LDM     AR5, A
        SUB     #Thr1Q14, A
        STL     A, cand1

        STM     #Thr2, AR5

Do2_Cand2:
                LD      *AR5, T
                MPY     gcode0, B
                DLD     L_tmp_x, A
                SUB     B, sft_x, A
                BC      Return2, AGEQ
                MAR     *AR5+
                LDM     AR5, B
                SUB     #NCODE2-NCAN2+Thr2, B
                BC      Do2_Cand2, BNEQ

Return2:
        LDM     AR5, A
        SUB     #Thr2, A
        RETD
        STL     A, cand2
        NOP

⌨️ 快捷键说明

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