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

📄 ksinfcosf.s

📁 早期freebsd实现
💻 S
字号:
/*- * Copyright (c) 1985 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. * *	@(#)Ksinfcosf.s	7.1 (Berkeley) 12/6/90 */#include "../tahoe/SYS.h"	.textENTRY(Kcosf, 0)	tstl	4(fp)		# if (arg < 0)	jgeq	L23	lnd	4(fp)	std	4(fp)		# arg = -arg;L23:	pushl	20(fp)		# 	hfs	pushl	$1	pushl	8(fp)	pushl	4(fp)	callf	$20,_sinus	ret			# return(sinus(arg,1));ENTRY(Ksinf, 0)	pushl	20(fp)		# hfs	pushl	$0	pushl	8(fp)	pushl	4(fp)	callf	$20,_sinus	ret			# return(sinus(arg, 0));ENTRY(sinus, 0)	subl3	$112,fp,sp	movl	8(fp),-80(fp)	movl	4(fp),-84(fp)	# x = arg;	jgeq	L34		# if (x < 0) {	lnd	-84(fp)	std	-84(fp)		# x = -x;	addl2	$2,12(fp)	# quad = quad + 2;}L34:	pushl	16(fp)	ldd	_twoopi		pushd	ldd	-84(fp)	pushd		callf	$24,_Kmuld	movl	r1,-88(fp)	movl	r0,-84(fp)	# std	-84(fp)	 x = x * twoopi;	cmpd2	-84(fp),L36	# if (x > 32764) {	jleq	L35	pushl	16(fp)		# hfs	subl3	$60,fp,-(sp)	# &e	pushl	-80(fp)	pushl	-84(fp)		# x	callf	$20,_Kmodf	clrl	-92+4(fp)	movl	r0,-92(fp)	# y = modf(x, &e);	pushl	16(fp)		# hfs	pushl	$0	pushl	12(fp)		# quad	pushl	$0	pushl	$0		# dummy acc	callf	$24,_Kcvtld	pushl	16(fp)		# hfs	pushl	r1	pushl	r0 		# pushd	 (double)quad	ldd	-60(fp)	pushd			# &e	callf	$24,_Kaddd	movl	r1,-56(fp)	movl	r0,-60(fp) 	# std	-60(fp) e = e + quad;	pushl	16(fp)		# hfs	subl3	$68,fp,-(sp)	# &f	pushl	16(fp)		# hfs	ldd	-60(fp)	pushd			# &e	ldd	L37	pushd			# 0.25	callf	$24,_Kmuld	pushl	r1	pushl	r0		# pushd	 0.25 * e	callf	$20,_Kmodf	# modf(0.25 * e, &f);		pushl	16(fp)		# hfs	movl	r1,-64(fp)	movl	r0,-68(fp)	# ldd	-68(fp)	 &f	pushl	r1	pushl	r0		# pushd	ldd	L38	pushd	callf	$24,_Kmuld	# 4*f				# std	r0	pushl	16(fp)		# hfs	pushl	r1	pushl	r0		# pushd		ldd	-60(fp)	pushd	callf	$24,_Ksubd	# e - 4 * f	ldd	r0		# load acc with result of Ksubd	cvdl	12(fp)		# quad = (e - 4 * f); }	jbr	L39L35:	ldd	-84(fp)		# else {	cvdl	-96(fp)		# k = x;	pushl	16(fp)		# hfs	pushl	$0	pushl	-96(fp)	pushl	$0	pushl	$0		# acc	callf	$24,_Kcvtld				# std	r0	pushl	16(fp)		# hfs	pushl	r1	pushl	r0		# pushd	 (double)k	ldd	-84(fp)	pushd			# x	callf	$24,_Ksubd	movl	r1,-88(fp)	movl	r0,-92(fp)	# std	-92(fp) y = x - k;	addl3	-96(fp),12(fp),r0	andl3	$3,r0,12(fp)	# quad = (quad + k) & 03; }L39:	bitl	$1,12(fp)	# if (quad & 01)	jeql	L40	pushl	16(fp)		# hfs	ldd	-92(fp)	pushd			# y	ldd	L41	pushd			# 1.0	callf	$24,_Ksubd	movl	r1,-88(fp)	movl	r0,-92(fp)	# std	-92(fp) y = 1 - y;L40:	cmpl	12(fp),$1	# if (quad > 1)	jleq	L42	lnd	-92(fp)	std	-92(fp)		# y = -y;L42:	pushl	16(fp)		# hfs	ldd	-92(fp)	pushd	pushd	callf	$24,_Kmuld	# y*y	movl	r1,-72(fp)	movl	r0,-76(fp)	# std	-76(fp)	 ysq=y*y;	pushl	16(fp)		# hfs	ldd	-76(fp)	pushd	ldd	_p4	pushd	callf	$24,_Kmuld	# p4*ysq	pushl	16(fp)		# hfs	pushl	_p3+4	pushl	_p3	pushl	r1	pushl	r0		# pushd	callf	$24,_Kaddd	# p4*ysq+p3	pushl	16(fp)		# hfs	pushl	-72(fp)	pushl	-76(fp)	pushl	r1	pushl	r0		# pushd	callf	$24,_Kmuld	# (p4*ysq+p3)*ysq	pushl	16(fp)		# hfs	pushl	_p2+4	pushl	_p2	pushl	r1	pushl	r0		# pushd	callf	$24,_Kaddd	# (p4*ysq+p3)*ysq+p2	pushl	16(fp)		# hfs	pushl	-72(fp)	pushl	-76(fp)	pushl	r1	pushl	r0		# pushd	callf	$24,_Kmuld	# ((p4*ysq+p3)*ysq+p2)*ysq		pushl	16(fp)		# hfs	pushl	_p1+4	pushl	_p1	pushl	r1	pushl	r0		# pushd	callf	$24,_Kaddd	# ((p4*ysq+p3)*ysq+p2)*ysq+p1	pushl	16(fp)		# hfs	pushl	-72(fp)	pushl	-76(fp)	pushl	r1	pushl	r0		# pushd	callf	$24,_Kmuld	# (((p4*ysq+p3)*ysq+p2)*ysq+p1)*ysq		pushl	16(fp)		# hfs	pushl	_p0+4	pushl	_p0	pushl	r1	pushl	r0		# pushd	callf	$24,_Kaddd	# (((p4*ysq+p3)*ysq+p2)*ysq+p1)*ysq+p0		pushl	16(fp)		# hfs	pushl	-88(fp)	pushl	-92(fp)	pushl	r1	pushl	r0		# pushd	callf	$24,_Kmuld	# ((((p4*ysq+p3)*ysq+p2)*ysq+p1)*ysq+p0)*y;		movl	r1,-100(fp)	movl	r0,-104(fp)	# std	-104(fp) temp1	ldd	r0	cvdf	stf	r0	ret#1	.data	.align	2_twoopi:.long	0x4022F983, 0x6E4E4415 # .double .63661977236758134_p0:	.long	0x40C90FDA, 0x90304197 # .double 1.57079631844_p1:	.long	0xC0255DE0, 0xB36CEE75 # .double -.645963710599_p2:	.long	0x3EA33457, 0xA736E807 # .double .079689678945999999_p3:	.long	0xBC992665, 0x5E9A6554 # .double -.0046737666099999999_p4:	.long	0x3A1ED7FA, 0xCC54924E # .double .000151485129L36:	.long	0x47FFF800, 0x00000000 # .double 32764L37:	.long	0x3F800000, 0x00000000 # .double .25L38:	.long	0x41800000, 0x00000000 # .double 4L41:	.long	0x40800000, 0x00000000 # .double 1

⌨️ 快捷键说明

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