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

📄 sincos.u

📁 操作系统SunOS 4.1.3版本的源码
💻 U
📖 第 1 页 / 共 5 页
字号:
|*	@(#)sincos.u 1.1 92/07/30 Copyright Sun Microsystems, Inc.  1988, 1989|* |*	Double precisioin Sin, Cos, SinCos.|*      lpreg is 0 for cos, 1 for sin, 2 for sincos|* routine xd.sin 001000000001	;				;		;        ;                       ;                               ;               rcssp ptr5;     ptr5!0x700+0xF3        ;                       i2cmp enra halt;                regtoti;        rcssp ptr5;        ;                       ;                               ;               rcssp ptr5;     ptr5!0x700+0xF2        ;                       i2cmp enrb halt;		regtoti;        rcssp ptr5;	;			;				;		ptr2;		lpreg!1        jne hang cstat;		dnop enra loaddp halt;		regtitmp;	rcsmsw ptr2;	;			dabs enra loaddp halt;		regtitmp;	rcslsw ptr2;		call dtrig;		dnop;				;		;	routine xd.cos 001000000011	;				;		;        ;                       ;                               ;               rcssp ptr5;     ptr5!0x700+0xF3        ;                       i2cmp enra halt;                regtoti;        rcssp ptr5;        ;                       ;                               ;               rcssp ptr5;     ptr5!0x700+0xF2        ;                       i2cmp enrb halt;		regtoti;        rcssp ptr5;	;			;				;		ptr2;		lpreg!0        jne hang cstat;		dnop enra loaddp halt;		regtitmp;	rcsmsw ptr2;	;			dabs enra loaddp halt;		regtitmp;	rcslsw ptr2;		call dtrig;		dnop;				;		;	routine xd.sincos 001001100001	;				;		;        ;                       ;                               ;               rcssp ptr5;     ptr5!0x700+0xF3        ;                       i2cmp enra halt;                regtoti;        rcssp ptr5;        ;                       ;                               ;               rcssp ptr5;     ptr5!0x700+0xF2        ;                       i2cmp enrb halt;		regtoti;        rcssp ptr5;	;			;				;		ptr2;		lpreg!2        jne hang cstat;		dnop enra loaddp halt;		regtitmp;	rcsmsw ptr2;	;			dabs enra loaddp halt;		regtitmp;	rcslsw ptr2;		call dtrig;		dnop;				;		;	dtrig:	call dnotfinxs;		i2cmp enra srccalu clkcc tioe timsw halt;;	;goforit:	;			dnop;				;		ptr5;	ptr5!c_dtrtiny	jge tmore2246;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp aluacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!c_dzero85	jlt tlesstiny;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp aluacreg enrb loaddp halt; regtoti;	rcslsw ptr5;	;			dnop;				;		ptr2;	jlt tless085;		dnop enra enrb loaddp halt;	regtitmp;	rcsmsw ptr2;	;			dmul enra enrb loaddp halt;	regtitmp;	rcslsw ptr2;    	;			dmul;				;		ptr5;	ptr5!c_dsin1	jloop0 dcosgt085;	dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulbmul enra srccmul clkcc loaddp halt;regtoti; 	rcslsw ptr5;	;			dmul;				;		ptr5;	ptr5!c_dsin0	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;  lpreg-	;			dadd aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		;	;			dnop enra tioe timsw loaddp halt;	;		;	;			dnop enra tioe tilsw loaddp halt;	;		;	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr2;	;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr2;	;			dmul;				;		;	;			dnop halt;			;		;	;			dmul mulacreg mulbmul halt;	;		;	;			dmul;				;		;	;			dnop halt;			;		;	jloop0 dsingt085;	drsub aluamul alubrb halt;	; 		;	;			dnop;				;		ptr1;|* Sincos from here on:	jtierr der1;		dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;		;			dnop;				;		ptr5;	ptr5!c_dcos0	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;    	;			dmul mulacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul;				;		ptr5;	ptr5!dhalf	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		;	;			dnop enra tioe timsw loaddp halt;	;		;	;			dmul mulbcreg enra tioe tilsw loaddp halt;	;	;	;			dmul;				;		ptr5;	ptr5!done	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr4;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr4;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr4;dsingt085:	jtierr der1;		dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;	dcosgt085:	;			dnop;				;		ptr5;	ptr5!c_dcos0	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;    	;			dmul mulacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulacreg;			;		ptr5;	ptr5!dhalf	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		;	;			dnop enra tioe timsw loaddp halt;;		;	;			dmul mulbcreg enra tioe tilsw loaddp halt;;	;	;			dmul;				;		ptr5;	ptr5!done	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr1;	jtierr der1;		dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;tless085:	;			dmul;				;		ptr5;	ptr5!c_dsin0			jloop0 dcoslt085;	dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulara enrb srccmul clkcc loaddp halt;regtoti;rcslsw ptr5;	lpreg-	;			dmul;				;		ptr2;	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr2;	;			dmul mulacreg mulbmul enrb loaddp halt;regtoti;	rcslsw ptr2;	;			dmul;				;		ptr4;	;			dnop halt;			regtotmp;	rcslsw ptr4;	jloop0 dsinlt085;	drsub aluamul alubrb halt;	;		;			;			dnop;				;		ptr1;	jtierr der1;		dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;	lpreg-	;			dnop;				;		ptr5;	ptr5!dhalf	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul;				;		ptr5;		ptr5!done	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr4; 	jtierr der4;		dnop tioe tilsw halt;		titoreg;	rcslsw ptr4;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr4;dsinlt085:	jtierr der1;		dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;dcoslt085:	;			dnop;				;		ptr5;		ptr5!dhalf	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul;				;		ptr5;		ptr5!done	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr1; 	jtierr der1;		dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;tlesstiny:	jloop0 dcostiny;	dnop;				;		ptr1;			;			;				tmptoreg;	rcslsw ptr1;	lpreg-	jloop0 idle1;		;				tmptoreg;	rcsmsw ptr1;|* If sin , return x	;			;				;		ptr5;	ptr5!done	;			;				;		ptr4;	;			;				regtotmp;	rcslsw ptr4;	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dabs enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				; 		ptr4;	jtierr der4;		dnop tioe tilsw halt;		titoreg;	rcslsw ptr4;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr4;dcostiny:	;			;				;		ptr5;		ptr5!done	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dabs enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				; 		ptr1;	jtierr der1;		dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;tmore2246:	;			;				;		ptr5;	ptr5!szero	;			;				regtotmp;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xD4|* store j = 0	;			;				tmptoreg;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xD2|* store n = 0	;			;				tmptoreg;	rcssp ptr5;	;			;				regtotmp;	rcsmsw ptr2;	;			;				regtotmp;	rcslsw ptr2;	;			;				;		ptr5;	ptr5!0x700+0xD0|* store y1 = x	;			;				tmptoreg;	rcsmsw ptr5;	;			;				tmptoreg;	rcslsw ptr5;|* Compare abs(x) to pio4	;			;				;		ptr5;	ptr5!c_dpio4	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp aluacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!c_dpio2	jle tlepio4;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dnop aluacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;|* store j = 1	;			dnop halt;			;		ptr5;	ptr5!sone	;			dnop halt;			regtotmp;	rcssp ptr5;	;			dnop halt;			;		ptr5;	ptr5!0x700+0xD4	;			dcmp aluacreg alubrb halt;	tmptoreg;	rcssp ptr5;	;			dnop;				;		ptr5;	ptr5!c_dtrmedium	jle tlepio2;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp aluacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		;	jle tlemed;		dnop enra loaddp halt;		regtoti;	rcsmsw ptr2;	;			dabs enra loaddp halt;		regtoti;	rcslsw ptr2;	;			dnop;				;		ptr5;	ptr5!0x700+0xDC	call dpargred;		i2cmp enra tioe timsw halt;	titoreg;	rcsmsw ptr5;|* dpargred call scfinal at the end :-)tlemed:	;			;				;		ptr5;		ptr5!c_dinvpio2	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulacreg;			;		;			;			dnop;				;		;			;			dnop enra tioe timsw loaddp halt;;		;	;			dcvtint enra tioe tilsw loaddp halt;;		;	;			dcvtint;			;		ptr5;	ptr5!0x700+0xD2	;			dfloat enra tioe tisp halt;	titoreg;	rcssp ptr5;	;			dfloat enra tioe tisp halt;	;		;	;			dnop;				;		ptr5;	ptr5!0x700+0xD3	;			dnop enra tioe timsw loaddp halt;titoreg;	rcsmsw ptr5;	;			dnop enra tioe tilsw loaddp halt;titoreg;	rcslsw ptr5;	;			dnop;				;		ptr5;		ptr5!c_dpio2_1	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dmul;				;		ptr5;		ptr5!c_dpio2_2	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub aluamul alubcreg enrb loaddp halt;regtoti;rcslsw ptr5;	;			dnop;					;		;|* abs(x) will no longer be in C reg. z = (t - n*pio2_1) is.	;			dmul srccalu clkcc tioe tilsw halt;	;		;	;			dmul srccalu clkcc tioe timsw halt;	;		;	;			dmul;				;		;	;			dnop;				;		;|* Tioutput -- RA ('w')	;			dnop enra tioe timsw loaddp halt;;		;	;			drsub alubcreg enra tioe tilsw loaddp halt;;	ptr5;	ptr5!0x700+0xD0	;			dnop;				;		ptr5;	;			dnop enrb tioe timsw loaddp halt;	titoreg;  	rcsmsw ptr5;	;			dsub aluacreg enrb tioe tilsw loaddp halt;titoreg;	rcslsw ptr5;	;			dnop;				;		;	;			dnop enrb tioe timsw loaddp halt;;		;	;			drsub enrb tioe tilsw loaddp halt;;		;		;			dnop;				;		ptr5;	ptr5!0x700+0xD1	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	call cksign;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	call scfinal;		;				;		;tlepio2:	;			;				;		ptr5;		ptr5!c_sione	;			;				regtotmp;	rcssp ptr5;	;			;				;		ptr5;		ptr5!0x700+0xD2	;			;				tmptoreg;	rcssp ptr5;	;			;				;		ptr5;		ptr5!c_dpio2_1	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dsub aluacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!c_dpio2_2	;			dnop enra srccalu clkcc loaddp halt;regtoti;	rcsmsw ptr5;	;			drsub alubcreg enra loaddp halt;regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;		ptr5!0x700+0xD0	;			dnop enrb tioe timsw loaddp halt;titoreg;	rcsmsw ptr5;	;			dsub aluacreg enrb tioe tilsw loaddp halt;titoreg;rcslsw ptr5;	;			dnop;						;		;	;			dnop enrb tioe timsw loaddp halt;;		;	;			drsub aluara enrb tioe tilsw loaddp halt;;	ptr5;	ptr5!0x700+0xD1	;			dnop;				;		;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	call cksign;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	call scfinal;		dnop;				;		;|*   y1 = x: D0|*   y2 = ?: D1|*int n = 0: D2|*DP  n = 0: D3|*    j = 0: D4|*   cc = ?: D5|*   ss =  : D6|*    w =  : DAtlepio4:  scfinal:	;			;				;		ptr5;	ptr5!0x700+0xD0	;			dnop enra enrb loaddp halt;	regtoti;	rcsmsw ptr5;	;			dmul enra enrb loaddp halt;	regtoti;	rcslsw ptr5;		;			dmul;				;		;			jloop notcos;		dnop halt;			;		;			;			dnop srccmul clkcc halt;	;		ptr5;		ptr5!c_sione|* if DO_COS, n++.	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	lpreg!1|* Add to lpreg so that after notcos: if we're doing a cos, when we lpreg-, the result will|* be 0 if we're doing a cos.  (if we're doing a sin, it'll be 0).	;			;				;		ptr5;		ptr5!0x700+0xD2	;			i2add enrb halt;		regtoti;	rcssp ptr5;	;			tioe tisp;			;		ptr5;	;			tioe tisp halt;			titoreg;	rcssp ptr5;notcos:	;			;				;		ptr5;		ptr5!0x700+0xD2|*|*  (n anded 1) == 0 |*	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	lpreg-	;			;				;		ptr5;	ptr5!c_sione	jloop dosincos;		i2land enrb halt;		regtoti;	rcssp ptr5;	;			;				;		;	;			i2cmp enrb tioe tisp halt;	;		;	;			;				;		ptr5;	ptr5!szero	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xD0	jne docos;		dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	; 			dnop enra loaddp halt;		regtoti;	rcslsw ptr5;		;			;				;		;	ptr5!c_dsin5	call ss;		;				;		ptr5;	;			;				;		ptr5;	ptr5!0x700+0xD4	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!szero	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xD6	jne sincos2;		dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulbcreg enra loaddp halt;	regtoti;	rcslsw ptr5;|* compute w = y1 - y1*z*ss	;			dmul mulbcreg;			;		;	;			dnop;				;		;	;			dnop enra tioe timsw loaddp halt;;		;	;			dnop enra tioe tilsw loaddp halt;;		;	;			dnop;				;		ptr5;	ptr5!0x700+0xD0	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;		;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dmul;				;		ptr5;	ptr5!0x700+0xD0	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;		ptr5!0x700+0xDA	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	call trigend;		dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;sincos2:|*|* compute w = y1 - (y1*z*ss - (y2-0.5*(z*y2)))|*	;			dmul;				;		ptr5;	ptr5!0x700+0xD1	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;

⌨️ 快捷键说明

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