?? gc_pred.asm
字號:
*****************************************************************************
** Description: gc_pred() in gc_pred.c **
** **
** Inputs **
** **
** wor16 gc_predState *st, I/O 全局變量
** xar7--- Word16 *code
** Outputs: **
** AH--- Word16 *exp_gcode0
** AL--- Word16 *frac_gcode0
**
** **
** Return value : **
** **
** Attribute : Cycles: 100 Pm: 44 **
** Modified Registers: all **
** **
** Programmer : xiewei **
*****************************************************************************
.ref _log2_norm
.global _gc_pred
.ref _buffer3
.ref past_qua_en
_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
; PUSH XAR6
LCR _log2_norm ; Log2_norm (ener_code, exp_code, &exp, &frac);
; POP XAR6
ZAPA
MOV T,#-24660 ;L_tmp = Mpy_32_16(exp, frac, -24660);
MPYA P,T,AR2
MPYA P,T,AR3
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 XAR5,#_buffer3+400
MOV *XAR5++,#5571
MOV *XAR5++,#4751
MOV *XAR5++,#2785
MOV *XAR5,#1556
MOVL XAR5,#_buffer3+400
MOVL XAR6,#past_qua_en
LOOP2:
MOV T,*XAR5++ ; for (i = 0; i < 4; i++)
;MOVL XAR6,#past_qua_en ;!!!
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
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 + -