idigitvecmult.s

来自「Arithmetic for integers of almost unlimi」· S 代码 · 共 37 行

S
37
字号
#include <config.h>/*  Alpha assembly support for libI  Written by Thomas Papanikolaou, June 2 1998  internal version for John Cremona*/	.set noreorder	.set noat.text	.align 3        .globl DigitVecMult        .ent DigitVecMultDigitVecMult:        .frame $30,0,$26,0        .prologue 0        bis $31,$31,$0		# carry = 0        ble $19,.Lend		# if (l < 0) return carry        .align 5.Loop:        ldq $3,0($17)		# aa = *a        mulq $3,$18,$1		# tmp = low_digit(aa * m)        addq $17,8,$17		# a++        subl $19,1,$19		# l--        addq $1,$0,$1		# tmp += carry        cmpult $1,$0,$2		# tmp2 = (tmp < carry)        stq $1,0($16)		# *res = tmp        addq $16,8,$16		# res++        umulh $3,$18,$1		# tmp = high_digit(aa * m)        addq $1,$2,$0		# tmp += tmp2;        bgt $19,.Loop		# if (l > 0) goto .Loop.Lend:        ret $31,($26),1        .end DigitVecMult

⌨️ 快捷键说明

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