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

📄 emumainalib.s

📁 VXWORKS源代码
💻 S
📖 第 1 页 / 共 3 页
字号:
fldsi:				#push from memory	andb	$0x0fd,h_stat+1		call	sitoep			#STPUSHP	movl	s_fpsp,%ebx		subb	$32,%bl			cmpb	$3,s_stk+10(%ebx)		jnz	stackof			movl	%ebx,s_fpsp		addl	$s_stk,%ebx		movl	%eax,(%ebx)		movl	%edx,4(%ebx)		movl	%ecx,8(%ebx)		ret			fldwi:				#push from memory	andb	$0x0fd,h_stat+1		call	witoep			#STPUSHP	movl	s_fpsp,%ebx		subb	$32,%bl			cmpb	$3,s_stk+10(%ebx)		jnz	stackof			movl	%ebx,s_fpsp		addl	$s_stk,%ebx		movl	%eax,(%ebx)		movl	%edx,4(%ebx)		movl	%ecx,8(%ebx)		ret			fstf:				#fetch as single-precision	#SAVEIX	movl	%eax,s_memp		xchgl	%esi,%eax		movl	%eax,s_iptr		#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		#GETEP   	movl	(%edi),%eax		movl	4(%edi),%edx		movl	8(%edi),%ecx		call	eptofp			movl	%eax,(%esi)		ret			fstpf:				#pop as single-precision 	#SAVEIX	movl	%eax,s_memp		xchgl	%esi,%eax		movl	%eax,s_iptr		#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		#GETEP   	movl	(%edi),%eax		movl	4(%edi),%edx		movl	8(%edi),%ecx		call	eptofp			movl	%eax,(%esi)		#STPOPq	movb	$3,10(%edi)		addb	$32,s_fpsp		ret			fldcwc:				#load control word	movw	(%eax),%ax		andw	$0x1f7f,%ax		orb	$0x40,%al		movw	%ax,h_ctrl		ret			fstcwc:				#store control word	movl	%eax,%edi		movw	h_ctrl,%ax		stosw				ret			flds:				#ST = ST(i)	#SAVEIN	movl	%esi,s_iptr		andb	$0x0fd,h_stat+1		#STIX    ebx	movl	s_fpsp,%eax		shll	$5,%ebx			addb	%bl,%al			addl	$s_stk,%eax		xchgl	%edi,%eax		#GETEP   	movl	(%edi),%eax		movl	4(%edi),%edx		movl	8(%edi),%ecx		#STPUSHP	movl	s_fpsp,%ebx		subb	$32,%bl			cmpb	$3,s_stk+10(%ebx)		jnz	stackof			movl	%ebx,s_fpsp		addl	$s_stk,%ebx		movl	%eax,(%ebx)		movl	%edx,4(%ebx)		movl	%ecx,8(%ebx)		ret			fxchs:				#exchange ST and ST(i)	#SAVEIN	movl	%esi,s_iptr		andb	$0x0fd,h_stat+1		movl	s_fpsp,%eax		addl	$s_stk,%eax		movl	(%eax),%edi		movl	4(%eax),%edx		movl	8(%eax),%ecx		subl	$s_stk,%eax		shll	$5,%ebx	addb	%bl,%al	addl	$s_stk,%eax		xchgl	%edi,(%eax)		xchgl	%edx,4(%eax)		xchgl	%ecx,8(%eax)		subl	$s_stk,%eax		subb	%bl,%al			addl	$s_stk,%eax		movl	%edi,(%eax)		movl	%edx,4(%eax)		movl	%ecx,8(%eax)		ret			fnop_:				#no operation	#SAVEIN	movl	%esi,s_iptr		ret			fstps:				#ST(i) = ST and pop	#SAVEIN	movl	%esi,s_iptr		andb	$0x0fd,h_stat+1		movl	s_fpsp,%eax		addl	$s_stk,%eax		movl	%eax,%edi		movl	(%eax),%esi		movl	4(%eax),%edx		movl	8(%eax),%ecx		shll	$5,%ebx			subl	$s_stk,%eax		addb	%bl,%al			addl	$s_stk,%eax		movl	%esi,(%eax)		movl	%edx,4(%eax)		movl	%ecx,8(%eax)		#STPOPq	movb	$3,10(%edi)		addb	$32,s_fpsp		ret			fucoms:				#ST - ST(i) -> codes	#SAVEIN	movl	%esi,s_iptr		#GETEPS  ebx	movl	s_fpsp,%eax		movl	%eax,%edi		addl	$s_stk,%edi		shll	$5,%ebx			addb	%bl,%al			addl	$s_stk,%eax		movl	8(%eax),%ecx		movl	4(%eax),%edx		movl	(%eax),%eax		jmp	epcomu		fucomps:			#ST - ST(i) -> codes, pop	#SAVEIN	movl	%esi,s_iptr		#GETEPS  ebx	movl	s_fpsp,%eax		movl	%eax,%edi		addl	$s_stk,%edi		shll	$5,%ebx			addb	%bl,%al			addl	$s_stk,%eax		movl	8(%eax),%ecx		movl	4(%eax),%edx		movl	(%eax),%eax		call	epcomu			#STPOPq	movb	$3,10(%edi)		addb	$32,s_fpsp		ret			is1t:	.long	fchs_,fabs_,NONE_,NONE_,ftst_,fxam_,NONE_,NONE_is1:					#SAVEIN	movl	%esi,s_iptr		jmp	*%cs:is1t(,%ebx,4)	fchs_:				#ST = -ST	andb	$0x0fd,h_stat+1		#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		xorb	$0x80,11(%edi)		ret			fabs_:				#ST = |ST|	andb	$0x0fd,h_stat+1		#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		andb	$0x7f,11(%edi)		ret			ftst_:				#set codes according to ST	#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		movl	$0x00010000,%ecx		xorl	%eax,%eax		xorl	%edx,%edx		jmp	epcomp		fxam_:				#set codes according to ST	andb	$0x0b8,h_stat+1		movl	s_fpsp,%edi		addl	$s_stk,%edi		cmpb	$3,10(%edi)		jz	fxa9			#GETEP   	movl	(%edi),%eax		movl	4(%edi),%edx		movl	8(%edi),%ecx		call	epexam			orb	%al,h_stat+1	fxa9:	ret			is8t:	.long	ld1,ldl2t,ldl2e,ldpi,ldlg2,ldln2,ldz,NONE_ is8:					#SAVEIN	movl	%esi,s_iptr		andb	$0x0fd,h_stat+1		call	*%cs:is8t(,%ebx,4)		#STPUSHP	movl	s_fpsp,%ebx		subb	$32,%bl			cmpb	$3,s_stk+10(%ebx)		jnz	stackof			movl	%ebx,s_fpsp		addl	$s_stk,%ebx		movl	%eax,(%ebx)		movl	%edx,4(%ebx)		movl	%ecx,8(%ebx)		ret			ld1:				#load 1	xorl	%eax,%eax		movl	$0x80000000,%edx		movl	$0x00003fff,%ecx		ret			ldl2t:				#load log2(10)	movl	$0xcd1b8afe,%eax		movl	$0xd49a784b,%edx		movl	$0x00004000,%ecx		movb	h_ctrl+1,%bh		andb	$0x0c,%bh		cmpb	$0x08,%bh		jnz	ldc3			incl	%eax		ldc3:	ret			ldl2e:				#load log2(e)	movl	$0x5c17f0bb,%eax		movl	$0xb8aa3b29,%edx		movl	$0x00003fff,%ecx		testb	$0x04,h_ctrl+1		jnz	ldc5			incl	%eax		ldc5:	ret			ldpi:				#load pi	movl	$0x2168c234,%eax		movl	$0xc90fdaa2,%edx		movl	$0x00004000,%ecx		testb	$0x04,h_ctrl+1		jnz	ldp5			incl	%eax		ldp5:	ret			ldlg2:				#load log10(2)	movl	$0xfbcff798,%eax		movl	$0x9a209a84,%edx		movl	$0x00003ffd,%ecx		testb	$0x04,h_ctrl+1		jnz	ldc9			incl	%eax		ldc9:	ret			ldln2:				#load ln(2)	movl	$0xd1cf79ab,%eax		movl	$0xb17217f7,%edx		movl	$0x00003ffe,%ecx		testb	$0x04,h_ctrl+1		jnz	ldc11			incl	%eax		ldc11:	ret			ldz:				#load 0	xorl	%eax,%eax		xorl	%edx,%edx		movl	$0x00010000,%ecx		ret			is2t:	.long	f2xm1_,fyl2x_,fptan_,fpatan_,fxtract_,fprem_,fdecstp_,fincstp_ is2:					#SAVEIN	movl	%esi,s_iptr		jmp	*%cs:is2t(,%ebx,4)	f2xm1_:				#ST = (2^ST) - 1	#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		#GETEP   	movl	(%edi),%eax		movl	4(%edi),%edx		movl	8(%edi),%ecx		call	epf2xm1			#PUTEP   	movl	%eax,(%edi)		movl	%edx,4(%edi)		movl	%ecx,8(%edi)		ret			fyl2x_:				#calculate log2(ST) * ST(1), pop once	#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		#GETEP   	movl	(%edi),%eax		movl	4(%edi),%edx		movl	8(%edi),%ecx		call	eplog			#STPOPq	movb	$3,10(%edi)		addb	$32,s_fpsp		#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		call	epmul			jmp	rounde		fptan_:				#make ST into tan(ST)	#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		#GETEP   	movl	(%edi),%eax		movl	4(%edi),%edx		movl	8(%edi),%ecx		call	reduct			movl	%edi,%esi		#STPUSH	xchgl	%edi,%ebx		movl	s_fpsp,%ebx		subb	$32,%bl			xchgl	%edi,%ebx		cmpb	$3,s_stk+10(%edi)		jz	LL1			call	stackof		LL1:	movl	%edi,s_fpsp		addl	$s_stk,%edi		pushl	%edi			movl	%esi,%edi		testl	$0x30000,%ecx		jnz	tan11			call	eptan		tan5:	#PUTEP   	movl	%eax,(%edi)		movl	%edx,4(%edi)		movl	%ecx,8(%edi)		movl	$tBIAS,%ecx		movl	$0x80000000,%edx		xorl	%eax,%eax	tan6:	popl	%edi			#PUTEP   	movl	%eax,(%edi)		movl	%edx,4(%edi)		movl	%ecx,8(%edi)		ret			tan11:	testl	$0x50000,%ecx		jnz	tan5			#PUTEP   	movl	%eax,(%edi)		movl	%edx,4(%edi)		movl	%ecx,8(%edi)		call	getqn			jmp	tan6		fpatan_:			#arctangent of ST(1)/ST, pop stack	#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		#GETEP   	movl	(%edi),%eax		movl	4(%edi),%edx		movl	8(%edi),%ecx		#STIX1	movl	s_fpsp,%ebx		addb	$32,%bl			addl	$s_stk,%ebx		xchgl	%edi,%ebx		call	epatan			#PUTEP   	movl	%eax,(%edi)		movl	%edx,4(%edi)		movl	%ecx,8(%edi)		#STPOP	movl	s_fpsp,%eax		addl	$s_stk,%eax		movb	$3,10(%eax)		addb	$32,s_fpsp		ret			fxtract_:			#extract exponent and mantissa	andb	$0x0fd,h_stat+1		#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		#GETEP   	movl	(%edi),%eax		movl	4(%edi),%edx		movl	8(%edi),%ecx		call	xtract			#STPUSHP	movl	s_fpsp,%ebx		subb	$32,%bl			cmpb	$3,s_stk+10(%ebx)		jnz	stackof			movl	%ebx,s_fpsp		addl	$s_stk,%ebx		movl	%eax,(%ebx)		movl	%edx,4(%ebx)		movl	%ecx,8(%ebx)		ret			fdecstp_:			#decrement stack pointer	subb	$32,s_fpsp		ret			fincstp_:			#increment stack pointer	addb	$32,s_fpsp		ret			is3t:	.long	fprem_,fyl2xp1_,fsqrt_,fsincos_,frndint_,fscale_,fsin_,fcos_ is3:					#SAVEIN	movl	%esi,s_iptr		jmp	*%cs:is3t(,%ebx,4)	fprem_:				# ST = ST / ST(1) Intel/IEEE remainder	#STIX1q	movl	s_fpsp,%eax		addb	$32,%al			addl	$s_stk,%eax		xchgl	%edi,%eax		#GETEP   	movl	(%edi),%eax		movl	4(%edi),%edx		movl	8(%edi),%ecx		#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		call	eprem			#PUTEP   	movl	%eax,(%edi)		movl	%edx,4(%edi)		movl	%ecx,8(%edi)		ret			fyl2xp1_:			#calculate log2(ST+1) * ST(1), pop once	#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		#GETEP   	movl	(%edi),%eax		movl	4(%edi),%edx		movl	8(%edi),%ecx		call	eplog1			#STPOPq	movb	$3,10(%edi)		addb	$32,s_fpsp		#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		call	epmul			jmp	rounde		frndint_:			#round ST to integer	#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		#GETEP   	movl	(%edi),%eax		movl	4(%edi),%edx		movl	8(%edi),%ecx		call	eptown			#PUTEP   	movl	%eax,(%edi)		movl	%edx,4(%edi)		movl	%ecx,8(%edi)		ret			fscale_:			#add ST(1) to exponent of ST	movl	s_fpsp,%eax		addl	$s_stk,%eax		movl	%eax,%edi		subl	$s_stk,%eax		addb	$32,%al			addl	$s_stk,%eax		movl	8(%eax),%ecx		movl	4(%eax),%edx		movl	(%eax),%eax		call	scale			jmp	roundx		fucompps:			#ST - ST(1) -> codes, pop twice	#SAVEIN	movl	%esi,s_iptr		#STIX1q	movl	s_fpsp,%eax		addb	$32,%al			addl	$s_stk,%eax		xchgl	%edi,%eax		#GETEP   	movl	(%edi),%eax		movl	4(%edi),%edx		movl	8(%edi),%ecx		#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		call	epcomu			movl	%edi,%eax		movb	$3,10(%eax)		subl	$s_stk,%eax		addb	$32,%al			addl	$s_stk,%eax		movb	$3,10(%eax)		addb	$64,s_fpsp		ret			fisti:				#fetch into 32-bit integer	#SAVEIX	movl	%eax,s_memp		xchgl	%esi,%eax		movl	%eax,s_iptr		#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		#GETEP   	movl	(%edi),%eax		movl	4(%edi),%edx		movl	8(%edi),%ecx		call	eptosi			movl	%eax,(%esi)		ret			fistpi:				#pop into 32-bit integer	#SAVEIX	movl	%eax,s_memp		xchgl	%esi,%eax		movl	%eax,s_iptr		#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		#GETEP   	movl	(%edi),%eax		movl	4(%edi),%edx		movl	8(%edi),%ecx		call	eptosi			movl	%eax,(%esi)		#STPOPq	movb	$3,10(%edi)		addb	$32,s_fpsp		ret			flde:				#push EP from memory	#SAVEII	movl	%esi,s_iptr		movl	%eax,s_memp		andb	$0x0fd,h_stat+1		call	eptoep			#STPUSHP	movl	s_fpsp,%ebx		subb	$32,%bl			cmpb	$3,s_stk+10(%ebx)		jnz	stackof			movl	%ebx,s_fpsp		addl	$s_stk,%ebx		movl	%eax,(%ebx)		movl	%edx,4(%ebx)		movl	%ecx,8(%ebx)		ret			fstpe:				#fetch as extended-precision	#SAVEIX	movl	%eax,s_memp		xchgl	%esi,%eax		movl	%eax,s_iptr		andb	$0x0fd,h_stat+1		#STTOP   	movl	s_fpsp,%edi		addl	$s_stk,%edi		#GETEP   	movl	(%edi),%eax		movl	4(%edi),%edx		movl	8(%edi),%ecx		shldl	$16,%ecx,%ebx		cmpb	$3,%bl			jnz	stpe5			call	getqn		stpe5:	movl	%eax,(%esi)		movl	%edx,4(%esi)		addl	%ecx,%ecx		rcrw	$1,%cx			movw	%cx,8(%esi)		#STPOPq	movb	$3,10(%edi)		addb	$32,s_fpsp		ret			is5t:	.long	NONE_,NONE_,fclex_,finit_,NONE_,NONE_,NONE_,NONE_ is5:	jmp	*%cs:is5t(,%ebx,4)	fclex_:				#clear error status flags	andw	$0x7f00,h_stat		ret			faddx:				#ST(i) = ST + ST(i)	#SAVEIN	movl	%esi,s_iptr		#GETEPX  ebx	movl	s_fpsp,%eax		addl	$s_stk,%eax		movl	(%eax),%edi		movl	4(%eax),%edx		movl	8(%eax),%ecx		subl	$s_stk,%eax		shll	$5,%ebx			addb	%bl,%al			addl	$s_stk,%eax		xchgl	%edi,%eax		call	epadd			jmp	rounde		fmulx:				#ST(i) = ST * ST(i)	#SAVEIN	movl	%esi,s_iptr		#GETEPX  ebx	movl	s_fpsp,%eax		addl	$s_stk,%eax		movl	(%eax),%edi		movl	4(%eax),%edx		movl	8(%eax),%ecx		subl	$s_stk,%eax		shll	$5,%ebx			addb	%bl,%al			addl	$s_stk,%eax		xchgl	%edi,%eax		call	epmul			jmp	rounde		fsubx:				#ST(i) = ST - ST(i)

⌨️ 快捷键说明

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