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

📄 tran.u

📁 操作系统SunOS 4.1.3版本的源码
💻 U
📖 第 1 页 / 共 5 页
字号:
	;		;			;		;	rcssp ptr5;	ptr5!s19o16|*   abs(operand) <= 7/16	;		lbs csla;		reg;		;	;	call wait3;	lf dcmpm csla;		;		;	;	call wait1;	csuxa umsw;		;		;	;	jlt dreturnx;	woea;			;		;	;|*   small < abs(operand) <= 7/16|		put ptr2 into "t"	;		;			;		recclk;	rcsmsw ptr2;	;		;			;		recclk;	rcslsw ptr2;	ptr5!c_dSCRATCH_5	;		;			;		;	ptr5;	;		;			;		recoe;	ramwe rcsmsw ptr5;	;		;			;		recoe recclk;ramwe ptr5;	;		;			;		recoe;	ramwe rcslsw ptr5;	;		;			;		recoe;	ramwe ptr5;	ptr5!c_datan_00|		jump to compute atan with hi = 0, lo = 0	call xda.getz;	;			;		;	;xda.e2:|*   7/16 < abs(operand) <= 39/16	;		;			;		;	rcssp ptr5;	ptr5!s11o16	;		lbs csla;		reg;		;	;	call wait3;	lf dcmpm csla;		;		;	;	call wait1;	csuxa umsw;		;		;	;	jgt xda.e3;	woea;			;		;	;	;		;			;		;	rcssp ptr5;	ptr5!stwo|*   7/16 < abs(operand) <= 19/16	;		lbs csla;		reg;		;	;	call wait3;	lf dcmpm csla;		;		;	;	call wait1;	csuxa umsw;		;		;	;	jgt xda.e4;	woea;			;		;	;|*   7/16 < abs(operand) <= 11/16	;		;			;		;	rcssp ptr5;|		start y+2	;		lbs csla;		reg;		;	;	call wait3;	lf daddm csla;		;		;	;	;		csuxa umsw;		;		;	;	ptr5!c_dSCRATCH_5	;		csuxa ulsw;		;		;	ptr5;|		write y+2 to temp	;		woea;			dtor;		;	ramwe rcsmsw ptr5;	;		woea;			dtor;		;	ramwe rcslsw ptr5;	;		;			dtor;		;	ramwe ptr5;	;		;			;		;	rcsmsw ptr2;	;		lbm csla;		reg;		;	rcslsw ptr2;	ptr5!sone	call wait3;	lblf daddm csla;	reg;		;	;	;		lam csla csuxa umsw;	;		;	rcssp ptr5;	;		lbs csla;		reg;		;	;|		start (y+y) - 1	call wait3;	lalf dsub csla csuxa ulsw;;		;	;	;		lam csla csuxa umsw;	;		;	;	ptr5!c_dSCRATCH_5	;		lal csla csuxa ulsw;	;		;	rcsmsw ptr5;	;		lbm csla;		reg;		;	rcslsw ptr5;	lpreg!28	call wait;	lblf ddiv csla;		reg;		;	;	;		csuxa umsw;		;		;	;	ptr5!c_dSCRATCH_5	;		csuxa ulsw;		;		;	ptr5;|		pass value of "t"	;		woea;			dtor;		;	ramwe rcsmsw ptr5;	;		woea;			dtor;		;	ramwe rcslsw ptr5;	;		;			dtor;		;	ramwe ptr5;|		note: we check the msw as a sp!	;		;			;		;	rcsmsw ptr2;	call wait3;	lasf scmp0 csla;	reg;		;	;	call wait1;	csuxa usp;		;		;	;	jgt xda.getz;	woea;			;		;	;	;		;			;		;	;	ptr5!c_datan_hhilo	;		;			;		;	;	ptr5!c_dSCRATCH_5	;		;			;		;	rcsmsw ptr5;	;		lam csla;		reg;		;	rcslsw ptr5;	call wait3;	lalf dneg csla;		reg;		;	;	;		csuxa umsw;		;		;	;	ptr5!c_dSCRATCH_5	;		csuxa ulsw;		;		;	ptr5;|		pass value of -"t" and -hi, -lo	;		woea;			dtor;		;	ramwe rcsmsw ptr5;	;		woea;			dtor;		;	ramwe rcslsw ptr5;	;		;			dtor;		;	ramwe ptr5;	ptr5!c_datan_mhhilo	call xda.getz;	;			;		;	;xda.e4:|*   11/16 < abs(operand) <= 19/16	;		;			;		;	;	ptr5!sone	;		;			;		;	rcssp ptr5;|		start y+1	;		lbs csla;		reg;		;	;	call wait3;	lf daddm csla;		;		;	;	;		lf dsubm csla csuxa umsw;;		;	;	ptr5!c_dSCRATCH_5	;		csuxa ulsw;		;		;	ptr5;|		write y+1 to temp	;		woea;			dtor;		;	ramwe rcsmsw ptr5;	;		woea;			dtor;		;	ramwe rcslsw ptr5;	;		lam csla csuxa umsw;	dtor;		;	ramwe ptr5;	;		lal csla csuxa ulsw;	;		;	rcsmsw ptr5;	;		lbm csla;		reg;		;	rcslsw ptr5;	lpreg!28	call wait;	lblf ddiv csla;		reg;		;	;	;		csuxa umsw;		;		;	;	ptr5!c_dSCRATCH_5	;		csuxa ulsw;		;		;	ptr5;|		pass value of "t"	;		woea;			dtor;		;	ramwe rcsmsw ptr5;	;		woea;			dtor;		;	ramwe rcslsw ptr5;	;		;			dtor;		;	ramwe ptr5;|		note: we check the msw as a sp!	;		;			;		;	rcsmsw ptr2;	call wait3;	lasf scmp0 csla;	reg;		;	;	call wait1;	csuxa usp;		;		;	;	jgt xda.getz;	woea;			;		;	;	;		;			;		;	;	ptr5!c_datan_40	;		;			;		;	;	ptr5!c_dSCRATCH_5	;		;			;		;	rcsmsw ptr5;	;		lam csla;		reg;		;	rcslsw ptr5;	call wait3;	lalf dneg csla;		reg;		;	;	;		csuxa umsw;		;		;	;	ptr5!c_dSCRATCH_5	;		csuxa ulsw;		;		;	ptr5;|		pass value of -"t" and -hi, -lo	;		woea;			dtor;		;	ramwe rcsmsw ptr5;	;		woea;			dtor;		;	ramwe rcslsw ptr5;	;		;			dtor;		;	ramwe ptr5;	ptr5!c_datan_m40	call xda.getz;	;			;		;	;xda.e3:|*   19/16 < abs(operand) <= 39/16	;		;			;		;	rcsmsw ptr2;	;		lbm csla;		reg;		;	rcslsw ptr2;	ptr5!stwo	call wait3;	lblf daddm csla;	reg;		;	;	;		lbm csla csuxa umsw;	;		;	;	call wait3;	lblf daddm csla csuxa ulsw;;		;	;	;		lam csla csuxa umsw;	;		;	rcssp ptr5;	;		lbs csla;		reg;		;	;|		start (y+y+y) + 2	call wait3;	lalf dadd csla csuxa ulsw;;		;	;	;		csuxa umsw;		;		;	;	ptr5!c_dSCRATCH_5	;		csuxa ulsw;		;		;	ptr5;|		write (y+y+y) + 2 to temp	;		woea;			dtor;		;	ramwe rcsmsw ptr5;	;		woea;			dtor;		;	ramwe rcslsw ptr5;	;		;			dtor;		;	ramwe ptr5;	;		;			;		;	rcsmsw ptr2;	ptr5!sone	;		lam csla;		reg;		;	rcssp ptr5;	;		lbs csla;		reg;		;	rcslsw ptr2;|		start y - 1	call wait3;	lalf dsubm csla;	reg;		;	;	;		lam csla csuxa umsw;	;		;	;	;		lal csla csuxa ulsw;	;		;	;	;		lbm csla csuxa umsw;	;		;	;	ptr5!sone|		start z+z	call wait3;	lblf dadd csla csuxa ulsw;;		;	;	;		lam csla csuxa umsw;	;		;	rcssp ptr5;	;		lbs csla;		reg;		;	;	call wait3;	lalf dsub csla csuxa ulsw;;		;	;	;		lam csla csuxa umsw;	;		;	;	ptr5!c_dSCRATCH_5	;		lal csla csuxa ulsw;	;		;	rcsmsw ptr5;	;		lbm csla;		reg;		;	rcslsw ptr5;	lpreg!28	call wait;	lblf ddiv csla;		reg;		;	;	;		csuxa umsw;		;		;	;	ptr5!c_dSCRATCH_5	;		csuxa ulsw;		;		;	ptr5;|		pass value of "t"	;		woea;			dtor;		;	ramwe rcsmsw ptr5;	;		woea;			dtor;		;	ramwe rcslsw ptr5;	;		;			dtor;		;	ramwe ptr5;|		note: we check the msw as a sp!	;		;			;		;	rcsmsw ptr2;	call wait3;	lasf scmp0 csla;	reg;		;	;	call wait1;	csuxa usp;		;		;	;	jgt xda.getz;	woea;			;		;	;	;		;			;		;	;	ptr5!c_datan_lhilo	;		;			;		;	;	ptr5!c_dSCRATCH_5	;		;			;		;	rcsmsw ptr5;	;		lam csla;		reg;		;	rcslsw ptr5;	call wait3;	lalf dneg csla;		reg;		;	;	;		csuxa umsw;		;		;	;	ptr5!c_dSCRATCH_5	;		csuxa ulsw;		;		;	ptr5;|		pass value of -"t" and -hi, -lo	;		woea;			dtor;		;	ramwe rcsmsw ptr5;	;		woea;			dtor;		;	ramwe rcslsw ptr5;	;		;			dtor;		;	ramwe ptr5;	ptr5!c_datan_mlhilo	call xda.getz;	;			;		;	;xda.e1:|*   abs(operand) > 39/16	;		;			;		;	rcssp ptr5;	ptr5!dzero	;		lbs csla;		reg;		;	;	call wait3;	lf dcmpm csla;		;		;	;	call wait1;	csuxa umsw;		;		;	;	jgt xda.e5;	woea;			;		;	;|*   39/16 < abs(operand) <= big	;		;			;		;	;	;		;			;		;	rcsmsw ptr2;	ptr5!smone	;		lbm csla;		reg;		;	rcssp ptr5;	;		las csla;		reg;		;	rcslsw ptr2;	lpreg!28	call wait;	lblf ddiv csla;		reg;		;	;	;		csuxa umsw;		;		;	;	ptr5!c_dSCRATCH_5	;		csuxa ulsw;		;		;	ptr5;|		pass value of "t"	;		woea;			dtor;		;	ramwe rcsmsw ptr5;	;		woea;			dtor;		;	ramwe rcslsw ptr5;	;		;			dtor;		;	ramwe ptr5;xda.e6:	;		;			;		;	rcsmsw ptr2;	;		lam csla;		reg;		;	rcslsw ptr2;	call wait3;	lalf dcmp0 csla;	reg;		;	;	call wait1;	csuxa usp;		;		;	;	jgt xda.getz;	woea;			;		;	;	;		;			;		;	;	ptr5!c_datan_20	;		;			;		;	;	ptr5!c_datan_m20	call xda.getz;	;			;		;	;xda.e5:|*   abs(operand) > big|		(we already checked for NaN's)	;		;			;		recclk;	rcsmsw ptr5;	;		;			;		recclk;	rcslsw ptr5;	ptr5!c_dSCRATCH_5	;		;			;		;	ptr5;	;		;			;		recoe;	ramwe rcsmsw ptr5;	;		;			;		recoe recclk;ramwe ptr5;	;		;			;		recoe;	ramwe rcslsw ptr5;	call xda.e6;	;			;		recoe;	ramwe ptr5;|*   finished with argument reduction;  compute z nowxda.getz:|		We need to get at (ptr5) and (ptr5-) so we copy (ptr5)|		to ptr1, and (ptr5-) to 3	;		;			;		recclk;	rcsmsw ptr5;	;		;			;		recclk;	rcslsw ptr5;	ptr5-	;		;			;		;	ptr1;	;		;			;		recoe;	ramwe rcsmsw ptr1;	;		;			;		recoe recclk;ramwe ptr1;	;		;			;		recoe;	ramwe rcslsw ptr1;	;		;			;		recoe;	ramwe ptr1;	;		;			;		recclk;	rcsmsw ptr5;	;		;			;		recclk;	rcslsw ptr5;	ptr5!c_dSCRATCH_3	;		;			;		;	ptr5;	;		;			;		recoe;	ramwe rcsmsw ptr5;	;		;			;		recoe recclk;ramwe ptr5;	;		;			;		recoe;	ramwe rcslsw ptr5;	;		;			;		recoe;	ramwe ptr5;	ptr5!c_dSCRATCH_5	;		;			;		;	rcsmsw ptr5;	;		lam cslm;		reg;		;	rcslsw ptr5;	;		lal cslm;		reg;		;	rcslsw ptr5;	lpreg!11	;		lbl cslm;		reg;		;	rcsmsw ptr5;	ptr5!c_datan_c11	call wait4;	lbmf dmul cslm;		reg;		;	;	call dexpansion2;;			;		;	;	call wait4;	;			;		;	;	;		lam cslm csuxm umsw;	;		;	;	ptr5!c_dSCRATCH_5	;		lal cslm csuxm ulsw;	;		;	rcslsw ptr5;	;		lbl cslm;		reg;		;	rcsmsw ptr5;	ptr5!c_dSCRATCH_3|		start t*z	call wait3;	lbmf dmul cslm;		reg;		;	;	;		;			;		;	rcsmsw ptr5;	;		lam csla;		reg;		;	rcslsw ptr5;	;		lal csla csuxm umsw;	reg;		;	;	;		csuxm ulsw;		;		;	;	;		lbm csla woem;		;		;	;|		start z = lo - z	call wait3;	lblf dsub csla woem;	;		;	;	;		lam csla csuxa umsw;	;		;	;	ptr5!c_dSCRATCH_5	;		lal csla csuxa ulsw;	;		;	rcsmsw ptr5;	;		lbm csla;		reg;		;	rcslsw ptr5;|		start z = z + t	call wait3;	lblf dadd csla;		reg;		;	;	;		lbm csla csuxa umsw;	;		;	;	;		lbl csla csuxa ulsw;	;		;	rcsmsw ptr1;	;		lam csla;		reg;		;	rcslsw ptr1;|		start z = hi + z	call drtn.inx.soon;lalf dadd csla;	reg;		;	;|*|*		Single Precision e**x-1 Instruction|*routine xs.ex1 w01000001000 las ssub	call stran.start;;			;		;	;	;		;			;		;	;	ptr5!c_s87	;		;			;		;	rcssp ptr5;	call wait3;	lbsf scmpm csla;	reg;		;	;	;		csuxa usp;		;		;	;	lpreg!9	;		csuxa usp;		;		;	;	ptr5!c_stwopm26|*  if the operand was a NaN, then branch	jwerr soberr;	woea;			;		;	;|*  if abs(operand) > 87 then branch	jgt soberr;	woea;			;		;	;|*   abs(operand) <= 87	;		;			;		;	rcssp ptr5;	call wait3;	lbsf scmpm csla;	reg;		;	;	call wait1;	csuxa usp;		;		;	;	jgt xsx1.e1;	woea;			;		;	;	call sreturnx;	;			;		;	;xsx1.e1:|		* 2**-26 < abs(x) < 87|		if the mode register is not set up with the correct data|		then punt	;		;			;		;	;	ptr5!c_dmode	;		;			;		;	rcssp ptr5;	ptr5!c_dmode_cor	;		las csla;		reg;		;	rcssp ptr5;	call wait3;	lbsf scmp csla;		reg;		;	;	call wait1;	csuxa usp;		;		;	;	jne soberr;	woea;			;		;	;|		proceed with expansion	call sexpn;	;			;		;	;	call sexps;	;			;		;	;	;		;			;		;	;	ptr5!c_dSCRATCH_0	;		;			;		;	rcssp ptr5;	ptr5!c_dSCRATCH_1	call wait3;	lasf scmp0 csla;	reg;		;	;	call wait1;	csuxa usp;		;		;	;	jne xsx1.e2;	woea;			;		;	;	;		;			;		;	rcsmsw ptr5;|*   n == 0, return real(e)	;		lam csla;		reg;		;	rcslsw ptr5;	call salu.inx1;	lalf dcvts csla;	reg;		;	;xsx1.e2:	call stwoton;	;			;		;	;|stwoton leaves ptr5 at c_dSCRATCH_1 (e)	;		;			;		;	rcsmsw ptr5;	;		lam cslm;		reg;		;	rcslsw ptr5;	;		lal cslm;		reg;		;	;	ptr5!sone|		*start dble(p)	;		lasf scvtd csla csuxa ulsw;;		;	rcssp ptr5;	call wait2;	lbs csla;		reg;		;	;|		*start dble(p) - 1(double)	;		lf dsub csla csuxa ulsw;;		;	;	;		csuxa umsw;		;		;	;|		*start dble(p) * e	;		lblf dmul cslm woea;	;		;	;	;		lbm cslm woea;		;		;	;	;		lam csla csuxa umsw;	;		;	;	call wait2;	lal csla csuxa ulsw;	;		;	;	;		csuxm umsw;		;		;	;	;		csuxm ulsw;		;		;	;	;		lbm csla woem;		;		;	;	call wait3;	lblf dadd csla woem;	;		;	;	;		lam csla csuxa umsw;	;		;	;	call salu.inx1;	lalf dcvts csla csuxa ulsw;;		;	;|*|*	subroutine twoton|* Enter with:|*	n in c_dSCRATCH_0|*|* Exit with:|*	twoton starting calculation in ALU (MUST unload with ulsw!)|*	ptr5 pointing at c_dSCRATCH_1|*stwoton:	;		;			;		;	;	ptr5!c_dSCRATCH_0	;		;			;		;	rcssp ptr5;	ptr5!c_s127	;		las csla;		reg;		;	rcssp ptr5;|		*start (n + 127)	;		lbsf sadd csla;		reg;		;	;	;		;			;		;	;	ptr5!c_stwop23	;		;			;		;	rcssp ptr5;	;		las cslm;		reg;		;	;	;		csuxa usp;		;		;	;	;		;			;		;	;|		*start ((2**23) * (n + 127))	;		lbsf smul cslm woea;	;		;	;	;		;			;		;	;	;		;			;		;	;	;		;			;		;	;	;		csuxm usp;		;		;	;	;		;			;		;	;	ptr5!c_dSCRATCH_1	rtn;		lasf scvtint csla woem;	;		;	;|*|*	subroutine expn|* Enter with:|*	x in recovery register|*|* Exit with:|*	expn in c_dSCRATCH_0|*sexpn:|		*round to nearest int	;		lmode3.0 0x0 cslmac;	;		recoe;	;	ptr5!slog2e	;		las cslm;		reg;		recoe;	;	;		;			;		;	rcssp ptr5;	;		lbsf smul cslm;		reg;		;	;	;		;			;		;	;	;		;			;		;	;	;		;			;		;	;	;		csuxm usp;		;		;	;	;		;			;		;	;	;		lasf scvtint csla woem;	;		;	;	;		;			;		;	;	;		;			;		;	;	;		;			;		;	;	;		lalf sfloat csla csuxa ulsw;;		;	;	;		;			;		;	;	;		;			;		;	;	;		;			;		;	;	;		csuxa usp;		;		;	;	ptr5!c_dSCRATCH_0	;		;			;		;	ptr5;	;		woea;			dtor;		;	ramwe rcssp ptr5;|		*reset the default rounding mode (to 0 for fix operations)	rtn;		lmode3.0 0x2 cslmac;	dtor;		;	ramwe ptr5;|*|*	subroutine exps|* Enter with:|*	x in recovery register|*	expn in c_dSCRATCH_0|*|* Exit with:|*	exps in c_dSCRATCH_1|*sexps:	;		;			;		;	;	ptr5!c_dSCRATCH_0	;		;			;		;	rcssp ptr5;	ptr5!c_dloge2a|		*start dble(n)	;		lasf scvtd csla;	reg;		;	rcsmsw ptr5;	;		lam cslm;		reg;		;	rcslsw ptr5;	;		lal cslm;		reg;		;	;	;		;			;		recoe;	;|		*start dble(x)	;		lasf scvtd csla;	reg;		recoe;	;	;		csuxa umsw;		;		;	;	;		csuxa ulsw;		;		;	;	;		lbm cslm woea;		;		;	;|		*start dble(n) * loge2a	;		lblf dmul cslm woea;	;		;	;	;		lam csla csuxa umsw;	;		;	;	;		lal csla csuxa ulsw;	;		;	;	;		;			;		;	;	;		;			;		;	;	;		;			;		;	;	;		csuxm umsw;		;		;	;	;		csuxm ulsw;		;		;	;	;		lbm csla woem;		;		;	;|		*start dble(x) - (dble(n) * loge2a)	;		lblf dsub csla woem;	;		;	;	ptr5!c_dloge2b	;		;			;		;	rcslsw ptr5;	;		lal cslm;		reg;		;	rcsmsw ptr5;	;		lam cslm;		reg;		;	;	;		lf dmul cslm;		;		;	;	;		lam csla csuxa umsw;	;		;	;	;		lal csla csuxa ulsw;	;		;	;	;		;			;		;	;	;		;			;		;	;	;		;			;		;	;	;		csuxm umsw;		;		;	;	;		csuxm ulsw;		;		;	;	;		lbm csla woem;		;		;	;	;		lblf dsub csla woem;	;		;	;	;		;			;		;	;	;		;			;		;	;	;		;			;		;	;	;		lam csla csuxa umsw;	;		;	;	ptr5!c_dSCRATCH_15|		*start y = read(dy)	;		lalf dcvts csla csuxa ulsw;;		;	ptr5;|		*save dy for later use	;		woea;			dtor;		;	ramwe rcsmsw ptr5;	;		woea;			dtor;		;	ramwe rcslsw ptr5;	;		;			dtor;		;	ramwe ptr5;	;		lbs csla csuxa usp;	;		;	;	ptr5!c_dSCRATCH_14	;		;			;		;	ptr5;|		*save y for later use	;		las cslm woea;		dtor;		;	ramwe rcssp ptr5;	;		;			dtor;		;	ramwe ptr5;	ptr5!c_sexpt3	;		;			;		;	rcssp ptr5;

⌨️ 快捷键说明

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