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

📄 sparcv9a-mont.pl

📁 著名的开源密码源代码
💻 PL
📖 第 1 页 / 共 2 页
字号:
	std	$nlod,[%sp+$bias+$frame+24]	addcc	$j,8,$j	bnz,pt	%icc,.L1st	add	$tp,8,$tp.L1stskip:	fdtox	$dota,$dota	fdtox	$dotb,$dotb	ldx	[%sp+$bias+$frame+0],%o0	ldx	[%sp+$bias+$frame+8],%o1	ldx	[%sp+$bias+$frame+16],%o2	ldx	[%sp+$bias+$frame+24],%o3	srlx	%o0,16,%o7	std	$dota,[%sp+$bias+$frame+32]	add	%o7,%o1,%o1	std	$dotb,[%sp+$bias+$frame+40]	srlx	%o1,16,%o7	add	%o7,%o2,%o2	srlx	%o2,16,%o7	add	%o7,%o3,%o3		! %o3.%o2[0..15].%o1[0..15].%o0[0..15]	and	%o0,$mask,%o0	and	%o1,$mask,%o1	and	%o2,$mask,%o2	sllx	%o1,16,%o1	sllx	%o2,32,%o2	sllx	%o3,48,%o7	or	%o1,%o0,%o0	or	%o2,%o0,%o0	or	%o7,%o0,%o0		! 64-bit result	ldx	[%sp+$bias+$frame+32],%o4	addcc	%g1,%o0,%o0	ldx	[%sp+$bias+$frame+40],%o5	srlx	%o3,16,%g1		! 34-bit carry	bcs,a	%xcc,.+8	add	%g1,1,%g1	stx	%o0,[$tp]		! tp[j-1]=	add	$tp,8,$tp	srlx	%o4,16,%o7	add	%o7,%o5,%o5	and	%o4,$mask,%o4	sllx	%o5,16,%o7	or	%o7,%o4,%o4	addcc	%g1,%o4,%o4	srlx	%o5,48,%g1	bcs,a	%xcc,.+8	add	%g1,1,%g1	mov	%g1,$carry	stx	%o4,[$tp]		! tp[num-1]=	ba	.Louter	add	$i,8,$i.align	32.Louter:	sub	%g0,$num,$j		! j=-num	add	%sp,$bias+$frame+$locals,$tp	add	$ap,$j,%o3	add	$bp,$i,%o4	ld	[%o3+4],%g1		! bp[i]	ld	[%o3+0],%o0	ld	[%o4+4],%g5		! ap[0]	sllx	%g1,32,%g1	ld	[%o4+0],%o1	sllx	%g5,32,%g5	or	%g1,%o0,%o0	or	%g5,%o1,%o1	ldx	[$tp],%o2		! tp[0]	mulx	%o1,%o0,%o0	addcc	%o2,%o0,%o0	mulx	$n0,%o0,%o0		! (ap[0]*bp[i]+t[0])*n0	stx	%o0,[%sp+$bias+$frame+0]	! transfer b[i] to FPU as 4x16-bit values	ldda	[%o4+2]%asi,$ba	ldda	[%o4+0]%asi,$bb	ldda	[%o4+6]%asi,$bc	ldda	[%o4+4]%asi,$bd	! transfer (ap[0]*b[i]+t[0])*n0 to FPU as 4x16-bit values	ldda	[%sp+$bias+$frame+6]%asi,$na	fxtod	$ba,$ba	ldda	[%sp+$bias+$frame+4]%asi,$nb	fxtod	$bb,$bb	ldda	[%sp+$bias+$frame+2]%asi,$nc	fxtod	$bc,$bc	ldda	[%sp+$bias+$frame+0]%asi,$nd	fxtod	$bd,$bd	ldd	[$ap_l+$j],$alo		! load a[j] in double format	fxtod	$na,$na	ldd	[$ap_h+$j],$ahi	fxtod	$nb,$nb	ldd	[$np_l+$j],$nlo		! load n[j] in double format	fxtod	$nc,$nc	ldd	[$np_h+$j],$nhi	fxtod	$nd,$nd		fmuld	$alo,$ba,$aloa		fmuld	$nlo,$na,$nloa		fmuld	$alo,$bb,$alob		fmuld	$nlo,$nb,$nlob		fmuld	$alo,$bc,$aloc	faddd	$aloa,$nloa,$nloa		fmuld	$nlo,$nc,$nloc		fmuld	$alo,$bd,$alod	faddd	$alob,$nlob,$nlob		fmuld	$nlo,$nd,$nlod		fmuld	$ahi,$ba,$ahia	faddd	$aloc,$nloc,$nloc		fmuld	$nhi,$na,$nhia		fmuld	$ahi,$bb,$ahib	faddd	$alod,$nlod,$nlod		fmuld	$nhi,$nb,$nhib		fmuld	$ahi,$bc,$ahic	faddd	$ahia,$nhia,$nhia		fmuld	$nhi,$nc,$nhic		fmuld	$ahi,$bd,$ahid	faddd	$ahib,$nhib,$nhib		fmuld	$nhi,$nd,$nhid	faddd	$ahic,$nhic,$dota	! $nhic	faddd	$ahid,$nhid,$dotb	! $nhid	faddd	$nloc,$nhia,$nloc	faddd	$nlod,$nhib,$nlod	fdtox	$nloa,$nloa	fdtox	$nlob,$nlob	fdtox	$nloc,$nloc	fdtox	$nlod,$nlod	std	$nloa,[%sp+$bias+$frame+0]	std	$nlob,[%sp+$bias+$frame+8]	std	$nloc,[%sp+$bias+$frame+16]	add	$j,8,$j	std	$nlod,[%sp+$bias+$frame+24]	ldd	[$ap_l+$j],$alo		! load a[j] in double format	ldd	[$ap_h+$j],$ahi	ldd	[$np_l+$j],$nlo		! load n[j] in double format	ldd	[$np_h+$j],$nhi		fmuld	$alo,$ba,$aloa		fmuld	$nlo,$na,$nloa		fmuld	$alo,$bb,$alob		fmuld	$nlo,$nb,$nlob		fmuld	$alo,$bc,$aloc	ldx	[%sp+$bias+$frame+0],%o0		faddd	$aloa,$nloa,$nloa		fmuld	$nlo,$nc,$nloc	ldx	[%sp+$bias+$frame+8],%o1		fmuld	$alo,$bd,$alod	ldx	[%sp+$bias+$frame+16],%o2		faddd	$alob,$nlob,$nlob		fmuld	$nlo,$nd,$nlod	ldx	[%sp+$bias+$frame+24],%o3		fmuld	$ahi,$ba,$ahia	srlx	%o0,16,%o7		faddd	$aloc,$nloc,$nloc		fmuld	$nhi,$na,$nhia	add	%o7,%o1,%o1		fmuld	$ahi,$bb,$ahib	srlx	%o1,16,%o7		faddd	$alod,$nlod,$nlod		fmuld	$nhi,$nb,$nhib	add	%o7,%o2,%o2		fmuld	$ahi,$bc,$ahic	srlx	%o2,16,%o7		faddd	$ahia,$nhia,$nhia		fmuld	$nhi,$nc,$nhic	add	%o7,%o3,%o3		! %o3.%o2[0..15].%o1[0..15].%o0[0..15]	! why?	and	%o0,$mask,%o0		fmuld	$ahi,$bd,$ahid	and	%o1,$mask,%o1	and	%o2,$mask,%o2		faddd	$ahib,$nhib,$nhib		fmuld	$nhi,$nd,$nhid	sllx	%o1,16,%o1		faddd	$dota,$nloa,$nloa	sllx	%o2,32,%o2		faddd	$dotb,$nlob,$nlob	sllx	%o3,48,%o7	or	%o1,%o0,%o0		faddd	$ahic,$nhic,$dota	! $nhic	or	%o2,%o0,%o0		faddd	$ahid,$nhid,$dotb	! $nhid	or	%o7,%o0,%o0		! 64-bit result	ldx	[$tp],%o7		faddd	$nloc,$nhia,$nloc	addcc	%o7,%o0,%o0	! end-of-why?		faddd	$nlod,$nhib,$nlod	srlx	%o3,16,%g1		! 34-bit carry		fdtox	$nloa,$nloa	bcs,a	%xcc,.+8	add	%g1,1,%g1	fdtox	$nlob,$nlob	fdtox	$nloc,$nloc	fdtox	$nlod,$nlod	std	$nloa,[%sp+$bias+$frame+0]	std	$nlob,[%sp+$bias+$frame+8]	addcc	$j,8,$j	std	$nloc,[%sp+$bias+$frame+16]	bz,pn	%icc,.Linnerskip	std	$nlod,[%sp+$bias+$frame+24]	ba	.Linner	nop.align	32.Linner:	ldd	[$ap_l+$j],$alo		! load a[j] in double format	ldd	[$ap_h+$j],$ahi	ldd	[$np_l+$j],$nlo		! load n[j] in double format	ldd	[$np_h+$j],$nhi		fmuld	$alo,$ba,$aloa		fmuld	$nlo,$na,$nloa		fmuld	$alo,$bb,$alob		fmuld	$nlo,$nb,$nlob		fmuld	$alo,$bc,$aloc	ldx	[%sp+$bias+$frame+0],%o0		faddd	$aloa,$nloa,$nloa		fmuld	$nlo,$nc,$nloc	ldx	[%sp+$bias+$frame+8],%o1		fmuld	$alo,$bd,$alod	ldx	[%sp+$bias+$frame+16],%o2		faddd	$alob,$nlob,$nlob		fmuld	$nlo,$nd,$nlod	ldx	[%sp+$bias+$frame+24],%o3		fmuld	$ahi,$ba,$ahia	srlx	%o0,16,%o7		faddd	$aloc,$nloc,$nloc		fmuld	$nhi,$na,$nhia	add	%o7,%o1,%o1		fmuld	$ahi,$bb,$ahib	srlx	%o1,16,%o7		faddd	$alod,$nlod,$nlod		fmuld	$nhi,$nb,$nhib	add	%o7,%o2,%o2		fmuld	$ahi,$bc,$ahic	srlx	%o2,16,%o7		faddd	$ahia,$nhia,$nhia		fmuld	$nhi,$nc,$nhic	add	%o7,%o3,%o3		! %o3.%o2[0..15].%o1[0..15].%o0[0..15]	and	%o0,$mask,%o0		fmuld	$ahi,$bd,$ahid	and	%o1,$mask,%o1	and	%o2,$mask,%o2		faddd	$ahib,$nhib,$nhib		fmuld	$nhi,$nd,$nhid	sllx	%o1,16,%o1		faddd	$dota,$nloa,$nloa	sllx	%o2,32,%o2		faddd	$dotb,$nlob,$nlob	sllx	%o3,48,%o7	or	%o1,%o0,%o0		faddd	$ahic,$nhic,$dota	! $nhic	or	%o2,%o0,%o0		faddd	$ahid,$nhid,$dotb	! $nhid	or	%o7,%o0,%o0		! 64-bit result		faddd	$nloc,$nhia,$nloc	addcc	%g1,%o0,%o0	ldx	[$tp+8],%o7		! tp[j]		faddd	$nlod,$nhib,$nlod	srlx	%o3,16,%g1		! 34-bit carry		fdtox	$nloa,$nloa	bcs,a	%xcc,.+8	add	%g1,1,%g1		fdtox	$nlob,$nlob	addcc	%o7,%o0,%o0		fdtox	$nloc,$nloc	bcs,a	%xcc,.+8	add	%g1,1,%g1	stx	%o0,[$tp]		! tp[j-1]		fdtox	$nlod,$nlod	std	$nloa,[%sp+$bias+$frame+0]	std	$nlob,[%sp+$bias+$frame+8]	std	$nloc,[%sp+$bias+$frame+16]	addcc	$j,8,$j	std	$nlod,[%sp+$bias+$frame+24]	bnz,pt	%icc,.Linner	add	$tp,8,$tp.Linnerskip:	fdtox	$dota,$dota	fdtox	$dotb,$dotb	ldx	[%sp+$bias+$frame+0],%o0	ldx	[%sp+$bias+$frame+8],%o1	ldx	[%sp+$bias+$frame+16],%o2	ldx	[%sp+$bias+$frame+24],%o3	srlx	%o0,16,%o7	std	$dota,[%sp+$bias+$frame+32]	add	%o7,%o1,%o1	std	$dotb,[%sp+$bias+$frame+40]	srlx	%o1,16,%o7	add	%o7,%o2,%o2	srlx	%o2,16,%o7	add	%o7,%o3,%o3		! %o3.%o2[0..15].%o1[0..15].%o0[0..15]	and	%o0,$mask,%o0	and	%o1,$mask,%o1	and	%o2,$mask,%o2	sllx	%o1,16,%o1	sllx	%o2,32,%o2	sllx	%o3,48,%o7	or	%o1,%o0,%o0	or	%o2,%o0,%o0	ldx	[%sp+$bias+$frame+32],%o4	or	%o7,%o0,%o0		! 64-bit result	ldx	[%sp+$bias+$frame+40],%o5	addcc	%g1,%o0,%o0	ldx	[$tp+8],%o7		! tp[j]	srlx	%o3,16,%g1		! 34-bit carry	bcs,a	%xcc,.+8	add	%g1,1,%g1	addcc	%o7,%o0,%o0	bcs,a	%xcc,.+8	add	%g1,1,%g1	stx	%o0,[$tp]		! tp[j-1]	add	$tp,8,$tp	srlx	%o4,16,%o7	add	%o7,%o5,%o5	and	%o4,$mask,%o4	sllx	%o5,16,%o7	or	%o7,%o4,%o4	addcc	%g1,%o4,%o4	srlx	%o5,48,%g1	bcs,a	%xcc,.+8	add	%g1,1,%g1	addcc	$carry,%o4,%o4	stx	%o4,[$tp]		! tp[num-1]	mov	%g1,$carry	bcs,a	%xcc,.+8	add	$carry,1,$carry	addcc	$i,8,$i	bnz	%icc,.Louter	nop	add	$tp,8,$tp		! adjust tp to point at the end	orn	%g0,%g0,%g4	sub	%g0,$num,%o7		! n=-num	ba	.Lsub	subcc	%g0,%g0,%g0		! clear %icc.c.align	32.Lsub:	ldx	[$tp+%o7],%o0	add	$np,%o7,%g1	ld	[%g1+0],%o2	ld	[%g1+4],%o3	srlx	%o0,32,%o1	subccc	%o0,%o2,%o2	add	$rp,%o7,%g1	subccc	%o1,%o3,%o3	st	%o2,[%g1+0]	add	%o7,8,%o7	brnz,pt	%o7,.Lsub	st	%o3,[%g1+4]	subc	$carry,0,%g4	sub	%g0,$num,%o7		! n=-num	ba	.Lcopy	nop.align	32.Lcopy:	ldx	[$tp+%o7],%o0	add	$rp,%o7,%g1	ld	[%g1+0],%o2	ld	[%g1+4],%o3	stx	%g0,[$tp+%o7]	and	%o0,%g4,%o0	srlx	%o0,32,%o1	andn	%o2,%g4,%o2	andn	%o3,%g4,%o3	or	%o2,%o0,%o0	or	%o3,%o1,%o1	st	%o0,[%g1+0]	add	%o7,8,%o7	brnz,pt	%o7,.Lcopy	st	%o1,[%g1+4]	sub	%g0,$num,%o7		! n=-num.Lzap:	stx	%g0,[$ap_l+%o7]	stx	%g0,[$ap_h+%o7]	stx	%g0,[$np_l+%o7]	stx	%g0,[$np_h+%o7]	add	%o7,8,%o7	brnz,pt	%o7,.Lzap	nop	ldx	[%sp+$bias+$frame+48],%o7	wr	%g0,%o7,%asi		! restore %asi	mov	1,%i0.Lret:	ret	restore.type   $fname,#function.size	$fname,(.-$fname).asciz	"Montgomery Multipltication for UltraSPARC, CRYPTOGAMS by <appro\@openssl.org>".align	32___$code =~ s/\`([^\`]*)\`/eval($1)/gem;# Below substitution makes it possible to compile without demanding# VIS extentions on command line, e.g. -xarch=v9 vs. -xarch=v9a. I# dare to do this, because VIS capability is detected at run-time now# and this routine is not called on CPU not capable to execute it. Do# note that fzeros is not the only VIS dependency! Another dependency# is implicit and is just _a_ numerical value loaded to %asi register,# which assembler can't recognize as VIS specific...$code =~ s/fzeros\s+%f([0-9]+)/	   sprintf(".word\t0x%x\t! fzeros %%f%d",0x81b00c20|($1<<25),$1)	  /gem;print $code;# flushclose STDOUT;

⌨️ 快捷键说明

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