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

📄 ssincos.u

📁 操作系统SunOS 4.1.3版本的源码
💻 U
📖 第 1 页 / 共 3 页
字号:
	;			tioe tisp halt;			titoreg;	rcssp ptr5;	;			;				;		ptr5;	ptr5!c_dssin2	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulacreg;			;		ptr5;	ptr5!c_dssin1	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd aluamul enrb loaddp halt; 	regtoti;	rcslsw ptr5;	;			dmul mulaalu mulbcreg;		;		;	;			dmul mulaalu mulbcreg;		;		ptr5;	ptr5!c_dssin0	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulaalu mulbcreg;		;		;	;			dmul mulaalu mulbcreg;		;		ptr5;	ptr5!done	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			drsub aluamul;			;		ptr5;	ptr5!0x700+0xD1	;			dnop enrb srccalu clkcc loaddp halt;regtoti;	rcsmsw ptr5;	;			dmul mulacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulacreg;			;		;	;			dcvts aluamul;			;		;	;			;				;		ptr5;	ptr5!0x700+0xD6	;			tioe tisp halt;			titoreg;	rcssp ptr5;        ;                       ;                               ;               ptr5;  	ptr5!0x700+0xD0        ;                       i2cmp enra halt;		regtoti;        rcssp ptr5;        ;                       ;                               ;               ptr5;  ptr5!c_sithree        ;                       i2land enrb halt;               regtoti;        rcssp ptr5;        ;                       ;				;               ptr5;	ptr5!c_sizero	;			i2cmp enrb tioe tisp halt;	;		;	;			;				;		ptr5;|* Route output to input RA        ;                       i2cmp enra halt;		regtoti;        rcssp ptr5;        ;                       ;                               ;               ptr5;	ptr5!c_sione        jeq squad0;		i2cmp enra halt;                regtoti;        rcssp ptr5;        ;                       ;                               ;               ptr5;	ptr5!c_sitwo        jeq squad1;		i2cmp enra halt;                regtoti;        rcssp ptr5;        ;                       ;                               ;               ptr5;  	ptr5!0x700+0xD5        jeq squad2;		sneg enra halt;			regtoti;	rcssp ptr5;|* squad3 from here on:	;			;				;		ptr1;	;			tioe tisp halt;			titoreg;	rcssp ptr1;	ptr5!0x700+0xD6	;			;				regtotmp;	rcssp ptr5;	;			;				;		ptr4;	call idle1;		;				tmptoreg;	rcssp ptr4;squad2:	;			sneg halt;			;		;	;			;				;		ptr4;	;			tioe tisp halt;			titoreg;	rcssp ptr4;	ptr5!0x700+0xD6	;			sneg enra halt;			regtoti;	rcssp ptr5;	;			;				;		ptr1;	call idle1;		tioe tisp halt;			titoreg;	rcssp ptr1;squad1:        ;			snop enra halt;			regtoti;	rcssp ptr5;	;			;				;		ptr1;	;			tioe tisp halt;			titoreg;	rcssp ptr1;	ptr5!0x700+0xD6	;			sneg enra halt;			regtoti;	rcssp ptr5;	;			;				;		ptr4;	call idle1;		tioe tisp halt;			titoreg;	rcssp ptr4;squad0:	;			;				;		ptr5;		ptr5!0x700+0xD5	;			;				regtotmp;	rcssp ptr5;	;			;				;		ptr4;	;			;				tmptoreg;	rcssp ptr4;	ptr5!0x700+0xD6	;			;				regtotmp;	rcssp ptr5;	;			;				;		ptr1;	call idle1;		;				tmptoreg;	rcssp ptr1;sinckmode:|* 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+0xF2        ;                       i2cmp enrb halt;		regtoti;        rcssp ptr5;        ;                       ;				;               ptr2;        jne hang cstat;		sabs enra halt;			regtitmp;	rcssp ptr2;	;			sabs;				;		;	;			snop srccalu clkcc tioe tisp;	;		;	rtn;			i2cmp enrb tioe tisp halt;	;		ptr5;		ptr5!sinf|* Huge argument reductionr_argred:	;			;				;		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+0xD0|*  k1 = (n - 26) / 24, but since we're in round to nearest mode, (and the fact that if k1<0, k1=0|*  subtract 12 from the numerator before the division:  k1 = (n - 38) / 24	;			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;	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			halt;				;		ptr5;	ptr5!0x700+0xDA	;			i2cmp enra tioe tisp halt;	titoreg;	rcssp ptr5;	;			;				;		ptr5;	ptr5!szero	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xD0	jlt setk1eq0;		i2cmp enra halt;		regtoti;	rcssp ptr5;contdiv:|* Here we need to adjust the numerator again:|* k2 = (n +60) / 24 and since n is always positive:|* k2 = (n + 60 - 12) / 24	;			;				;		ptr5;	ptr5!c_si48	;			i2add enrb halt;		regtoti;	rcssp ptr5;	;			;				;		;	;			i2cmp enra tioe tisp halt;	;		;	;			;				;		ptr5;	ptr5!c_si24	;			idiv enrb halt;			regtoti;	rcssp ptr5;	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			halt;				;		ptr5;	ptr5!0x700+0xDB	;			i2cmp enra tioe tisp halt;	titoreg;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xDA	;			i2sub enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xDC	;			tioe tisp halt;			titoreg;	rcssp ptr5;|* Now do for loop, unrolled 8 times! i.e. up to i = 7|* For i= 0, q[0] = fv[k1] * x	;			;				;		ptr5;	ptr5!0x700+0xDA	call forfv;		i2cmp enra halt;		regtoti;	rcssp ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xE0	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;|* If i > k, continue algorithm.  i = 1 here:	;			;				;		ptr5;	ptr5!0x700+0xDC	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!c_sione	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xDA	jlt contalg;		i2add enra halt;		regtoti;	rcssp ptr5;	;			;				;		;	call forfv;		i2cmp enra tioe tisp halt;	;		;	;			dnop;				;		ptr5;	ptr5!0x700+0xE1	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;|* If i > k, continue algorithm.  i = 2 here:	;			;				;		ptr5;	ptr5!0x700+0xDC	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!c_sitwo	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xDA	jlt contalg;		i2add enra halt;		regtoti;	rcssp ptr5;	;			;				;		;	call forfv;		i2cmp enra tioe tisp halt;	;		;	;			dnop;				;		ptr5;	ptr5!0x700+0xE2	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;|* If i > k, continue algorithm.  i = 3 here:	;			;				;		ptr5;	ptr5!0x700+0xDC	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!c_sithree	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xDA	jlt contalg;		i2add enra halt;		regtoti;	rcssp ptr5;	;			;				;		;	call forfv;		i2cmp enra tioe tisp halt;	;		;	;			dnop;				;		ptr5;	ptr5!0x700+0xE3	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;|* If i > k, continue algorithm.  i = 4 here:	;			;				;		ptr5;	ptr5!0x700+0xDC	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!c_sifour	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xDA	jlt contalg;		i2add enra halt;		regtoti;	rcssp ptr5;	;			;				;		;	call forfv;		i2cmp enra tioe tisp halt;	;		;	;			dnop;				;		ptr5;	ptr5!0x700+0xE4	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;|* If i > k, continue algorithm.  i = 5 here:	;			;				;		ptr5;	ptr5!0x700+0xDC	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!c_sifive	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xDA	jlt contalg;		i2add enra halt;		regtoti;	rcssp ptr5;	;			;				;		;	call forfv;		i2cmp enra tioe tisp halt;	;		;	;			dnop;				;		ptr5;	ptr5!0x700+0xE5	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;|* If i > k, continue algorithm.  i = 6 here:	;			;				;		ptr5;	ptr5!0x700+0xDC	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!c_sisix	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xDA	jlt contalg;		i2add enra halt;		regtoti;	rcssp ptr5;	;			;				;		;	call forfv;		i2cmp enra tioe tisp halt;	;		;	;			dnop;				;		ptr5;	ptr5!0x700+0xE6	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;|* If i > k, continue algorithm.  i = 7 here:	;			;				;		ptr5;	ptr5!0x700+0xDC	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!c_siseven	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xDA	jlt contalg;		i2add enra halt;		regtoti;	rcssp ptr5;	;			;				;		;	call forfv;		i2cmp enra tioe tisp halt;	;		;	;			dnop;				;		ptr5;	ptr5!0x700+0xE7	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;|* It should never get here!	call hang;		;				;		;contalg:|*|* Now get q[0]:	;			;				;		ptr5;	ptr5!0x700+0xE0	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dnop enra loaddp halt;		regtoti;	rcslsw ptr5;	;			;				;		ptr5;	ptr5!d1o8	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dmul;				;		;	;			dnop;				;		;	;			dnop enra tioe timsw loaddp halt;;		;	;			dnop enra tioe tilsw loaddp halt;;		;	;			dnop;				;		ptr5;	ptr5!c_dtwo52	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcpmam enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!dzero	jgt nochange;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp enrb loaddp halt;		regtoti;	rcslsw ptr5;|* get AINT(RA)		;			dnop;				;		ptr5;ptr5!c_dtwo52	jlt q0minus;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;			;		;	;			dnop enra tioe timsw loaddp halt;;		;	;			dsub enra tioe tilsw loaddp halt;;		;	;			dsub;				;		ptr5;	ptr5!done	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub alubalu enra loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		;		;			dnop enra tioe timsw loaddp halt;;		;	;			dnop enra tioe tilsw loaddp halt;;		;	ptr5!deightnochange:	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dmul;				;		ptr5;	ptr5!0x700+0xE0	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;|* Now get new q[1]:	;			dnop;				;		ptr5;	ptr5!0x700+0xE1	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dnop enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!d1o8	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dmul;				;		;	;			dnop;				;		;	;			dnop enra tioe timsw loaddp halt;;		;	;			dnop enra tioe tilsw loaddp halt;;		;	;			dnop;				;		ptr5;	ptr5!c_dtwo52	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcpmam enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!dzero	jgt qnochange;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp enrb loaddp halt;		regtoti;	rcslsw ptr5;|* get AINT(RA)		;			dnop;				;		ptr5;	ptr5!c_dtwo52	jlt q1minus;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		;

⌨️ 快捷键说明

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