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

📄 modf.s

📁 早期freebsd实现
💻 S
字号:
/* * Copyright (c) 1988, 1993 *	The Regents of the University of California.  All rights reserved. * * This code is derived from software contributed to Berkeley by * Computer Consoles Inc. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */#if defined(LIBC_SCCS) && !defined(lint)	.asciz "@(#)modf.s	8.1 (Berkeley) 6/4/93"#endif /* LIBC_SCCS and not lint *//* * double modf (value, iptr) * double value, *iptr; * * Modf returns the fractional part of "value", * and stores the integer part indirectly through "iptr". * * This version uses floating point (look in ../fpe for * a much slower integer version). */#include "DEFS.h"ENTRY(modf, 0)	ldd	4(fp)		# value	cvdl	r2		# integerize	bvs	1f		# did integer part overflow?	cvld	r2		# integer part	std	r0	std	*12(fp)		# *iptr = r2	ldd	4(fp)	subd	r0		# value-(int)value	std	r0		# return fraction	ret1:	/*	 * If the integer portion overflowed, mask out the fractional	 * bits in the double word instead of cvdl-ing.	 */	ldd	4(fp)	std	r0		# (r0,r1) = value	shrl	$23,r0,r2	# extract sign,exponent of value	andl2	$255,r2		# exponent	subl2	$152,r2		# e-152	/*	 * If it overflowed then value>=2^31 and e>=160	 * so we mask only r1 (low bits of fraction), not r0	 */	mnegl	$1,r3	shrl	r2,r3,r3	# -1>>(e-152) is neg mask to clear fraction	mcoml	r3,r3		# complement mask	andl2	r3,r1		# mask off truly fractional bits from fraction	ldd	r0		# now (r0,r1) = integerized value	std	*12(fp)		# *iptr = integerized	ldd	4(fp)	subd	r0	std	r0		# return fraction	ret

⌨️ 快捷键说明

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