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

📄 dec_gc_pred.asm

📁 基于TMS320F2812的AMR+RS编解码+OFDM调制解调源程序。是stand alone运行版本
💻 ASM
字号:
*****************************************************************************
** Description:     function_name() in file.c                              **
**                                                                         **
** Inputs                                                                  **
**                                                                         **
**	 gc_predState *st,                                         
**   xar7--- Word16 *code
** Outputs:                                                                **       
**   AH--- Word16 *exp_gcode0                                  
**   AL--- Word16 *frac_gcode0
**   xar5--- Word16 *exp_en                               
**   xar6--- Word16 *frac_en                                       
**                                                        
**                                                                         **
**   acc               --- Pitch                                           **
**   Word16 *PrevExc                                                       **
**   Word16 *DataExc                                                       **
**                                                                         **
** Return value :       xar3                                               **
**                                                                         **
** Attribute    :       Cycles: 100       Pm: 50                           **
**                      Modified Registers:  all                           **
**                                                                         **
** Programmer   :       XIE Wei                                     **
***************************************************************************** 
  
  .ref _dec_log2_norm
  .global _dec_gc_pred
  .global _buffer1
  .global dec_past_qua_en
_dec_gc_pred:
    

	MOV T,*XAR7         ;ener_code = L_mac((Word32) 0, code[0], code[0]);
    MPY P,T,*XAR7++
    MOVB ACC,#0
    ADDL ACC,P<<PM
    MOV AR0,#38         ; for (i = 1; i < L_SUBFR; i++)
LOOP:
           				;ener_code = L_mac(ener_code, code[i], code[i]);
    MOV T,*XAR7
    MPY P,T,*XAR7++
    ADDL ACC,P<<PM
    BANZ LOOP,AR0--
    
    CSB ACC               ;exp_code = norm_l (ener_code);
    LSL ACC,T             ;ener_code = L_shl (ener_code, exp_code);
    MOVL XAR0,ACC
    MOV AR1,T
    LCR _dec_log2_norm        ; Log2_norm (ener_code, exp_code, &exp, &frac);
    ZAPA
    MOV T,#-24660          ;L_tmp = Mpy_32_16(exp, frac, -24660);
    MPYA P,T,*XAR2
    MPYA P,T,*XAR3
    MOVH AR0,P
    ADD ACC,AR0<<1            ;L_tmp = L_mac(L_tmp, 16678, 64); 
    MOV T,#16678
    MPY P,T,#64
    ADDL ACC,P<<PM
    LSL ACC,#10                ;L_tmp = L_shl(L_tmp, 10); 
    MOV AR0,#3
    MOVL XAR6,#dec_past_qua_en
    MOVL XAR5,#_buffer1
    MOV *XAR5++,#5571
    MOV *XAR5++,#4751
    MOV *XAR5++,#2785
    MOV *XAR5,#1556
    MOVL XAR5,#_buffer1    
LOOP2:
    MOV T,*XAR5++              ;  for (i = 0; i < 4; i++)
    MPY P,T,*XAR6++            ;  L_tmp = L_mac(L_tmp, pred[i], st->past_qua_en[i]);
    ADDL ACC,P<<PM
    BANZ LOOP2,AR0--            
    MOV T,AH                    ; gcode0 = extract_h(L_tmp);
    MPY P,T,#0x00001543         ; L_tmp = L_mult(gcode0, 5443);
    MOVB ACC,#0
    ADDL ACC,P<<PM
    nop
    nop
    nop
    nop
    MOV T,#8                    ;L_tmp = L_shr(L_tmp, 8);           
    ASRL ACC,T
    LSR AL,1                   ;L_Extract(L_tmp, exp_gcode0, frac_gcode0); 
    LRETR                   
                        
                         
  

⌨️ 快捷键说明

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