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

📄 wpowis.s

📁 操作系统SunOS 4.1.3版本的源码
💻 S
字号:
        .data|       .asciz  "@(#)Wpowis.s 1.1 92/07/30 SMI"        .even        .text|       Copyright (c) 1987 by Sun Microsystems, Inc.#include "fpcrtdefs.h"#include "Wdefs.h"#include "PIC.h"one:	.single	0r1RTENTRY(Wpowis)#ifdef PIC	movl	a2,sp@-	bsr	Wpowis__	movl	sp@+,a2	RETWpowis__:#endif	tstl    d1        bnes    6f              | Branch if i <> 0.        movel   one,d0  	| Return 1.0 = x**0.        jra    3f6:        LOADFPABASE        fpmoves@1 d0,fpa0         | fpa0 gets x.        movel   d1,d0          | d0 gets integer power i.        bpls    1f        fpmoves@1 fpa0,sp@-	| Save original argument x.	negl    d0             | d0 gets abs(i).        bras    1f powerloop:        lsrl    #1,d0        fpsqrs@1  fpa0,fpa0      | If there are n trailing 0's,                               | this loop computes fpa0 = x**2**n.1:        btst    #0,d0        beqs    powerloop                 fpmoves@1  fpa0,fpa1      | fpa1 gets x**2**n.        bras    6f         multloop:        fpsqrs@1  fpa1,fpa1      | Square fpa1.        btst    #0,d0        beqs    6f        fpmuls@1   fpa1,fpa0    	| If a one bit, multiply result by fpa1.6:        lsrl    #1,d0        bnes    multloop        | Branch if there are more 1 bits.5:        tstl    d1        bpls    2f        fpmoves@1 one,fpa1       	| fpa1 gets 1.0.        fpdivs@1 fpa0,fpa1        | fpa1 gets 1/x**|i|.        fpmoves@1  fpa1,d0        | Result is 1/x**|i|.	cmpl	#-1,d1	beqs	8f		| Branch if power is -1.	tstl	d0	beqs	1f		| Branch if result is +0.	cmpl	#0x80000000,d0	bnes	8f		| Branch if result not -0.1:        movel	sp@+,d0		| Restore argument x.	JBSR(Mpowis,a2)		| Recompute.	bras    3f8:	addql	#4,sp	bras	3f2:        fpmoves@1  fpa0,d0        | Result is x**i.3:        RET

⌨️ 快捷键说明

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