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

📄 alpha.s.works

📁 優化過的openssl加解密引擎,適合嵌入式開發環境使用,非常容易移植!
💻 WORKS
字号:
 # DEC Alpha assember # The bn_div64 is actually gcc output but the other parts are hand done. # Thanks to tzeruch@ceddec.com for sending me the gcc output for # bn_div64. # I've gone back and re-done most of routines. # The key thing to remeber for the 164 CPU is that while a # multiply operation takes 8 cycles, another one can only be issued # after 4 cycles have elapsed.  I've done modification to help # improve this.  Also, normally, a ld instruction will not be available # for about 3 cycles.	.file	1 "bn_asm.c"	.set noatgcc2_compiled.:__gnu_compiled_c:	.text	.align 3	.globl bn_mul_add_words	.ent bn_mul_add_wordsbn_mul_add_words:bn_mul_add_words..ng:	.frame $30,0,$26,0	.prologue 0	.align 5	subq	$18,4,$18	bis	$31,$31,$0	blt	$18,$43		# if we are -1, -2, -3 or -4 goto tail code	ldq	$20,0($17)	# 1 1	ldq	$1,0($16)	# 1 1	.align 3$42:	mulq	$20,$19,$5	# 1 2 1	######	ldq	$21,8($17)	# 2 1	ldq	$2,8($16)	# 2 1	umulh	$20,$19,$20	# 1 2	######	ldq	$27,16($17)	# 3 1	ldq	$3,16($16)	# 3 1	mulq	$21,$19,$6	# 2 2 1	######	 ldq	$28,24($17)	# 4 1	addq	$1,$5,$1	# 1 2 2	 ldq	$4,24($16)	# 4 1	umulh	$21,$19,$21	# 2 2	######	 cmpult	$1,$5,$22	# 1 2 3 1	addq	$20,$22,$20	# 1 3 1	 addq	$1,$0,$1	# 1 2 3 1	mulq	$27,$19,$7	# 3 2 1	######	 cmpult	$1,$0,$0	# 1 2 3 2	addq	$2,$6,$2	# 2 2 2	 addq	$20,$0,$0	# 1 3 2 	cmpult	$2,$6,$23	# 2 2 3 1	 addq	$21,$23,$21	# 2 3 1	umulh	$27,$19,$27	# 3 2	######	 addq	$2,$0,$2	# 2 2 3 1	cmpult	$2,$0,$0	# 2 2 3 2	 subq	$18,4,$18	mulq	$28,$19,$8	# 4 2 1	######	 addq	$21,$0,$0	# 2 3 2 	addq	$3,$7,$3	# 3 2 2	 addq	$16,32,$16	cmpult	$3,$7,$24	# 3 2 3 1	 stq	$1,-32($16)	# 1 2 4	umulh	$28,$19,$28	# 4 2	######	 addq	$27,$24,$27	# 3 3 1	addq	$3,$0,$3	# 3 2 3 1	 stq	$2,-24($16)	# 2 2 4	cmpult	$3,$0,$0	# 3 2 3 2	 stq	$3,-16($16)	# 3 2 4	addq	$4,$8,$4	# 4 2 2	 addq	$27,$0,$0	# 3 3 2 	cmpult	$4,$8,$25	# 4 2 3 1	 addq	$17,32,$17	addq	$28,$25,$28	# 4 3 1	 addq	$4,$0,$4	# 4 2 3 1	cmpult	$4,$0,$0	# 4 2 3 2	 stq	$4,-8($16)	# 4 2 4	addq	$28,$0,$0	# 4 3 2 	 blt	$18,$43	ldq	$20,0($17)	# 1 1	ldq	$1,0($16)	# 1 1	br	$42	.align 4$45:	ldq	$20,0($17)	# 4 1	ldq	$1,0($16)	# 4 1	mulq	$20,$19,$5	# 4 2 1	subq	$18,1,$18	addq	$16,8,$16	addq	$17,8,$17	umulh	$20,$19,$20	# 4 2	addq	$1,$5,$1	# 4 2 2	cmpult	$1,$5,$22	# 4 2 3 1	addq	$20,$22,$20	# 4 3 1	addq	$1,$0,$1	# 4 2 3 1	cmpult	$1,$0,$0	# 4 2 3 2	addq	$20,$0,$0	# 4 3 2 	stq	$1,-8($16)	# 4 2 4	bgt	$18,$45	ret	$31,($26),1	# else exit	.align 4$43:	addq	$18,4,$18	bgt	$18,$45		# goto tail code	ret	$31,($26),1	# else exit	.end bn_mul_add_words	.align 3	.globl bn_mul_words	.ent bn_mul_wordsbn_mul_words:bn_mul_words..ng:	.frame $30,0,$26,0	.prologue 0	.align 5	subq	$18,4,$18	bis	$31,$31,$0	blt	$18,$143	# if we are -1, -2, -3 or -4 goto tail code	ldq	$20,0($17)	# 1 1	.align 3$142:	mulq	$20,$19,$5	# 1 2 1	#####	 ldq	$21,8($17)	# 2 1	 ldq	$27,16($17)	# 3 1	umulh	$20,$19,$20	# 1 2	#####	 ldq	$28,24($17)	# 4 1	mulq	$21,$19,$6	# 2 2 1	#####	 addq	$5,$0,$5	# 1 2 3 1	subq	$18,4,$18	 cmpult	$5,$0,$0	# 1 2 3 2	umulh	$21,$19,$21	# 2 2	#####	 addq	$20,$0,$0	# 1 3 2 	addq	$17,32,$17	 addq	$6,$0,$6	# 2 2 3 1	mulq	$27,$19,$7	# 3 2 1	#####	 cmpult	$6,$0,$0	# 2 2 3 2	addq	$21,$0,$0	# 2 3 2 	 addq	$16,32,$16	umulh	$27,$19,$27	# 3 2	#####	 stq	$5,-32($16)	# 1 2 4	mulq	$28,$19,$8	# 4 2 1	#####	 addq	$7,$0,$7	# 3 2 3 1	stq	$6,-24($16)	# 2 2 4	 cmpult	$7,$0,$0	# 3 2 3 2	umulh	$28,$19,$28	# 4 2	#####	 addq	$27,$0,$0	# 3 3 2 	stq	$7,-16($16)	# 3 2 4	 addq	$8,$0,$8	# 4 2 3 1	cmpult	$8,$0,$0	# 4 2 3 2	addq	$28,$0,$0	# 4 3 2 	stq	$8,-8($16)	# 4 2 4	blt	$18,$143	ldq	$20,0($17)	# 1 1	br	$142	.align 4$145:	ldq	$20,0($17)	# 4 1	mulq	$20,$19,$5	# 4 2 1	subq	$18,1,$18	umulh	$20,$19,$20	# 4 2	addq	$5,$0,$5	# 4 2 3 1	 addq	$16,8,$16	cmpult	$5,$0,$0	# 4 2 3 2	 addq	$17,8,$17	addq	$20,$0,$0	# 4 3 2 	stq	$5,-8($16)	# 4 2 4	bgt	$18,$145	ret	$31,($26),1	# else exit	.align 4$143:	addq	$18,4,$18	bgt	$18,$145	# goto tail code	ret	$31,($26),1	# else exit	.end bn_mul_words	.align 3	.globl bn_sqr_words	.ent bn_sqr_wordsbn_sqr_words:bn_sqr_words..ng:	.frame $30,0,$26,0	.prologue 0	subq	$18,4,$18	blt	$18,$543	# if we are -1, -2, -3 or -4 goto tail code	ldq	$20,0($17)	# 1 1	.align 3$542:	mulq	$20,$20,$5		######	 ldq	$21,8($17)	# 1 1	subq	$18,4 	umulh	$20,$20,$1		######	ldq	$27,16($17)	# 1 1	mulq	$21,$21,$6		######	ldq	$28,24($17)	# 1 1	stq	$5,0($16)	# r[0] 	umulh	$21,$21,$2		######	stq	$1,8($16)	# r[1]	mulq	$27,$27,$7		######	stq	$6,16($16)	# r[0] 	umulh	$27,$27,$3		######	stq	$2,24($16)	# r[1]	mulq	$28,$28,$8		######	stq	$7,32($16)	# r[0] 	umulh	$28,$28,$4		######	stq	$3,40($16)	# r[1] 	addq	$16,64,$16 	addq	$17,32,$17	stq	$8,-16($16)	# r[0]	stq	$4,-8($16)	# r[1]	blt	$18,$543	ldq	$20,0($17)	# 1 1 	br 	$542$442:	ldq	$20,0($17)   # a[0]	mulq	$20,$20,$5  # a[0]*w low part       r2	addq	$16,16,$16	addq	$17,8,$17	subq	$18,1,$18        umulh	$20,$20,$1  # a[0]*w high part       r3	stq	$5,-16($16)   # r[0]        stq	$1,-8($16)   # r[1]	bgt	$18,$442	ret	$31,($26),1	# else exit	.align 4$543:	addq	$18,4,$18	bgt	$18,$442	# goto tail code	ret	$31,($26),1	# else exit	.end bn_sqr_words	.align 3	.globl bn_add_words	.ent bn_add_wordsbn_add_words:bn_add_words..ng:	.frame $30,0,$26,0	.prologue 0	subq	$19,4,$19	bis	$31,$31,$0	# carry = 0	blt	$19,$900	ldq	$5,0($17)	# a[0]	ldq	$1,0($18)	# b[1]	.align 3$901:	addq	$1,$5,$1	# r=a+b;	 ldq	$6,8($17)	# a[1]	cmpult	$1,$5,$22	# did we overflow?	 ldq	$2,8($18)	# b[1]	addq	$1,$0,$1	# c+= overflow	 ldq	$7,16($17)	# a[2]	cmpult	$1,$0,$0	# overflow?	 ldq	$3,16($18)	# b[2]	addq	$0,$22,$0	 ldq	$8,24($17)	# a[3]	addq	$2,$6,$2	# r=a+b;	 ldq	$4,24($18)	# b[3]	cmpult	$2,$6,$23	# did we overflow?	 addq	$3,$7,$3	# r=a+b;	addq	$2,$0,$2	# c+= overflow	 cmpult	$3,$7,$24	# did we overflow?	cmpult	$2,$0,$0	# overflow?	 addq	$4,$8,$4	# r=a+b;	addq	$0,$23,$0	 cmpult	$4,$8,$25	# did we overflow?	addq	$3,$0,$3	# c+= overflow	 stq	$1,0($16)	# r[0]=c	cmpult	$3,$0,$0	# overflow?	 stq	$2,8($16)	# r[1]=c	addq	$0,$24,$0	 stq	$3,16($16)	# r[2]=c	addq	$4,$0,$4	# c+= overflow	 subq	$19,4,$19	# loop--	cmpult	$4,$0,$0	# overflow?	 addq	$17,32,$17	# a++	addq	$0,$25,$0	 stq	$4,24($16)	# r[3]=c	addq	$18,32,$18	# b++	 addq	$16,32,$16	# r++	blt	$19,$900	 ldq	$5,0($17)	# a[0]	ldq	$1,0($18)	# b[1]	 br	$901	.align 4$945:	ldq	$5,0($17)	# a[0]	 ldq	$1,0($18)	# b[1]	addq	$1,$5,$1	# r=a+b;	 subq	$19,1,$19	# loop--	addq	$1,$0,$1	# c+= overflow	 addq	$17,8,$17	# a++	cmpult	$1,$5,$22	# did we overflow?	 cmpult	$1,$0,$0	# overflow?	addq	$18,8,$18	# b++	 stq	$1,0($16)	# r[0]=c	addq	$0,$22,$0	 addq	$16,8,$16	# r++	bgt	$19,$945	ret	$31,($26),1	# else exit$900:	addq	$19,4,$19	bgt	$19,$945	# goto tail code	ret	$31,($26),1	# else exit	.end bn_add_words # # What follows was taken directly from the C compiler with a few # hacks to redo the lables. #.text	.align 3	.globl bn_div64	.ent bn_div64bn_div64:	ldgp $29,0($27)bn_div64..ng:	lda $30,-48($30)	.frame $30,48,$26,0	stq $26,0($30)	stq $9,8($30)	stq $10,16($30)	stq $11,24($30)	stq $12,32($30)	stq $13,40($30)	.mask 0x4003e00,-48	.prologue 1	bis $16,$16,$9	bis $17,$17,$10	bis $18,$18,$11	bis $31,$31,$13	bis $31,2,$12	bne $11,$119	lda $0,-1	br $31,$136	.align 4$119:	bis $11,$11,$16	jsr $26,BN_num_bits_word	ldgp $29,0($26)	subq $0,64,$1	beq $1,$120	bis $31,1,$1	sll $1,$0,$1	cmpule $9,$1,$1	bne $1,$120 #	lda $16,_IO_stderr_ #	lda $17,$C32 #	bis $0,$0,$18 #	jsr $26,fprintf #	ldgp $29,0($26)	jsr $26,abort	ldgp $29,0($26)	.align 4$120:	bis $31,64,$3	cmpult $9,$11,$2	subq $3,$0,$1	addl $1,$31,$0	subq $9,$11,$1	cmoveq $2,$1,$9	beq $0,$122	zapnot $0,15,$2	subq $3,$0,$1	sll $11,$2,$11	sll $9,$2,$3	srl $10,$1,$1	sll $10,$2,$10	bis $3,$1,$9$122:	srl $11,32,$5	zapnot $11,15,$6	lda $7,-1	.align 5$123:	srl $9,32,$1	subq $1,$5,$1	bne $1,$126	zapnot $7,15,$27	br $31,$127	.align 4$126:	bis $9,$9,$24	bis $5,$5,$25	divqu $24,$25,$27$127:	srl $10,32,$4	.align 5$128:	mulq $27,$5,$1	subq $9,$1,$3	zapnot $3,240,$1	bne $1,$129	mulq $6,$27,$2	sll $3,32,$1	addq $1,$4,$1	cmpule $2,$1,$2	bne $2,$129	subq $27,1,$27	br $31,$128	.align 4$129:	mulq $27,$6,$1	mulq $27,$5,$4	srl $1,32,$3	sll $1,32,$1	addq $4,$3,$4	cmpult $10,$1,$2	subq $10,$1,$10	addq $2,$4,$2	cmpult $9,$2,$1	bis $2,$2,$4	beq $1,$134	addq $9,$11,$9	subq $27,1,$27$134:	subl $12,1,$12	subq $9,$4,$9	beq $12,$124	sll $27,32,$13	sll $9,32,$2	srl $10,32,$1	sll $10,32,$10	bis $2,$1,$9	br $31,$123	.align 4$124:	bis $13,$27,$0$136:	ldq $26,0($30)	ldq $9,8($30)	ldq $10,16($30)	ldq $11,24($30)	ldq $12,32($30)	ldq $13,40($30)	addq $30,48,$30	ret $31,($26),1	.end bn_div64	.set noat	.text	.align 3	.globl bn_sub_words	.ent bn_sub_wordsbn_sub_words:bn_sub_words..ng:	.frame $30,0,$26,0	.prologue 0	subq	$19,	4,	$19	bis	$31,	$31,	$0	blt	$19,	$100	ldq	$1,	0($17)	ldq	$2,	0($18)$101:	ldq	$3,	8($17)	cmpult	$1,	$2,	$4	ldq	$5,	8($18)	subq	$1,	$2,	$1	ldq	$6,	16($17)	cmpult	$1,	$0,	$2	ldq	$7,	16($18)	subq	$1,	$0,	$23	ldq	$8,	24($17)	addq	$2,	$4,	$0	cmpult	$3,	$5,	$24	subq	$3,	$5,	$3	ldq	$22,	24($18)	cmpult	$3,	$0,	$5	subq	$3,	$0,	$25	addq	$5,	$24,	$0	cmpult	$6,	$7,	$27	subq	$6,	$7,	$6	stq	$23,	0($16)	cmpult	$6,	$0,	$7	subq	$6,	$0,	$28	addq	$7,	$27,	$0	cmpult	$8,	$22,	$21	subq	$8,	$22,	$8	stq	$25,	8($16)	cmpult	$8,	$0,	$22	subq	$8,	$0,	$20	addq	$22,	$21,	$0	stq	$28,	16($16)	subq	$19,	4,	$19	stq	$20,	24($16)	addq	$17,	32,	$17	addq	$18,	32,	$18	addq	$16,	32,	$16	blt	$19,	$100	ldq	$1,	0($17)	ldq	$2,	0($18)	br	$101$102:	ldq	$1,	0($17)	ldq	$2,	0($18)	cmpult	$1,	$2,	$27	subq	$1,	$2,	$1	cmpult	$1,	$0,	$2	subq	$1,	$0,	$1	stq	$1,	0($16)	addq	$2,	$27,	$0	addq	$17,	8,	$17	addq	$18,	8,	$18	addq	$16,	8,	$16	subq	$19,	1,	$19	bgt	$19,	$102	ret	$31,($26),1$100:	addq	$19,	4,	$19	bgt	$19,	$102$103:	ret	$31,($26),1	.end bn_sub_words

⌨️ 快捷键说明

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