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

📄 decimdct.s

📁 samsung 9908DVD源代码,
💻 S
📖 第 1 页 / 共 3 页
字号:
	
	eld		rp0		,#Area_imdctTempBuffer1+17
	eld		rp2		,#Area_imdctTempBuffer1
	eld		rp3		,#tbl_twiddlesNormal
//Modified Start 1999. 9/14
	eld		x0		,@rp0	,y0		,@rp3+s0				;y0<- (-co[0])
	eld		ma0		,@rp2									;ma0<-t[0]	
	emul	x0y0											;p<- -t[17]*coeficient[0]
	eadd	ma0		,p		,y0		,@rp3+s0				;ma0<-t[0]-t[17]*co[0], y0<-(-co[1])
	esub	ma0		,p		,@rp0+d1,ma0
	esub	ma0		,p		,x0		,@rp0					;ma0<-t[0]+t[17]*co[0], x0<-t[16]
	ernd	ma0
	eld		@rp2+d0	,ma0										;save t[0]
	
	eld		ma0		,@rp2									;ma0<-t[1]
	emul	x0y0											;p<- -t[16]*coeficient[1]
	eadd	ma0		,p		,y0		,@rp3+s0				;ma0<-t[1]-t[16]*co[1], y0<-(-co[2])
	esub	ma0		,p		,@rp0+d1,ma0
	esub	ma0		,p		,x0		,@rp0
	ernd	ma0	
	eld		@rp2+d0	,ma0										;save t[1]	

	eld		ma0		,@rp2									;ma0<-t[2]
	emul	x0y0											;p<- -t[15]*coeficient[2]
	eadd	ma0		,p		,y0		,@rp3+s0				;ma0<-t[2]-t[15]*co[2], y0<-(-co[3])
	esub	ma0		,p		,@rp0+d1,ma0						;save to t[15], ma0<-t[15]*co[2]
	esub	ma0		,p		,x0		,@rp0					;ma0<-t[2]+t[15]*co[2], x0<-t[14]
	ernd	ma0	
	eld		@rp2+d0	,ma0										;save t[2]
	
	eld		ma0		,@rp2									;ma0<-t[3]
	emul	x0y0											;p<-t[14]*coeficient[3]
	eadd	ma0		,p		,y0		,@rp3+s0				;ma0<-t[3]-t[14]*co[3], y0<-(-co[4])
	esub	ma0		,p		,@rp0+d1,ma0						;save to t[14], ma0<-t[14]*co[3]
	esub	ma0		,p		,x0		,@rp0					;ma0<-t[3]+t[14]*co[3], x0<-t[13]
	ernd	ma0	
	eld		@rp2+d0	,ma0										;save t[3]
	
	eld		ma0		,@rp2									;ma0<-t[4]
	emul	x0y0											;p<-t[13]*coeficient[4]
	eadd	ma0		,p		,y0		,@rp3+s0				;ma0<-t[4]-t[13]*co[4], y0<-(-co[5])
	esub	ma0		,p		,@rp0+d1,ma0						;save to t[13], ma0<-t[13]*co[4]
	esub	ma0		,p		,x0		,@rp0					;ma0<-t[4]+t[13]*co[4], x0<-t[12]
	ernd	ma0	
	eld		@rp2+d0	,ma0										;save t[4]
	
	eld		ma0		,@rp2									;ma0<-t[5]
	emul	x0y0											;p<-t[12]*coeficient[5]
	eadd	ma0		,p		,y0		,@rp3+s0				;ma0<-t[5]-t[12]*co[5], y0<-(-co[6])
	esub	ma0		,p		,@rp0+d1,ma0						;save to t[12], ma0<-t[12]*co[5]
	esub	ma0		,p		,x0		,@rp0					;ma0<-t[5]+t[12]*co[5], x0<-t[11]
	ernd	ma0	
	eld		@rp2+d0	,ma0										;save t[5]
	
	emul	x0y0											;p<-t[11]*coeficient[6]
	eld		ma0		,p		,y0		,@rp3+s0				;ma0<-t[11]*coeficient[6],y0<-(-co[7])
	esla	ma0												;rescaling ma0-register, *2
	eld		p		,ma0
	eld		pl		,ma0l
	eld		ma0		,@rp2									;ma0<-t[6]	
	eadd	ma0		,p										;ma0<-t[6]-t[11]*co[6]
	esub	ma0		,p		,@rp0+d1,ma0						;save to t[11], ma0<-t[11]*co[6]
	esub	ma0		,p		,x0		,@rp0					;ma0<-t[6]+t[11]*co[6], x0<-t[10]
	ernd	ma0	
	eld		@rp2+d0	,ma0										;save t[6]
	
	emul	x0y0											;p<-t[10]*coeficient[7]
	eld		ma0		,p		,y0		,@rp3+s0				;y0<-(-co[8])
	esla	ma0												;rescaling ma0-register, *2
	eld		p		,ma0
	eld		pl		,ma0l
	eld		ma0		,@rp2									;ma0<-t[7]	
	eadd	ma0		,p										;ma0<-t[7]-t[10]*co[7]
	esub	ma0		,p		,@rp0+d1,ma0						;save to t[10], ma0<-t[11]*co[7]
	esub	ma0		,p		,x0		,@rp0					;ma0<-t[7]+t[10]*co[7], x0<-t[9]
	ernd	ma0	
	eld		@rp2+d0	,ma0										;save t[7]
	
	emul	x0y0											;p<-t[9]*coeficient[8]
	emld	ma0		,x0y0		//ERROR eld		ma0,		p										;ma0<-t[9]*coeficient[8]

	esla	ma0
	esla	ma0
	esla	ma0												;rescaling ma0-register, *8		
	eld		p		,ma0
	eld		pl		,ma0l
	eld		ma0		,@rp2									;ma0<-t[8]
	eadd	ma0		,p										;ma0<-t[8]-t[9]*co[8]
	esub	ma0		,p		,@rp0+d1,ma0						;save to t[9], ma0<-t[9]*co[8]
	esub	ma0		,p										;ma0<-t[8]+t[9]*co[8]
	ernd	ma0	
	eld		@rp2+d0	,ma0										;save t[8]	
	

