📄 initiate.asm
字号:
*****************************************************************************
** Description: _initiate() in .c **
** to initiate viables **
** Inputs : **
** **
** Return value : **
** **
** Attribute : Cycles:1533 Pm: 59 **
** Modified Registers: **
** **
** Programmer : ZHOU Bei **
*****************************************************************************
.global _initiate
.ref old_A
.ref p_window
.ref A_t
;.ref new_speech
.ref old_speech
.ref new_speech_st
.ref speech
.ref lsp_new
.ref Aq_t
.ref lsp_old_q
.ref lsp_old
.ref lsp_init_data
.ref error
.ref old_exc
.ref exc
.ref wsp
.ref zero
.ref old_wsp
.ref ai_zero
.ref mem_err
.ref hvec
.ref h1
;.ref old_lags
.ref mem_w
.ref mem_syn
.ref mem_w0
.ref past_rq
.ref y2_hi
.ref y2_lo
.ref y1_hi
.ref y1_lo
.ref x0
.ref x1
.ref sf0_exp_gcode0
.ref T0_prev_subframe
.ref UnqSt_past_qua_en
.ref UnqSt_past_qua_en_MR122
.ref past_qua_en
.ref past_qua_en_MR122
.ref count
.ref sharp
.ref old_speech
.ref p_window
.ref L_INTERPOL
.ref PIT_MAX
.ref MP1
.ref M
.ref L_FRAME
.ref L_TOTAL
.ref L_WINDOW
.ref L_NEXT
.ref L_SUBFR
.ref NPRED
.ref MIN_ENERGY
.ref MIN_ENERGY_MR122
.ref N_FRAME
.ref SHARPMIN
.ref _copy
_initiate:
;in Pre_Process_reset
;Initializes state memory
MOVL XAR6,#y2_hi
NOP
RPT #5
||MOV *XAR6++,#0
;speech
MOVL XAR6,#old_speech
NOP
;RPT #L_TOTAL-1
RPT #79
||MOV *XAR6++,#0
;in cod_amr_reset
;st->new_speech = st->old_speech + L_TOTAL - L_FRAME;
MOVL XAR6,#old_speech+L_TOTAL
MOVL ACC,XAR6
PUSH ACC
SUB ACC,#L_FRAME
MOVL XAR6,#new_speech_st
MOVL *XAR6,ACC
;st->speech = st->new_speech - L_NEXT
SUB ACC,#L_NEXT
MOVL XAR6,#speech
MOVL *XAR6,ACC
;st->p_window = st->old_speech + L_TOTAL - L_WINDOW;
POP ACC
SUB ACC,#L_WINDOW
MOVL XAR6,#p_window
MOVL *XAR6,ACC
;st->wsp = st->old_wsp + PIT_MAX
MOVL XAR6,#old_wsp+PIT_MAX
MOVL ACC,XAR6
MOVL XAR6,#wsp
MOVL *XAR6,ACC
;st->exc = st->old_exc + PIT_MAX + L_INTERPOL;
MOVL XAR6,#old_exc+PIT_MAX+L_INTERPOL
MOVL ACC,XAR6
MOVL XAR6,#exc
MOVL *XAR6,ACC
;st->zero = st->ai_zero + MP1
MOVL XAR6,#ai_zero+MP1
MOVL ACC,XAR6
MOVL XAR6,#zero
MOVL *XAR6,ACC
;st->error = st->mem_err + M
MOVL XAR6,#mem_err+M
MOVL ACC,XAR6
MOVL XAR6,#error
MOVL *XAR6,ACC
;st->h1 = &st->hvec[L_SUBFR]
MOVL XAR6,#hvec+L_SUBFR
MOVL ACC,XAR6
MOVL XAR6,#h1
MOVL *XAR6,ACC
MOVL XAR6,#p_window
MOVL ACC,*XAR6
MOVL XAR6,ACC
RPT #79
||MOV *XAR6++,#0
;Static vectors to zero
;set_zero(st->old_speech, L_TOTAL);
NOP
MOVL XAR6,#old_speech
RPT #L_TOTAL-1
||MOV *XAR6++,#0
;Set_zero(st->old_exc, PIT_MAX + L_INTERPOL);
NOP
MOVL XAR6,#old_exc
RPT #PIT_MAX + L_INTERPOL-1
||MOV *XAR6++,#0
;Set_zero(st->old_wsp, PIT_MAX);
NOP
MOVL XAR6,#old_wsp
RPT #PIT_MAX-1
||MOV *XAR6++,#0
;Set_zero(st->mem_syn, M)
NOP
MOVL XAR6,#mem_syn
RPT #M-1
||MOV *XAR6++,#0
;Set_zero(st->mem_w, M);
NOP
MOVL XAR6,#mem_w
RPT #M-1
||MOV *XAR6++,#0
;Set_zero(st->mem_w0, M);
NOP
MOVL XAR6,#mem_w0
RPT #M-1
||MOV *XAR6++,#0
;Set_zero(st->mem_err, M);
NOP
MOVL XAR6,#mem_err
RPT #M-1
||MOV *XAR6++,#0
;Set_zero(st->zero, L_SUBFR);
NOP
MOVL XAR6,#zero
MOVL ACC,*XAR6
MOVL XAR6,ACC
RPT #L_SUBFR-1
||MOV *XAR6++,#0
;Set_zero(st->hvec, L_SUBFR); /* set to zero "h1[-L_SUBFR..-1]" */
NOP
MOVL XAR6,#hvec
RPT # L_SUBFR-1
||MOV *XAR6++,#0
;/* OL LTP states */
;for (i = 0; i < 5; i++) st->old_lags[i] = 40
;NOP
;MOVL XAR6,#old_lags
;RPT #4
;||MOV *XAR6++,#40
;in lpc_reset (lpc.c)
;to initiate old_A (st->lpcSt)
;state->old_A[0] = 4096;
;for(i = 1; i < M + 1; i++)
;state->old_A[i] = 0;
MOVL XAR6,#old_A
MOV *XAR6++,#4096
RPT #M-1
||MOV *XAR6++,#0
;in lsp_reset (lsp.c)
;Copy(lsp_init_data, &st->lsp_old[0], M);
;Copy(st->lsp_old, st->lsp_old_q, M);
MOVB XAR1,#M
MOVL XAR2,#lsp_init_data
MOVL XAR3,#lsp_old
LCR _copy
MOVB XAR1,#M
MOVL XAR2,#lsp_old
MOVL XAR3,#lsp_old_q
LCR _copy
;in Q_plsf_reset
;for ( i = 0; i < M; i++)
;state->past_rq[i] = 0
NOP
MOVL XAR6,#past_rq
RPT #M-1
||MOV *XAR6++,#0
;in cl_ltp_reset
;in Pitch_fr_reset
;state->T0_prev_subframe
MOVL XAR6,#T0_prev_subframe
MOV *XAR6,#0
;in gainQuant_reset
;state->sf0_exp_gcode0 = 0;
;state->sf0_frac_gcode0 = 0;
;state->sf0_exp_target_en = 0;
;state->sf0_frac_target_en = 0;
;Set_zero (state->sf0_exp_coeff, 5);
;Set_zero (state->sf0_frac_coeff, 5)
NOP
MOVL XAR6,#sf0_exp_gcode0
RPT #13
||MOV *XAR6++,#0
;in gc_pred_reset
;gc_pred_reset(state->gc_predSt);
;gc_pred_reset(state->gc_predUnqSt);
;for(i = 0 i < NPRED i++)
;state->past_qua_en[i] = MIN_ENERGY;
;state->past_qua_en_MR122[i] = MIN_ENERGY_MR122;
NOP
MOVL XAR6,#past_qua_en
RPT #NPRED-1
||MOV *XAR6++,#MIN_ENERGY
NOP
MOVL XAR6,#past_qua_en_MR122
RPT #NPRED-1
||MOV *XAR6++,#MIN_ENERGY_MR122
NOP
MOVL XAR6,#UnqSt_past_qua_en
RPT #NPRED-1
||MOV *XAR6++,#MIN_ENERGY
NOP
MOVL XAR6,#UnqSt_past_qua_en_MR122
RPT #NPRED-1
||MOV *XAR6++,#MIN_ENERGY_MR122
;in ton_stab_reset
;st->count = 0;
;Set_zero(st->gp, N_FRAME)
NOP
MOVL XAR6,#count
RPT #N_FRAME
||MOV *XAR6++,#0
;st->sharp = SHARPMIN
MOVL XAR6,#sharp
MOV *XAR6++,#SHARPMIN
lretr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -