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

📄 trig.s

📁 操作系统SunOS 4.1.3版本的源码
💻 S
📖 第 1 页 / 共 2 页
字号:
/ /	.data/	.asciz	"@(#)trig.s 1.1 92/07/30 SMI"/	.even/	.text//	Copyright (c) 1987 by Sun Microsystems, Inc.//    After argument reduction (calling argred()) which return n:/       n mod 4     sin(x)      cos(x)        tan(x)/     ----------------------------------------------------------/          0          S           C             S/C/          1          C          -S            -C/S/          2         -S          -C             S/C/          3         -C           S            -C/S/     ----------------------------------------------------------	.text	.globl	sin	.globl	cos	.globl	tan	.globl	sincos	.globl	fp_picos:	call	reduction	cmpl	$1,%eax	jl	cos0	je	cos1	cmpl	$2,%eax	je	cos2	fsin	retcos2:	fcos	fchs	retcos1:	fsin	fchs	retcos0:	fcos	retsin:		call	reduction	cmpl	$1,%eax	jl	sin0	je	sin1	cmpl	$2,%eax	je	sin2	fcos	fchs	retsin2:	fsin	fchs	retsin1:	fcos	retsin0:	fsin	rettan:		call	reduction	andl	$1,%eax	cmpl	$0,%eax	je	tan1	fptan	fdivp	%st,%st(1)	fchs	rettan1:	fptan	fstp	%st(0)	retsincos:	call	reduction	fsincos	cmpl	$1,%eax	jl	sincos0	je	sincos1	cmpl	$2,%eax	je	sincos2/ n=3	fchs	movl	12(%esp),%eax	fstpl	0(%eax)	movl	16(%esp),%eax	fstpl	0(%eax)	retsincos2: / n=2	fchs	movl	16(%esp),%eax	fstpl	0(%eax)	fchs	movl	12(%esp),%eax	fstpl	0(%eax)	retsincos1: / n=1	movl	12(%esp),%eax	fstpl	0(%eax)	fchs	movl	16(%esp),%eax	fstpl	0(%eax)	retsincos0: / n=2	movl	16(%esp),%eax	fstpl	0(%eax)	movl	12(%esp),%eax	fstpl	0(%eax)	retreduction:	movl	12(%esp),%eax		/ load the high part of arg 	andl	$0x7ff00000,%eax	/ clear sign and mantissa 	cmpl    $0x3fe00000,%eax        / Is arge <= (pi/4 = 0x3fe8f5c2) ?	jle     L0	cmpl	$0x7ff00000,%eax	/ Is arg a NaN or an Inf ? 	je	L0	cmpl	$0x43e00000,%eax	/ Is arg >= 2**63 ? 	jge	L1	movl	fp_pi,%ecx	cmpl	$1,%ecx	jne	L1    / arg < 2**63 L0:	fldl	8(%esp)			/ push arg	movl	$0,%eax			/ set n = 0	retL1:    / call argred to do argument reduction	pushl	%ebp	movl	%esp,%ebp	subl	$16,%esp	leal	-16(%ebp),%eax		/ address of y2	pushl	%eax	leal	-8(%ebp),%eax		/ address of y1	pushl	%eax	pushl	16(%ebp)	pushl	12(%ebp)	call	argred			/ call argred(x,&y1,&y2)	fldl	-8(%ebp)		/ push y1	fldl	-16(%ebp)		/ push y2	faddp	%st,%st(1)		/ y1+y2	addl	$16,%esp	andl	$3,%eax			/ %eax  = n mod 4	leave	ret    / huge argument reduction.LL0:        .data	.align	4fp_pi:	.long	1	.align	4zero:	.double	0.0000000000000000000000e+00	.align	4one:	.double	1.0000000000000000000000e+00	.align	4p_53:	.long	10680707	.long	7228996	.long	1504196	.long	15362485	.long	13885745	.long	6349266	.long	14129194	.long	12595701	.long	14056396	.long	16585589	.long	6328731	.long	4169915	.long	6367931	.long	7425947	.long	252554	.long	12605768	.long	13640692	.long	5962295	.long	5333789	.long	13466256	.long	12601162	.long	16164595	.long	1725153	.long	6043943	.long	3856965	.long	5123509	.long	6613188	.long	2574939	.long	12012252	.long	1992081	.long	2630334	.long	4682229	.long	1222207	.long	8633653	.long	2394314	.long	2089406	.long	4375066	.long	6825321	.long	2816913	.long	6860257	.long	4866789	.long	10216279	.long	12031605	.long	13539722	.long	8630155	.long	15091174	.long	14616457	.long	10393415	.long	11146751	.long	3509311	.long	11481409	.long	7513079	.long	2879956	.long	15969686	.long	8222111	.long	2457550	.long	2751337	.long	11645996	.long	12791265	.long	9178045	.long	3271727	.long	9707558	.long	8772839	.long	6635507	.long	1273767	.long	883295	.align	4p_66:	.long	10680707	.long	7228996	.long	1387008	.long	404420	.long	893558	.long	12506305	.long	16644357	.long	6084026	.long	7765228	.long	2064598	.long	12738643	.long	3801200	.long	1080362	.long	16158441	.long	6847354	.long	12161194	.long	3726923	.long	9883635	.long	9597790	.long	9123062	.long	1661948	.long	2619534	.long	11091653	.long	3758245	.long	4087059	.long	1856936	.long	5982859	.long	10759684	.long	1233157	.long	3495949	.long	16130887	.long	4524288	.long	12159946	.long	16246948	.long	10675669	.long	6929490	.long	15743005	.long	1706632	.long	16680724	.long	8349493	.long	12287309	.long	13039170	.long	11697792	.long	6394303	.long	11974480	.long	5404526	.long	14028752	.long	6323660	.long	6864815	.long	15559164	.long	7254789	.long	13784445	.long	2473467	.long	4082337	.long	8668973	.long	9110390	.long	16217920	.long	13799647	.long	1436812	.long	4564419	.long	6390255	.long	12969960	.long	14192796	.long	16130372	.long	2720808	.long	7232925	.align	4p_inf:	.long	10680707	.long	7228996	.long	1387004	.long	2578385	.long	16069853	.long	12639074	.long	9804092	.long	4427841	.long	16666979	.long	11263675	.long	12935607	.long	2387514	.long	4345298	.long	14681673	.long	3074569	.long	13734428	.long	16653803	.long	1880361	.long	10960616	.long	8533493	.long	3062596	.long	8710556	.long	7349940	.long	6258241	.long	3772886	.long	3769171	.long	3798172	.long	8675211	.long	12450088	.long	3874808	.long	9961438	.long	366607	.long	15675153	.long	9132554	.long	7151469	.long	3571407	.long	2607881	.long	12013382	.long	4155038	.long	6285869	.long	7677882	.long	13102053	.long	15825725	.long	473591	.long	9065106	.long	15363067	.long	6271263	.long	9264392	.long	5636912	.long	4652155	.long	7056368	.long	13614112	.long	10155062	.long	1944035	.long	9527646	.long	15080200	.long	6658437	.long	6231200	.long	6832269	.long	16767104	.long	5075751	.long	3212806	.long	1398474	.long	7579849	.long	6349435	.long	12618859	.align	4two24:	.double	1.6777216000000000000000e+07	.align	4twon24:	.double	5.9604644775390625000000e-08	.align	4p1:	.double	1.5707962512969970703125e+00	.align	4p2:	.double	7.5497894158615963533521e-08	.align	4p3_inf:	.double	5.3903025299577647655447e-15	.align	4p3_66:	.double	5.3903008358918702569440e-15	.align	4p3_53:	.double	5.3290705182007513940334e-15        .textargred:	jmp	.L194.L193:	movl	$0,-300(%ebp)	movl	$1,-304(%ebp)	leal	-76(%ebp),%eax	movl	%eax,-308(%ebp)       cmpl	$1072693248,one+4	jne	.L195	movl	$0,-304(%ebp).L195:     pushl   12(%ebp)       pushl   8(%ebp)	call	signbit	addl	$8,%esp	movl	%eax,-288(%ebp)     pushl   12(%ebp)       pushl   8(%ebp)	call	fabs	addl	$8,%esp   fstpl 8(%ebp)     pushl   12(%ebp)       pushl   8(%ebp)	call	ilogb	addl	$8,%esp	movl	%eax,-296(%ebp)	movl	-296(%ebp),%eax	subl	$26,%eax	movl	$24,%ecx	cltd	idivl	%ecx	movl	%eax,-292(%ebp)	cmpl	$0,-292(%ebp)	jg	.L196	movl	$0,-292(%ebp)	jmp	.L197.L196:	imull	$-24,-292(%ebp),%eax	pushl	%eax     pushl   12(%ebp)       pushl   8(%ebp)	call	scalbn	addl	$12,%esp   fstpl 8(%ebp).L197:       movl    12(%ebp),%eax       movl    %eax,-72(%ebp)       movl    8(%ebp),%eax       movl    %eax,-76(%ebp)	movl	-308(%ebp),%eax	movl	-304(%ebp),%edx	andl	$-32,(%eax,%edx,4)       movl    -72(%ebp),%eax       movl    %eax,-24(%ebp)       movl    -76(%ebp),%eax       movl    %eax,-28(%ebp)	movl	-308(%ebp),%eax	movl	-304(%ebp),%edx	andl	$-536870912,(%eax,%edx,4)       movl    -72(%ebp),%eax       movl    %eax,-8(%ebp)       movl    -76(%ebp),%eax       movl    %eax,-12(%ebp)       fldl  -28(%ebp)       fsubl -76(%ebp)   fstpl -20(%ebp)       fldl  8(%ebp)       fsubl -28(%ebp)   fstpl -28(%ebp)	movl	$p_inf,-4(%ebp)       movl    p3_inf+4,%eax       movl    %eax,-64(%ebp)       movl    p3_inf,%eax       movl    %eax,-68(%ebp)       cmpl	$1,fp_pi	jne	.L198	movl	$p_66,-4(%ebp)       movl    p3_66+4,%eax       movl    %eax,-64(%ebp)       movl    p3_66,%eax       movl    %eax,-68(%ebp).L198:       cmpl	$2,fp_pi	jne	.L199	movl	$p_53,-4(%ebp)       movl    p3_53+4,%eax       movl    %eax,-64(%ebp)       movl    p3_53,%eax       movl    %eax,-68(%ebp).L199:       cmpl	$1,-292(%ebp)	jl	.L200	movl	-4(%ebp),%eax	movl	-292(%ebp),%edx	decl	%edx       fildl   (%eax,%edx,4)   fstpl -92(%ebp)       cmpl	$1,-292(%ebp)	jle	.L201	movl	-4(%ebp),%eax	movl	-292(%ebp),%edx	subl	$2,%edx       fildl   (%eax,%edx,4)   fmull two24   fstpl -100(%ebp).L201:.L200:       movl    twon24+4,%eax       movl    %eax,-80(%ebp)       movl    twon24,%eax       movl    %eax,-84(%ebp)	movl	-4(%ebp),%eax	movl	-292(%ebp),%edx       fildl   (%eax,%edx,4)   fmull -84(%ebp)   fstpl -260(%ebp)       fldl  -84(%ebp)       fmull twon24   fstpl -84(%ebp)	movl	-4(%ebp),%eax	movl	-292(%ebp),%edx	incl	%edx       fildl   (%eax,%edx,4)   fmull -84(%ebp)   fstpl -252(%ebp)       fldl  -84(%ebp)       fmull twon24   fstpl -84(%ebp)	movl	-4(%ebp),%eax	movl	-292(%ebp),%edx	leal	2(%edx),%edx       fildl   (%eax,%edx,4)   fmull -84(%ebp)   fstpl -244(%ebp)       fldl  -84(%ebp)       fmull twon24   fstpl -84(%ebp)	movl	-4(%ebp),%eax	movl	-292(%ebp),%edx	leal	3(%edx),%edx       fildl   (%eax,%edx,4)   fmull -84(%ebp)   fstpl -236(%ebp)       fldl  -84(%ebp)       fmull twon24   fstpl -84(%ebp)	movl	-4(%ebp),%eax	movl	-292(%ebp),%edx	leal	4(%edx),%edx       fildl   (%eax,%edx,4)   fmull -84(%ebp)   fstpl -228(%ebp)       fldl  zero       fldl  -28(%ebp)	fucompp       fstsw   %ax       sahf	jp	.L202	jne	.L202       fldl  zero       fldl  -20(%ebp)	fucompp       fstsw   %ax       sahf	jp	.L203	jne	.L203       fldl  -12(%ebp)       fmull -260(%ebp)   fstpl -180(%ebp)       fldl  -12(%ebp)       fmull -252(%ebp)   fstpl -172(%ebp)       fldl  -12(%ebp)       fmull -244(%ebp)   fstpl -164(%ebp)       fldl  -12(%ebp)       fmull -236(%ebp)   fstpl -156(%ebp)       fldl  -12(%ebp)       fmull -228(%ebp)   fstpl -148(%ebp)	jmp	.L204.L203:	cmpl	$0,-292(%ebp)	jle	.L205       fldl  -20(%ebp)       fmull -92(%ebp)       fldl  -12(%ebp)       fmull -260(%ebp)       faddp	%st,%st(1)   fstpl -180(%ebp)	jmp	.L206.L205:       fldl  -12(%ebp)       fmull -260(%ebp)   fstpl -180(%ebp).L206:       fldl  -20(%ebp)       fmull -260(%ebp)       fldl  -12(%ebp)       fmull -252(%ebp)       faddp	%st,%st(1)   fstpl -172(%ebp)       fldl  -20(%ebp)       fmull -252(%ebp)       fldl  -12(%ebp)       fmull -244(%ebp)       faddp	%st,%st(1)   fstpl -164(%ebp)       fldl  -20(%ebp)       fmull -244(%ebp)       fldl  -12(%ebp)       fmull -236(%ebp)       faddp	%st,%st(1)   fstpl -156(%ebp)

⌨️ 快捷键说明

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