//Modified end	1999. 9/14	

/*		
	eld		x0, 	@rp0,	y0, @rp3+s0						;y0<- (-co[0])
	emul	x0y0											;p<- -t[17]*coeficient[0]
	eld		ma0,		p,		a,	@rp2						;a<-t[0]
	
	eadd	a,		ma0,		y0,	@rp3+s0						;a<-t[0]-t[17]*co[0], y0<-(-co[1])
	esub	a,		ma0,		@rp0+d1,a						;save to t[17], a<-t[17]*co[0]
	esub	a,		ma0,		x0,	@rp0						;a<-t[0]+t[17]*co[0], x0<-t[16]
	eld		@rp2+d0,a										;save t[0]


	emul	x0y0											;p<- -t[16]*co[1]
	eld		ma0,		p,		a,	@rp2						;a<-t[1]
	eadd	a,		ma0,		y0,	@rp3+s0						;a<-t[1]-t[16]*co[1], y0<-(-co[2])
	esub	a,		ma0,		@rp0+d1,a						;save to t[16], a<-t[16]*co[1]
	esub	a,		ma0,		x0,	@rp0						;a<-t[1]+t[16]*co[1], x0<-t[15]
	eld		@rp2+d0,a										;save t[1]
	
	
	emul	x0y0											;p<- -t[15]*coeficient[2]
	eld		ma0,		p,		a,	@rp2						;a<-t[2]
	eadd	a,		ma0,		y0,	@rp3+s0						;a<-t[2]-t[15]*co[2], y0<-(-co[3])
	esub	a,		ma0,		@rp0+d1,a						;save to t[15], a<-t[15]*co[2]
	esub	a,		ma0,		x0,	@rp0						;a<-t[2]+t[15]*co[2], x0<-t[14]
	eld		@rp2+d0,a										;save t[2]
	
	
	emul	x0y0											; -p<-t[14]*coeficient[3]
	eld		ma0,		p,		a,	@rp2						;a<-t[3]
	eadd	a,		ma0,		y0,	@rp3+s0						;a<-t[3]-t[14]*co[3], y0<-(-co[4])
	esub	a,		ma0,		@rp0+d1,a						;save to t[14], a<-t[14]*co[3]
	esub	a,		ma0,		x0,	@rp0						;a<-t[3]+t[14]*co[3], x0<-t[13]
	eld		@rp2+d0,a										;save t[3]
	
	
	emul	x0y0											; -p<-t[13]*coeficient[4]
	eld		ma0,		p,		a,	@rp2						;a<-t[4]
	eadd	a,		ma0,		y0,	@rp3+s0						;a<-t[4]-t[13]*co[4], y0<-(-co[5])
	esub	a,		ma0,		@rp0+d1,a						;save to t[13], a<-t[13]*co[4]
	esub	a,		ma0,		x0,	@rp0						;a<-t[4]+t[13]*co[4], x0<-t[12]
	eld		@rp2+d0,a										;save t[4]
	
	
	emul	x0y0											; -p<-t[12]*coeficient[5]
	eld		ma0,		p,		a,	@rp2						;a<-t[5]
	eadd	a,		ma0,		y0,	@rp3+s0						;a<-t[5]-t[12]*co[5], y0<-(-co[6])
	esub	a,		ma0,		@rp0+d1,a						;save to t[12], a<-t[12]*co[5]
	esub	a,		ma0,		x0,	@rp0						;a<-t[5]+t[12]*co[5], x0<-t[11]
	eld		@rp2+d0,a										;save t[5]
	
	
	emul	x0y0											; -p<-t[11]*coeficient[6]
	eld		ma0,		p,		a,	@rp2						;a<-t[6]
	esla	ma0												;rescaling ma0-register, *2	
	eadd	a,		ma0,		y0,	@rp3+s0						;a<-t[6]-t[11]*co[6], y0<-(-co[7])
	esub	a,		ma0,		@rp0+d1,a						;save to t[11], a<-t[11]*co[6]
	esub	a,		ma0,		x0,	@rp0						;a<-t[6]+t[11]*co[6], x0<-t[10]
	eld		@rp2+d0,a										;save t[6]
	
	
	emul	x0y0											; -p<-t[10]*coeficient[7]
	eld		ma0,		p,		a,	@rp2						;a<-t[7]
	esla	ma0												;rescaling ma0-register, *2	
	eadd	a,		ma0,		y0,	@rp3+s0						;a<-t[7]-t[10]*co[7], y0<-(-co[8])
	esub	a,		ma0,		@rp0+d1,a						;save to t[10], a<-t[10]*co[7]
	esub	a,		ma0,		x0,	@rp0						;a<-t[7]+t[10]*co[7], x0<-t[9]
	eld		@rp2+d0,a										;save t[7]
	
	
	emul	x0y0											; -p<-t[9]*coeficient[8]
	eld		ma0,		p,		a,	@rp2						;a<-t[8]
	esla	ma0
	esla	ma0
	esla	ma0												;rescaling ma0-register, *8	
	eadd	a,		ma0										;a<-t[8]-t[9]*co[8]
	esub	a,		ma0,		@rp0+d1,a						;save to t[9], a<-t[9]*co[8]
	esub	a,		ma0										;a<-t[8]+t[9]*co[8]
	eld		@rp2+d0,a										;save t[8]
*/	
;----------------------re-ordering 18-35----------------------
;
;for i=0;i<=8;++i
;{
;	out[27+i] = in[i]*coeficient;
;	out[26-i] = in[i]*coeficient;
;}
;
;Status at this routine
;		   d1	d0	 s1	  s0
;	sd0  = -1 | 1  | -1 | 1
;	sd1  = -1 | 1  | -1 | 0
;	sd2  = -1 | 1  | -1 | 0
;	sd3  = -1 | 1  | -1 | 1
;
;Needing status at this routine
;		   d1	d0	 s1	  s0
;	sd0  = xx | xx | xx | 1
;	sd1  = xx | 1  | xx | xx
;	sd2  = -1 | xx | xx | xx
;	sd3  = xx | xx | xx | 1
;------------------------------------------------------------
	esd0	s0		,#1
	eld		sd1		,sd2
	eld		rp0		,#Area_imdctTempBuffer1
	eld		rp1		,#Area_imdctTempBuffer1+27+18
	eld		rp2		,#Area_imdctTempBuffer1+26+18
	
	ld		r6		,#8
	eld		x0		,@rp0+s0,y0		,@rp3+s0
