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

📄 slnx.u

📁 操作系统SunOS 4.1.3版本的源码
💻 U
字号:
|*	@(#)slnx.u 1.1 92/07/30 Copyright Sun Microsystems, Inc.  1988|*|*		Single Precision ln (x)|*routine xs.ln 001000001110	;				regtotmp;	rcssp imm2;	call ckmode;		;				;		;|* get: i = ( (j+0x004afb0c)&0xff800000 ) - 0x3f800000|* where j = an integer corresponding to the 32 bits of x	;			i2cmp enra halt;		regtoti;	rcssp ptr2;	;			;				;		ptr5;		ptr5!c_slnx_cnst0	;			i2add enrb halt;		regtoti;	rcssp ptr5;	;			tioe tisp;			;		;	;			i2cmp enrb tioe tisp halt;	;		;	;			;				;		ptr5;		ptr5!c_slnx_cnst1	;			i2land enra halt;		regtoti;	rcssp ptr5;	;			tioe tisp;			;		;	;			i2cmp enra tioe tisp halt;	;		;	;			;				;		ptr5;		ptr5!c_slnx_cnst2	;			i2sub enrb halt;		regtoti;	rcssp ptr5;	;			tioe tisp;			;		ptr5;		ptr5!0x700+0xD0|* Store i in D0 and in RA	;			i2cmp enra tioe tisp halt;	titoreg;	rcssp ptr5;	;			;				;		ptr5;		ptr5!szero	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr2;	jeq primary;		i2cmp enra halt;		regtoti;	rcssp ptr2;|* Comparing x to 0	;			;				;		ptr5;		ptr5!sinf	jle bail.out;		i2cmp enrb halt;		regtoti;	rcssp ptr5;|* Comparing x to infinity	;			;				;		ptr5;		ptr5!sminnorm	jlt xsubnorm;		i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr2;			;			enra enrb halt;			tmptoti;	rcssp;	;			;				;		;	jne sretnan;		halt;				;		;	;			;				;		ptr1;	call idle1;		;				tmptoreg;	rcssp ptr1;xsubnorm:|* x is a subnormal -- need to raise x by 2**24	jge preprimary;		swdnrm enra halt;		regtoti;	rcssp ptr2;	;			swdnrm halt;			;		ptr5;	ptr5!c_slnxtwo24	;			smwa mulaalu enrb halt;		regtoti;	rcssp ptr5;	;			smwa tioe tisp;			;		ptr5;	ptr5!0x700+0xE0	;			i2cmp enra tioe tisp halt;	titoreg;	rcssp ptr5;	;			;				;		ptr5;		ptr5!c_slnx_cnst0	;			i2add enrb halt;		regtoti;	rcssp ptr5;	;			tioe tisp;			;		;	;			i2cmp enrb tioe tisp halt;	;		;	;			;				;		ptr5;		ptr5!c_slnx_cnst1	;			i2land enra halt;		regtoti;	rcssp ptr5;	;			tioe tisp;			;		;	;			i2cmp enra tioe tisp halt;	;		;	;			;				;		ptr5;		ptr5!c_slnx_cnst2	;			i2sub enrb halt;		regtoti;	rcssp ptr5;	;			tioe tisp;			;		ptr5;	ptr5!0x700+0xD0| j = j - i	;			i2cmp enrb tioe tisp halt;	titoreg;	rcssp ptr5;	;			;				;		ptr5;   ptr5!0x700+0xE0	;			i2sub enra halt;		regtoti;	rcssp ptr5;	;			tioe tisp;			;		ptr5;		ptr5!0x700+0xD1	;			tioe tisp halt;			titoreg;	rcssp ptr5;	;			;				;		ptr5;		ptr5!0x700+0xD0	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;		ptr5!c_siexp23| i = (i>>23) - 24	;			idiv enrb halt;			regtoti;	rcssp ptr5;	lpreg!2	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			tioe tisp halt;			;		;	;			i2cmp enra tioe tisp halt;	;		;	;			;				;		ptr5;		ptr5!c_si24	;			i2sub enrb halt;		regtoti;	rcssp ptr5;	;			tioe tisp;			;		ptr5;		ptr5!0x700+0xD0	call primary2;		tioe tisp halt;		 	titoreg;	rcssp ptr5;preprimary:|* j = j-i, i = i>>23  	;			;				;		ptr2;	;			i2cmp enra halt;		regtoti;	rcsmsw ptr2;	;			;				;		ptr5;		ptr5!0x700+0xD0	;			i2sub enrb halt;		regtoti;	rcssp ptr5;	;			tioe tisp;			;		ptr5;		ptr5!0x700+0xD1	;			tioe tisp halt;			titoreg;	rcssp ptr5;	;			;				;		ptr5;		ptr5!0x700+0xD0	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;		ptr5!c_siexp23| i = (i>>23) - 24	;			idiv enrb halt;			regtoti;	rcssp ptr5;	lpreg!2	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			;				;		;	;			tioe tisp halt;			;		ptr5;		ptr5!0x700+0xD0	call primary2;		tioe tisp halt;			titoreg;	rcssp ptr5;primary:	;			;				;		ptr5;		ptr5!0x700+0xD1	call primary2;		;				tmptoreg;	rcssp ptr5;primary2:|* Check for inexact first	;			;				;		ptr5;		ptr5!c_ssin	;			smul enra enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;		ptr5!c_slnx_cnst2	jtierr bail.out cstat;	i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;		ptr5!0x700+0xD1	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;		ptr5!c_slnx_ap0	jeq almexit;		i2cmp halt;			regtotmp;	rcssp ptr5;	;			;				;		;	jlt getan;		halt;				;		;	;			;				;		ptr5;		ptr5!0x700+0xD2	;			;				tmptoreg;	rcssp ptr5;slnxcont:	;			;				;		ptr5;		ptr5!0x700+0xD1|*  x = j - one|*  z = x * x and store in C reg.	;			enra halt;			regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!sone	;			ssub enrb halt;			regtoti;	rcssp ptr5;	;			ssub;				;		;	;			srccalu clkcc tioe tisp;	;		ptr5;   ptr5!0x700+0xE0	;			tioe tisp halt;			titoreg;	rcssp ptr5;	;			;				;		ptr5;		ptr5!0x700+0xD1	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;		ptr5!c_slnx_cnst3	;			i2land enrb halt;		regtoti;	rcssp ptr5;	;			tioe tisp;			;		;	;			i2cmp enra tioe tisp halt;	;		;	;			;				;		ptr5;		ptr5!c_slnx_cnst2	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;		ptr5!c_slnx_cnst4	jeq shortexp;		i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;		ptr5!c_slnx_cnst2	jeq shortexp;		i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;		ptr5!0x700+0xD1	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	|* if j < 0x3f80000 then a[] = an[], else a[] = ap[].	;			;				;		ptr5;	ptr5!c_slnx_ap5	jlt doan;		smul mulacreg enrb halt;	regtoti;	rcssp ptr5;	;			halt;				;		ptr5;	ptr5!c_slnx_ap4		;			sadd aluamul enrb halt;		regtoti;	rcssp ptr5;	;			halt;				;		;	;			smul mulaalu mulbcreg;		;		ptr5;	ptr5!c_slnx_ap3	;			sadd aluamul enrb halt;		regtoti;	rcssp ptr5;	;			halt;				;		;	;			smul mulaalu mulbcreg;		;		ptr5;	ptr5!c_slnx_ap2	;			sadd aluamul enrb halt;		regtoti;	rcssp ptr5;	;			halt;				;		;	;			smul mulaalu mulbcreg;		;		ptr5;	ptr5!c_slnx_ap1	;			sadd aluamul enrb halt;		regtoti;	rcssp ptr5;	;			halt;				;		;	;			smul mulaalu mulbcreg;		;		ptr5;	ptr5!c_slnx_ap0	;			sadd aluamul enrb halt;		regtoti;	rcssp ptr5;	;			smul mulaalu mulbcreg;		;		;contap:	;			halt;				;		ptr5;	ptr5!shalf	;			srsub aluamul enrb halt;	regtoti;	rcssp ptr5;	;			halt;				;		;	;			smul mulaalu mulbcreg;		;		;	;			smul mulacreg mulbmul;		;		;	;			srsub aluamul alubcreg halt;	;		;	;			srsub aluamul alubcreg halt;	;		;	;			tioe tisp halt;			;		;   	;			tioe tisp halt;			titotmp;	rcssp;	;			dnop;				;		;	;			scvtd enra loaddp halt;		tmptoti;	rcssp;	;			scvtd enra loaddp halt;		tmptoti;	rcssp;	;			scvtd tioe timsw;		;		ptr5;	ptr5!0x700+0xE0	;			tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			tioe tilsw halt;		titoreg;	rcslsw ptr5;exit:	;			;				;		ptr5;		ptr5!0x700+0xD0	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;		ptr5!c_sizero	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xD0	jeq rettoidle;		dfloat enra loaddp halt;	regtoti;	rcssp ptr5;	;			dfloat enra loaddp halt;	regtoti;	rcssp ptr5;	;			dfloat;				;		ptr5;	ptr5!c_dlnx_ln2	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulaalu enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulaalu;			;		ptr5;   ptr5!0x700+0xE0	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop tioe timsw;		;		;	;			dnop enra tioe timsw loaddp halt;;		;	;			dcvts enra tioe tilsw loaddp halt;;		;	;			tioe tisp;			;		ptr1;	call idle1;		tioe tisp halt;			titoreg;	rcssp ptr1;doan:		;			;				;		ptr5;	ptr5!c_slnx_an5	;			smul mulacreg enrb halt;	regtoti;	rcssp ptr5;	;			halt;				;		ptr5;	ptr5!c_slnx_an4	;			sadd aluamul enrb halt;		regtoti;	rcssp ptr5;	;			halt;				;		;	;			smul mulaalu mulbcreg;		;		ptr5;	ptr5!c_slnx_an3	;			sadd aluamul enrb halt;		regtoti;	rcssp ptr5;	;			halt;				;		;	;			smul mulaalu mulbcreg;		;		ptr5;	ptr5!c_slnx_an2	;			sadd aluamul enrb halt;		regtoti;	rcssp ptr5;	;			halt;				;		;	;			smul mulaalu mulbcreg;		;		ptr5;	ptr5!c_slnx_an1	;			sadd aluamul enrb halt;		regtoti;	rcssp ptr5;	;			halt;				;		;	;			smul mulaalu mulbcreg;		;		ptr5;	ptr5!c_slnx_an0	;			sadd aluamul enrb halt;		regtoti;	rcssp ptr5;	call contap;		smul mulaalu mulbcreg;		;		;almexit:	;			;				;		ptr5;		ptr5!szero	;			;				regtotmp;	rcssp ptr5;	;			;				;		ptr5;   ptr5!0x700+0xE0	;			;				tmptoreg;	rcsmsw ptr5;	call exit;		;				tmptoreg;	rcslsw ptr5;shortexp:	;			;				;		ptr5;		ptr5!0x700+0xD2	;			smul mulacreg enrb halt;	regtoti;	rcssp ptr5;	;			halt;				;		ptr5;		ptr5!shalf	;			srsub aluamul enrb halt;	regtoti;	rcssp ptr5;	;			halt;				;		;	;			smul mulaalu mulbcreg;		;		;	;			smul mulacreg mulbmul;		;		;	;			srsub aluamul alubcreg halt;	;		;	;			srsub aluamul alubcreg halt;	;		;	;			tioe tisp halt;			;		;   	;			tioe tisp halt;			titotmp;	rcssp;	;			dnop;				;		;	;			scvtd enra loaddp halt;		tmptoti;	rcssp;	;			scvtd enra loaddp halt;		tmptoti;	rcssp;	;			scvtd tioe timsw;		;		ptr5;	ptr5!0x700+0xE0	;			tioe timsw halt;		titoreg;	rcsmsw ptr5;	call exit;		tioe tilsw halt;		titoreg;	rcslsw ptr5;getan:	;			;				;		ptr5;		ptr5!c_slnx_an0	;			;				regtotmp;	rcssp ptr5;	;			;				;		ptr5;		ptr5!0x700+0xD2	call slnxcont;		;				tmptoreg;	rcssp ptr5;rettoidle:	;			;				;		ptr1;	call idle1;		;				tmptoreg;	rcssp ptr1;

⌨️ 快捷键说明

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