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

📄 sincos.u

📁 操作系统SunOS 4.1.3版本的源码
💻 U
📖 第 1 页 / 共 5 页
字号:
	;			;				;		;	ptr5!c_dcos5	call cc;		;				;		ptr5;			;			;				;		ptr5;	ptr5!0x700+0xD4	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!szero	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xD0	jeq sincos33;		dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dnop enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD1	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dmul;				;		ptr5;	ptr5!0x700+0xD5	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;|* cc in C register	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;sincos33:	;			;				;		ptr5;		ptr5!c_dtrthresh1	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp aluacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		;	ptr5!dhalf	jlt thresh22;		dnop halt;			;		ptr5;			;			dnop halt;			;		ptr5;	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul;				;		ptr5;	ptr5!c_d3_8	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dsub aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD5	;			dnop enra srccalu clkcc loaddp halt;regtoti;	rcsmsw ptr5;	;			drsub alubcreg enra loaddp halt;regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!c_d5_8	;			dnop enra srccalu clkcc loaddp halt;regtoti;	rcsmsw ptr5;	;			dsub alubcreg enra loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xDA	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	call sincosend2;	dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;thresh22:	;			dnop;				;		ptr5;	ptr5!c_dtrthresh2	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp aluacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		;	ptr5!dhalf	jlt thresh33;		dnop halt;			;		ptr5;			;			dnop halt;			;		ptr5;	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul;				;		ptr5;	ptr5!c_d3_16	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dsub aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD5	;			dnop enra srccalu clkcc loaddp halt;regtoti;	rcsmsw ptr5;	;			drsub alubcreg enra loaddp halt;regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!c_d13_16	;			dnop enra srccalu clkcc loaddp halt;regtoti;	rcsmsw ptr5;	;			dsub alubcreg enra loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xDA	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	call sincosend2;	dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;thresh33:	;			dnop;				;		ptr5;	ptr5!dhalf	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul;				;		ptr5;	ptr5!0x700+0xD5	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dsub aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!done	;			dnop enra srccalu clkcc loaddp halt;regtoti;	rcsmsw ptr5;	;			dsub alubcreg enra loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;		ptr5!0x700+0xDA	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	call sincosend2;	dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;sincosend2:	;			;				;		ptr5;	ptr5!0x700+0xD2	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!c_sithree	;			i2land enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!c_sizero|* Route output to input RA         ;                       i2cmp enra tioe tisp halt;      ;               ptr5; 	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;		ptr5!c_sione	jeq quad0;		i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;		ptr5!c_sitwo	jeq quad1;		i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xDA	jeq quad2;		dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dneg enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr1;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;	ptr5!0x700+0xDB	;			;				regtotmp;	rcsmsw ptr5;	;			;				regtotmp;	rcslsw ptr5;	;			;				;		ptr4;	;			;				tmptoreg;	rcsmsw ptr4;	call idle1;		;				tmptoreg;	rcslsw ptr4;quad2:	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dneg enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr4;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr4;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr4;	ptr5!0x700+0xDB	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dneg enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr1;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;quad1:	;			;				;		ptr5;	ptr5!0x700+0xDB	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dneg enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr4;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr4;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr4;	ptr5!0x700+0xDA	;			;				regtotmp;	rcsmsw ptr5;	;			;				regtotmp;	rcslsw ptr5;	;			;				;		ptr1;	;			;				tmptoreg;	rcsmsw ptr1;	call idle1;		;				tmptoreg;	rcslsw ptr1;quad0:	;			;				;		ptr5;	ptr5!0x700+0xDB	;			;				regtotmp;	rcsmsw ptr5;	;			;				regtotmp;	rcslsw ptr5;	;			;				;		ptr1;	;			;				tmptoreg;	rcsmsw ptr1;	;			;				tmptoreg;	rcslsw ptr1;	ptr5!0x700+0xDA	;			;				regtotmp;	rcsmsw ptr5;	;			;				regtotmp;	rcslsw ptr5;	;			;				;		ptr4;	;			;				tmptoreg;	rcsmsw ptr4;	call idle1;		;				tmptoreg;	rcslsw ptr4;ckmode:|* Make sure rounding mode is the default: 2.|* The current rounding mode is stored at 0x700+0xF3|* The correct rounding mode is stored at 0x700+0xF2|*     Do a single precision compare of both values and if they're|*     not equal, goto hang        ;                       ;                               ;               rcssp ptr5;     ptr5!0x700+0xF3        ;                       i2cmp enra halt;                regtoti;        rcssp ptr5;        ;                       ;                               ;               rcssp ptr5;     ptr5!0x700+0xF2        ;                       i2cmp enrb halt;		regtoti;        rcssp ptr5;        ;                       ;				;               ;        jne hang cstat;		halt;                           ;               ;	;			halt;				;		;	rtn;			;				;		ptr2;|* Routine DP.ARGRED to reduce huge arguments for DP sin/cos/sincos|*	Variables and registers used:|*	|*		0x700 + 0xE0 ... 0xE7:  q[0], q[1],... q[7]|*		0x700 + 0xE8 ... 0xEF:  fv[0], fv[1],... fv[7]|*		|*		0x700+0xDC: abs(x)|*		0x700+0xDD: int k|*		0x700+0xDE: z|*		|*		0x500+0xE0: x1|*		0x500+0xE1: x2|*		0x500+0xE2: x3|*		0x500+0xE3: t|*		0x500+0xE4: t1|*		0x500+0xE5: t2|*		0x500+0xE6: t3|*		0x500+0xE7: p3|*		0x500+0xE8: y|*		0x500+0xEA: fvm1|*		0x500+0xEB: fvm2|*		0x500+0xEC: q1|*		0x500+0xED: q2|*		0x500+0xEE: q3|*		0x500+0xEF: int mm|*	|*	dpargred:|* First, get ILOGB(abs(x))	;			tioe tilsw halt;		titoreg;	rcslsw ptr5;	;			;				;		ptr5;	ptr5!c_si20	;			i2sftrl	enrb halt;		regtoti;	rcssp ptr5;	;			;				;		;	;			i2cmp enra tioe tisp halt;	;		ptr5;	ptr5!c_sibias	;			i2sub enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xD2	;			i2cmp enra tioe tisp halt;	titoreg;	rcssp ptr5;	;			;				;		ptr5;	ptr5!c_si38	;			i2sub enrb halt;		regtoti;	rcssp ptr5;	;			;				;		;	;			i2cmp enra tioe tisp halt;	;		ptr5;	ptr5!c_si24	;			idiv enrb halt;			regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xDC	;			;				regtotmp;	rcsmsw ptr5;	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			halt;				;		ptr5;	ptr5!0x700+0xDD	;			i2cmp enra tioe tisp halt;	titoreg;	rcssp ptr5;	;			;				;		ptr5;	ptr5!szero	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!c_si24	jle setkto0;		imul enrb halt;			regtoti;	rcssp ptr5;|* else x = scalbn(x , -24*k)	;			;				;		;doscalbn:	;			i2cmp enra tioe tisp halt;	;		ptr5;	ptr5!c_si20	;			i2sftll enrb halt;		regtoti;	rcssp ptr5;	;			;				;		;	;			i2cmp enrb tioe tisp halt;	;		ptr5;	ptr5!0x700+0xDC	;			i2sub enra halt;		regtoti;	rcsmsw ptr5;	;			i2sub;				;		;	;			tioe tisp halt;			titotmp;	rcsmsw ptr5;	;			tioe tisp halt;			titoreg;	rcsmsw ptr5;|* get py[n1] &= 0xffffffe0|*startpyn:	;			;				;		ptr5;	ptr5!c_simskar0	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xDC	;			i2land enrb halt;		regtoti;	rcslsw ptr5;	;			;				;		ptr5;	ptr5!0x500+0xE2	;			i2cmp enra tioe tisp halt;	titoreg;	rcslsw ptr5;	;			;				tmptoreg;	rcsmsw ptr5;	;			;				;		ptr5;	ptr5!c_simskar1	;			i2land enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x500+0xE0	;			tioe tisp halt;			titoreg;	rcslsw ptr5;	;			;				tmptoreg;	rcsmsw ptr5;	;			;				;		ptr5;	ptr5!0x500+0xE2	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dnop enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x500+0xE0	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dsub enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x500+0xE1	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xDC	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x500+0xE2	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!c_sione	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xDD	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x500+0x6F	jlt noadjust;		i2add halt;			;		;|* The following loop is to get pr[k-1]|* set K = (k-1) + 2 = k + 1|* set ptr5 to base of pr - 1; loop: incr ptr5, decr RA (K),compare to 1, if not equal, loop	;			;				;		;	;			i2cmp enra tioe tisp halt;	;		;argloop1:	;			i2sub halt;			;		;	;			;				;		;	ptr5+	;			i2cmp enra tioe tisp halt;	;		;	;			;				;		;	jne argloop1;		halt;				;		;	;			;				;		ptr5;	;			dfloat enra loaddp halt;	regtoti;	rcssp ptr5;	;			dfloat enra loaddp halt;	regtoti;	rcssp ptr5;	;			dnop;				;		ptr5;	ptr5!0x500+0xEA	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	;			;				;		ptr5;	ptr5!0x700+0xDD	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!c_sione	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		;	jle noadjust;		halt;				;		;|* get fvm2	;			;				;		ptr5;	ptr5!0x500+0x6Fargloop2:	;			i2sub halt;			;		;	;			;				;		;	ptr5+	;			i2cmp enra tioe tisp halt;	;		;	;			;				;		;	jne argloop2;		halt;				;		;	;			;				;		ptr5;	;			dfloat enra loaddp halt;	regtoti;	rcssp ptr5;	;			dfloat enra loaddp halt;	regtoti;	rcssp ptr5;	;			dnop;				;		;	;			dnop enra tioe timsw loaddp halt;;		;	;			dnop enra tioe tilsw loaddp halt;;		ptr5;	ptr5!c_dtwo24	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dmul;				;		;	;			dnop;				;		ptr5;	ptr5!0x500+0xEB	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;noadjust:|* get fv[0]	;			;				;		ptr5;	ptr5!c_sitwo	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xDD	;			i2add enra halt;		regtoti;	rcssp ptr5;	;			;				;		;	;			i2cmp enra tioe tisp halt;	;		ptr5;	ptr5!c_sione	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x500+0x6Fargloop3:	;			i2sub halt;			;		;	;			;				;		;	ptr5+	;			i2cmp enra tioe tisp halt;	;		;	;			;				;		;	jne argloop3;		halt;				;		;	;			;				;		ptr5;	;			dfloat enra loaddp halt;	regtoti;	rcssp ptr5;	;			dfloat enra loaddp halt;	regtoti;	rcssp ptr5;	;			dnop;				;		;	;			dnop enra tioe timsw loaddp halt;;		;	;			dnop enra tioe tilsw loaddp halt;;		ptr5;	ptr5!c_dtwon24	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dmul;				;		;	;			dnop;				;		ptr5;	ptr5!0x700+0xE8	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;

⌨️ 快捷键说明

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