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

📄 dexpm.u

📁 操作系统SunOS 4.1.3版本的源码
💻 U
📖 第 1 页 / 共 2 页
字号:
|*	@(#)dexpm.u 1.1 92/07/30 Copyright Sun Microsystems, Inc.  1988|*|* int k: stored in SCRATCH_2 --> D2|* DP  k: stored in SCRATCH_3 --> D3|* lo: stored in SCRATCH_4 --> D4|* hi: stored in SCRATCH_5 --> D5|* lo: stored in SCRATCH_6 --> D6|* k:  stored in SCRATCH_7 --> D7|* z:  stored in SCRATCH_8 --> D8|* c:  stored in SCRATCH_9 --> D9|*routine xd.ex1 001000001001	dnop enra loaddp halt;		regtitmp;	rcsmsw imm2;|* First get abs(x) and store it in the 'C' register in the TI8847.	call dnotfinx1;		dabs enra loaddp halt;		regtitmp;	rcslsw imm2;|* Check if we have to bail out due to inexact	;			halt;				;		ptr5;	ptr5!c_ssin	;			smul enra enrb halt;		regtoti;	rcssp ptr5;|* Compare abs(x) with ln2/2	;			smul;				;		ptr5;		ptr5!c_dln2_2 	jtierr hang cstat;	dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp aluacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;		ptr5!c_d1em17	jge xgtln2_2m;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp aluacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;		ptr5!0x700+0xD8	jle retlnx;		dnop halt;			tmptoreg;	rcsmsw ptr5;	;			dnop halt;			tmptoreg;	rcslsw ptr5;	;			dnop;				;		ptr5;		ptr5!dzero	;			dnop ;				regtotmp;	rcsmsw ptr5;	;			dnop;				regtotmp;	rcslsw ptr5;	;			dnop;				;		ptr5;		ptr5!0x700+0xD9	;			dnop;				tmptoreg;	rcsmsw ptr5;		call exp_x;		dnop;				tmptoreg;	rcslsw ptr5;|* Result is returned in D9 register and in RA	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr2;	;			dadd enrb loaddp halt;		regtoti;	rcslsw ptr2;	;			dnop;				;		ptr1;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;xgtln2_2m:	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr2;	;			dnop enra loaddp halt;		regtoti;	rcslsw ptr2;	;			dnop;				;		ptr5;	ptr5!dzero	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!c_dmln2	jge x_pos;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!c_dln2hi	jle x_negl;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD5	;			dnop enra tioe timsw loaddp halt;titoreg;	rcsmsw ptr5;	;			dnop enra tioe tilsw loaddp halt;titoreg;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!c_dln2lo	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD8	;			dnop enrb tioe timsw loaddp halt;titoreg;	rcsmsw ptr5;	;			dsub enrb tioe tilsw loaddp halt;titoreg;	rcslsw ptr5;	;			dsub;				;		ptr5;	ptr5!c_dln2lo	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd alubalu enra loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD9	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	call exp_x;		dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	;			;				;		ptr5;		ptr5!0x700+0xD8	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dadd;				;		ptr5;		ptr5!dhalf	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulaalu enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulaalu;			;		;		;			dsub aluamul halt;		;		;	;			dsub aluamul halt;		;		;	;			dsub aluamul;			;		ptr1;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;x_negl:	;			dnop;				;		ptr5;		ptr5!c_dm40	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;		ptr5!c_dfmin	jgt expxm1;		dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dnop enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;		ptr5!done	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dsub enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr1;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;	call idle1;		dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;x_pos:	;			;				;		ptr5;		ptr5!c_dln2_onehalf	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;		ptr5!c_d70	jlt xltdln2.5;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!c_dlnovft	jlt xlt70;		dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		;	jgt bail.ov;		dnop halt;			;		;	;			dnop halt;			;		;	call expxm1;		;				;		;xltdln2.5:	;			dnop;				;		;	ptr5!c_dln2hi	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dsub enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD5	;			dnop enra tioe timsw loaddp halt;titoreg;	rcsmsw ptr5;	;			dnop enra tioe tilsw loaddp halt;titoreg;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!c_dln2lo	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dsub enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD8	;			dnop enrb tioe timsw loaddp halt;titoreg;	rcsmsw ptr5;	;			dsub enrb tioe tilsw loaddp halt;titoreg;	rcslsw ptr5;	;			dsub;				;		ptr5;	ptr5!c_dln2lo	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub alubalu enra loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD9	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr2;	;			dnop enra loaddp halt;		regtoti;	rcslsw ptr2;	;			dnop;				;		ptr5;		ptr5!c_dexp_con1	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcmp enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD8	jlt xltcons1;		dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dnop enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD8	call exp_x2;		dnop enra enrb loaddp halt;	regtoti;	rcsmsw ptr5;	;			;				;		ptr5;	ptr5!0x700+0xD8	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dadd;				;		ptr5;	ptr5!dhalf	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd alubalu enra loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		;	;			dnop enra enrb tioe timsw loaddp halt;;		;	;			dadd enra enrb tioe tilsw loaddp halt;;		;	;			dnop;				;		ptr1;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;xltcons1:	;			dnop;				;		ptr5;	ptr5!dhalf	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		ptr1;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;	;			dnop;				;		ptr5;	ptr5!0x700+0xD8	call exp_x2;		dnop enra enrb loaddp halt;	regtoti;	rcsmsw ptr5;	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr1;	;			dadd enrb loaddp halt;		regtoti;	rcslsw ptr1;	;			dnop;				;		;	;			dnop enra enrb tioe timsw loaddp halt;;		;	;			dadd enra enrb tioe tilsw loaddp halt;;		;	;			dnop;				;		ptr1;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	call idle1;		dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;xlt70:	;			dnop;				;		ptr5;	ptr5!c_dinvln2	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dmul;				;		ptr5;	ptr5!c_dln2hi|* load ln2hi in RB for later use.  Convert k to int, store in D2, and then convert int k to double|* (in order to get the correct fractions) and store in DD	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dcvtint aluamul enrb loaddp halt;regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD2	;			dfloat enra tioe tisp loaddp halt;titoreg;	rcssp ptr5;	;			dfloat enra tioe tisp loaddp halt;;		rcssp ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD3	;			dnop enra tioe timsw loaddp halt;titoreg;	rcsmsw ptr5;|* RB has dln2hi already|* RA has double k	;			dmul enra tioe tilsw loaddp halt;titoreg;	rcslsw ptr5;	;			dmul;				;		ptr2;	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr2;	;			drsub aluamul enrb loaddp halt;	regtoti;	rcslsw ptr2;	;			dnop;				;		ptr5;	ptr5!0x700+0xD5	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!c_dln2lo	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr5;|* Get hi ; lo will be stored in the C reg.	;			dmul;				;		ptr5;	ptr5!0x700+0xD5	;			dnop srccmul clkcc;		;		ptr5;	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			drsub aluacreg enrb loaddp halt;regtoti;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD8	;			dnop enra tioe timsw loaddp halt;titoreg;	rcsmsw ptr5;|* get (hi -z)	;			drsub enra tioe tilsw loaddp halt;titoreg;	rcslsw ptr5;|* c = (hi-z_-lo	;			drsub aluacreg alubalu;		;		;	;			dnop;				;		ptr5;	ptr5!0x700+0xD9|* store c in D9	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD2|* Do a SCALB(one, -k):	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!c_sitwo20	;			imul enrb halt;			regtoti;	rcssp ptr5;	;			;				;		;	;			i2cmp enrb tioe tisp halt;	;		ptr5;	ptr5!done	;			i2sub enra halt;		regtoti;	rcssp ptr5;	;			;				;		;	;			tioe tisp halt;			titotmp;	rcsmsw ptr5;|* Need to set the lsw to all 0's	;			halt;				regtotmp;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!0x700+0xD2|* Compare k to prec = 53	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!c_siprec	;			i2cmp enrb halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!done	jgt kgtprec;		dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dnop enra loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop;				;		;	;			dnop enrb loaddp halt;		tmptoti;	rcsmsw;	;			dsub enrb loaddp halt;		tmptoti;	rcslsw;	;			dnop;				;		ptr1;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;	call exp_x;		dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	;			dnop;				;		ptr5;	ptr5!0x700+0xD8	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr1;	;			dadd alubalu enra loaddp halt;	regtoti;	rcslsw ptr1;endexpm1:	;			dnop;				;		ptr1;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr1;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr1;	;			;				;		ptr5;	ptr5!0x700+0xD2	;			i2cmp enra halt;		regtoti;	rcssp ptr5;	;			;				;		ptr5;	ptr5!c_sitwo20	;			imul enrb halt;			regtoti;	rcssp ptr5;	;			;				;		;	;			i2cmp enrb tioe tisp halt;	;		;	;			i2add enra halt;		regtoti;	rcsmsw ptr1;	;			;				;		ptr1;	call idle1;		tioe tisp halt;			titoreg;	rcsmsw ptr1;kgtprec:	;			dnop;				;		ptr5;	ptr5!0x700+0xD8	call exp_x2;		dnop enra enrb loaddp halt;	regtoti;	rcsmsw ptr5;	;			dnop enrb loaddp halt;		tmptoti;	rcsmsw;	;			dsub enrb loaddp halt;		tmptoti;	rcslsw;	;			dnop;				;		ptr5;	ptr5!0x700+0xD8	;			dnop enra loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd alubalu enra loaddp halt;	regtoti;	rcslsw ptr5;	;			dnop;				;		;	;			dnop enra tioe timsw loaddp halt;;		;	;			dnop enra tioe tilsw loaddp halt;;		;	;			dnop;				;		ptr5;	ptr5!done	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	call endexpm1;		dadd enrb loaddp halt;		regtoti;	rcslsw ptr5;exp_x:|*  D8: contains x|*  D9: contains c and the result|*  DA: p|*  DB: q|*  DC: xp|*  DD: xh|*  DE: w|*  DF and D0: Scratch	;			dnop;				;		ptr5;	ptr5!0x700+0xD8	;			dnop enra enrb loaddp halt;	regtoti;	rcsmsw ptr5;exp_x2:	;			dmul enra enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul;				;		;	;			dnop srccmul clkcc;		;		ptr5;	ptr5!c_dexpmp2	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulacreg;			;		ptr5;	ptr5!c_dexpmp1	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulaalu mulbcreg;		;		;	;			dmul mulaalu mulbcreg;		;		ptr5;	ptr5!0x700+0xDA	;			dnop halt;			;		ptr5;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	;			dnop halt;			;		ptr5;	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul enrb loaddp halt;		regtoti;	rcslsw ptr5;	;			dmul;				;		;	;			dnop;				;		ptr5;	ptr5!0x700+0xDC	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;	;			dnop tioe tilsw halt;		titoreg;	rcslsw ptr5;	;			dnop;				;		ptr5;	ptr5!c_dexpmq2	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dmul mulacreg enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulacreg;			;		ptr5;	ptr5!c_dexpmq1	;			dnop enrb loaddp halt;		regtoti;	rcsmsw ptr5;	;			dadd aluamul enrb loaddp halt;	regtoti;	rcslsw ptr5;	;			dmul mulaalu mulbcreg;		;		;	;			dmul mulaalu mulbcreg;		;		ptr5;	ptr5!0x700+0xDB	;			dnop halt;			;		;	;			dnop tioe timsw halt;		titoreg;	rcsmsw ptr5;

⌨️ 快捷键说明

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