DecodingImdctGainHighLoop
	emul	x0y0	,x0		,@rp0+s0,y0		,@rp3+s0
	eld		@rp1+d0	,p										;out[27+i] = in[i]*coeficient[i]	
	bnzd	r6		,DecodingImdctGainHighLoop
	eld		@rp2+d1	,p										;out[26-i] = in[i]*coeficient[i]

;----------------------reordering 0-17------------------------
;
;for i=0;i<9;++i
;{
;	out[i] = in[9+i]*coeficient;
;	out[17-i] = in[9+i]*coeficient;
;}
;
;	for(i = 0; i < 18; i++)
;		t[i] *= twid[9+i];
;
;	for(i = 0; i < 9; i++) {
;		x[i] = t[i+9]							//be negative at the next windowing
;		x[i+9] = t[17-i]
;		x[i+18] = t[8-i]
;		x[i+27] = t[i]
;
;Status at this routine
;		   d1	d0	 s1	  s0
;	sd0  = -1 | 1  | -1 | 1
;	sd1  = -1 | 1  | -1 | 0
;	sd2  = -1 | 1  | -1 | 0
;	sd3  = -1 | 1  | -1 | 1
;
;Needing status at this routine
;		   d1	d0	 s1	  s0
;	sd0  = xx | xx | xx | 1
;	sd1  = xx | 1  | xx | xx
;	sd2  = -1 | xx | xx | xx
;	sd3  = xx | xx | xx | 1
;
;------------------------------------------------------------	
	eld		rp1		,#Area_imdctTempBuffer1+18
	eld		rp2		,rp1
	erpn	rp2		,#17

	ld		r6		,#2
DecodingImdctGainLowLoop1	
	emul	x0y0	,x0		,@rp0+s0,y0		,@rp3+s0
	eld		@rp1+d0	,p										;x[0]
	bnzd	r6		,DecodingImdctGainLowLoop1	
	eld		@rp2+d1	,p										;x[17]
	
	ld		r6		,#2	
	emul	x0y0	,x0		,@rp0+s0,y0		,@rp3+s0	
DecodingImdctGainLowLoop2
	emld	ma0		,x0y0	,x0		,@rp0+s0,y0		,@rp3+s0
	esla	ma0												;rescaling, *2
	ernd	ma0	
	eld		@rp1+d0	,ma0										;save x[3],[4],[5]
	bnzd	r6		,DecodingImdctGainLowLoop2
	eld		@rp2+d1,ma0										;save x[14],[13],[12]

	ld		r6		,#1
DecodingImdctGainLowLoop3
	emld	ma0		,x0y0	,x0		,@rp0+s0,y0		,@rp3+s0
	esla	ma0
	esla	ma0												;rescaling, *4
	ernd	ma0	
	eld		@rp1+d0	,ma0										;save x[6]
	bnzd	r6		,DecodingImdctGainLowLoop3	
	eld		@rp2+d1	,ma0										;save x[11]

	emld	ma0		,x0y0			;because eld ma0, p救凳.1999,9/19

	esla	ma0
	esla	ma0	
	esla	ma0	
	esla	ma0												;rescaling, *16
	ernd	ma0	
	eld		@rp1+d0	,ma0										;save x[8]
	eld		@rp2+d1	,ma0										;save x[9]
;------------------------IMDCT window------------------------
;
;for i=0;i<18;++i
;{
;	out [i] += prev[i];
;	prev[i] = out[i+18];
;}
;
;Status at this routine
;		   d1	d0	 s1	  s0
;	sd0  = -1 | 1  | -1 | 0
;	sd1  = -1 | 1  | -1 | 0
;	sd2  = -1 | 1  | -1 | 1
;	sd3  = -1 | 1  | -1 | 1
;
;Needing status at this routine
;		   d1	d0	 s1	  s0
;	sd0  = xx | xx | xx | 0
;	sd1  = xx | 1  | xx | 0
;	sd2  = xx | xx | xx | 1
;	sd3  = xx | xx | xx | 1
;------------------------------------------------------------
	eld		sd0		,#((-8&0fh)<<12)|(1<<8)|((-17&0fh)<<4)|((18&0fh)<<0)	
	eld		sd3		,#((-1&0fh)<<12)|(1<<8)|((-17&0fh)<<4)|((18&0fh)<<0)	

	es		xsd												;enable rp0/rp3 extention
	eld		sd0		,#(((-1&0f0h)>>4)<<12)|((1>>4)<<8)|(((-17&0f0h)>>4)<<4)|(((18&0f0h)>>4)<<0)	;insert
	eld		sd3		,#(((-1&0f0h)>>4)<<12)|((1>>4)<<8)|(((-17&0f0h)>>4)<<4)|((18>>4)<<0)	;insert

	eld		rp0		,#Area_imdctTempBuffer1+18
	eld		c		,rpd1.index_LptrImdctprevious	
	eld		rp1		,c
	eld		c		,rpd1.index_LRPxBackupBuffer	
	eld		rp2		,c
	eld		c		,rpd1.index_LptrImdctWindow
	eld		rp3		,c
	
	ld		r6		,#17
	eld		x0		,@rp0+s0,y0		,@rp3+s0
DecodingImdctWindowLoop
	eld		ma0		,@rp1+s0
	emul	x0y0	,x0		,@rp0+s1,y0		,@rp3+s1
	eadd	ma0		,p										;out [i] += prev[i]

//	eld		c		,ma0l
//	bra		ec0		,rnd_proc
//	bra		rnd_procEnd	
//rnd_proc
	ernd	ma0
//rnd_procEnd	
/////////////////////////////////////	
//2000. 03.16 scaling up for equalizer
	ldb		r4		,@[a13+Index_EQ_VolumeFlag]
//	ldb		r4		,@[a10+Index_OptionalFunctionOnOff]
	and		r4		,#0x02
	cmp		eq		,r4		,#0x02
	brf		MP3DigitalEQ_PassSub4
//.ifdef EQUALIZER_MODE				//2000. 03.16 scaling up for equalizer
	esla	ma0
	esla	ma0
	esla	ma0
//.endif		
MP3DigitalEQ_PassSub4
//.ifdef EQUALIZER_MODE
//	esla	ma0
//.endif	
	eld		@rp2+d0	,ma0
	emul	x0y0	,x0		,@rp0+s0,y0		,@rp3+s0
	bnzd	r6		,DecodingImdctWindowLoop
	eld		@rp1+d0	,p										;prev[i] = out[i+18]

	er		xsd												;disable rp0/rp3 extention

	eld		c		,rp2
	eld		rpd1.index_LRPxBackupBuffer	,c				;ptr_imdctInputBuffer[i+18]	
	
	ret	

	end

⌨️ 快捷键说明

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