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

📄 dlnx.u

📁 操作系统SunOS 4.1.3版本的源码
💻 U
字号:
|*	@(#)dlnx.u 1.1 92/07/30 Copyright Sun Microsystems, Inc.  1988|*|*		Double Precision Log of X|*routine xd.ln 001000001111	;				regtotmp;	rcsmsw imm2;|* 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;        ;                       ;				;               ptr2;        jne hang cstat;		dnop enra loaddp halt;		regtitmp;	rcsmsw ptr2;	;			dnop enra loaddp halt;		regtitmp;	rcslsw ptr2;	ptr5!dzero	call cknanlt0;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;dlncont:|*  The masking of the exponent field of x has already started.  Get that result and right-shift 20|*  positions.  	;			;				;		;	;			i2cmp enra tioe tisp halt;	;		ptr5;	ptr5!c_si20	;			i2sftrl enrb halt;		regtoti;	rcssp ptr5;	;			;				;		;	;			i2cmp enra tioe tisp halt;	;		;	;			halt;				tmptoreg;	rcsmsw ptr1;	ptr5!c_sibias	;			halt;				tmptoreg;	rcslsw ptr1;	;			i2sub enrb halt;		regtoti;	rcssp ptr5;	;			i2sub;				;		ptr5;	ptr5!0x700+0xD0	;			dfloat enra tioe tisp halt;	titoreg;	rcssp ptr5;	;			dfloat enra tioe tisp halt;	;		;	;			dnop;				;		ptr5;	ptr5!0x700+0xD5	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;|*  k is saved in D0.|*  Now, set exp of (x) to 3FF.  As integers AND msw(x) with 000F FFFF, in order to clear the exponent field.|*  Then, OR 3ff0 0000 to the masked integer and then save as the new lsw(x).	;			i2cmp enra halt;		tmptoti;	rcsmsw ptr5;	;			;				;		ptr5;		ptr5!c_simsknoex	;			i2land enrb halt;		regtoti;	rcssp ptr5;	;			;				;		;	;			i2cmp enrb tioe tisp halt;	;		ptr5;		ptr5!c_sinewex	;			i2lor enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr1;	;			tioe tisp halt;			titoreg;	rcsmsw ptr1;	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr1;	;			dnop enra loaddp halt;		regtoti;	rcslsw ptr1;	;			dnop;				;		ptr5;	ptr5!dsqrt2	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!dhalf	jlt xltsqrt2;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dmul;				;		;	;			dnop;				;		ptr1;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;	;			dnop;				;		ptr5;	ptr5!c_sione	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xD0	;			i2add enra halt;		regtoti;	rcssp ptr5;	;			i2add;				;		ptr5;	ptr5!0x700+0xD0	;			dfloat enra tioe tisp halt;	titoreg;	rcssp ptr5;	;			dfloat enra tioe tisp halt;	;		;	;			dnop;				;		ptr5;	ptr5!0x700+0xD5	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr1;	call xltsqrt2;		dnop enra loaddp halt;		regtoti;	rcslsw ptr1;xltsqrt2:	;			dnop;				;		ptr5;	ptr5!done	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dsub enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dsub tioe timsw;		;		ptr5;	ptr5!0x700+0xD1	;			dnop enra enrb tioe timsw loaddp halt;titoreg;	rcsmsw ptr5;	;			dmul enra enrb tioe tilsw loaddp halt;titoreg;	rcslsw ptr5;	;			dmul;				;		ptr5;	ptr5!dhalf	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulbmul enra loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulbmul;			;		ptr5;	ptr5!0x700+0xD3	;			dnop halt;			;		ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop halt;			;		ptr5;	ptr5!c_dtwom29	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcpmam enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!c_sizero	jge fgetwom29;		i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;		ptr5!0x700+0xD0	;			i2cmp enra halt;		regtoti;	rcssp ptr5;		;			;				;		ptr5;		ptr5!0x700+0xD1	jne kne0;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;		;			dnop enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;		ptr5!dzero	;			dnop enra loaddp halt;		regtitmp;	rcsmsw ptr5;	;			dcmp enra loaddp halt;		regtitmp;	rcslsw ptr5;	;			dnop;				;		ptr5;		ptr5!0x700+0xD3	jeq retlnx;		dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;|* if f = 0.0 then return 0.0, else return f -hfsq	;			drsub enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr1;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;kne0:	;			dnop;				;		ptr5;		ptr5!0x700+0xD5	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dnop enra loaddp halt;		regtoti;	rcslsw ptr5;	;			;				;		ptr5;		ptr5!c_dln2lo	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dmul;				;		ptr5;		ptr5!0x700+0xD3	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			drsub aluamul;			;		;	;			dsub aluacreg alubalu halt;	;		;	;			dsub aluacreg alubalu halt;	;		;	;			dnop;				;		ptr5;		ptr5!c_dln2hi	;			dnop enrb srccalu clkcc loaddp halt;regtoti;	rcsmsw ptr5;	;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dmul;				;		;	;			dsub aluamul alubcreg halt;	;		;	;			dsub aluamul alubcreg halt;	;		;	;			dsub aluamul alubcreg;		;		ptr1;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;fgetwom29:	;			;				;		ptr5;		ptr5!0x700+0xD1	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dnop enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;		ptr5!dtwo	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		;	;			ddiv enrb tioe timsw loaddp halt;;		;	;			ddiv enrb tioe tilsw loaddp halt;;		;			;			dnop;				;		;	;			dnop halt;			;		;	;			dnop;				;		;	;			dnop;				;		;	;			dnop;				;		;	;			dmul;				;		;	;			dnop halt;			;		ptr5;	ptr5!0x700+0xD4	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	;			dnop halt;			;		ptr5;	;			dnop enra enrb loaddp halt;	regtoti;	rcsmsw ptr5;	;			dmul enra enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul;				;		ptr5;	ptr5!c_dtwom19	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp aluamul enrb srccmul clkcc loaddp halt;regtoti;rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!c_dlnl_7	jlt smallR;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulacreg;			;		ptr5;	ptr5!c_dlnl_6	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulaalu mulbcreg;		;		;	;			dmul mulaalu mulbcreg;		;		ptr5;	ptr5!c_dlnl_5	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulaalu mulbcreg;		;		;	;			dmul mulaalu mulbcreg;		;		ptr5;	ptr5!c_dlnl_4	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulaalu mulbcreg;		;		;	;			dmul mulaalu mulbcreg;		;		ptr5;	ptr5!c_dlnl_3	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulaalu mulbcreg;		;		;	;			dmul mulaalu mulbcreg;		;		ptr5;	ptr5!c_dlnl_2	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulaalu mulbcreg;		;		;	;			dmul mulaalu mulbcreg;		;		ptr5;	ptr5!c_dlnl_1	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulaalu mulbcreg;		;		;	;			dmul mulaalu mulbcreg;		;		ptr5;	ptr5!0x700+0xD2	;			dnop halt;			;		ptr5;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	call kis0;		dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;smallR:	;			dnop;				;		ptr5;	ptr5!c_dlnl_2	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulacreg;			;		ptr5;	ptr5!c_dlnl_1	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulaalu mulbcreg;		;		;	;			dmul mulaalu mulbcreg;		;		ptr5;	ptr5!0x700+0xD2	;			dnop halt;			;		ptr5;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	call kis0;		dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;kis0:	;			halt;				;		ptr5;	ptr5!c_sizero	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xD0	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!0x700+0xD2	jeq shortret;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dnop enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD3	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dadd;				;		ptr5;	ptr5!0x700+0xD4	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulaalu enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulaalu;			;		ptr5;	ptr5!0x700+0xD5	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dnop enra srccmul clkcc loaddp halt;regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!c_dln2lo	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dmul;				;		;	;			dadd aluamul alubcreg halt;	;		ptr5;	ptr5!0x700+0xD3	;			dadd aluamul alubcreg halt;	;		ptr5;	ptr5!0x700+0xD3	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dsub alubalu enra loaddp halt;	regtoti;	rcslsw ptr5;	;			dsub alubalu;			;		;	;			dnop enrb tioe timsw loaddp halt;;		;	;			dnop enrb tioe tilsw loaddp halt;;		ptr5;	ptr5!0x700+0xD1	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub enra loaddp halt;		regtoti;	rcslsw ptr5;	;			drsub;				;		ptr5;	ptr5!c_dln2hi	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dnop enra srccalu clkcc loaddp halt;regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD5	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dmul;				;		;	;			dsub aluamul alubcreg halt;	;		;	;			dsub aluamul alubcreg halt;	;		;	;			dnop;				;		ptr1;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;shortret:	;			dnop;				;		ptr5;	ptr5!0x700+0xD3	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dadd;				;		ptr5;	ptr5!0x700+0xD4	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulaalu enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulaalu;			;		ptr5;	ptr5!0x700+0xD3	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			drsub aluamul;			;		;	;			dnop enrb tioe timsw loaddp halt;;		;	;			dnop enrb tioe tilsw loaddp halt;;		ptr5;	ptr5!0x700+0xD1	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dsub enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr1;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;cknanlt0:|* Compare x to 0.  If x < = 0 then BAILOUT.  if x = NaN {x !<= 0, x !> 0 ie. compares|* unordered, then NAN, which in our case is BAILOUT.	;			dcmp enrb loaddp halt;		regtoti;	rcslsw ptr5;		;			dcmp;				;		ptr5;		ptr5!dinf	jle bail.out;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp enrb loaddp halt;		regtoti;	rcslsw ptr5;	jgt ckinf;		dcmp;				;		;	;			;				;		ptr5;	ptr5!c_ssin	call bail.out;		;				;		;ckinf:	jeq retlnx cstat;	smul enra enrb halt;		regtoti;	rcssp ptr5;		;			;				;		ptr2;	jtierr bail.out cstat;	i2cmp enra halt;		regtoti;	rcsmsw ptr2;	;			;				;		ptr5;	ptr5!dinf	call dlncont;		i2land enrb halt;		regtoti;	rcsmsw ptr5;retlnx:	;			;				;		ptr1;	;			;				tmptoreg;	rcsmsw ptr1;	call idle1;		;				tmptoreg;	rcslsw ptr1;

⌨️ 快捷键说明

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