idigitvecmult.s

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

S
56
字号
! Integer Version 2.0, RD, 12.2.93, Sparc8	idigitvecmult.s!	Differences to idigitvecmultadd.s#include <config.h>	.global	DigitVecMultDigitVecMult:    tst %o3    ble Lvma1    mov 0, %g1          	! carry    ld [%o1], %o5   		! *a    subcc %o3, 1, %o3   	! count--!    ld [%o0], %o4   		! *paccu    inc 4, %o1          	! a++    ble Lvma3    umul %o5, %o2, %g2   	! *a * mLvma2:    ld  [%o1], %o5  		! *a!    addcc %o4, %g1, %o4     	! pp+h -> l    			1!    addx    %g0, %g0, %g1       ! new carry!    addcc   %g2, %o4, %o4       ! carry + *paccu + prod(low)    1    addcc   %g2, %g1, %o4       ! carry + *paccu + prod(low)    1    st  %o4, [%o0]          	! *paccu =    inc 4, %o1      		! a++                   	1    rd  %y, %g3                 !   				1!    addx    %g1, %g3, %g1       ! carry += prod(high)    addx    %g0, %g3, %g1       ! carry += prod(high)    inc 4, %o0      		! paccu++                   	1!    ld  [%o0], %o4          	! *paccu    subcc   %o3, 1, %o3     	! count--    bg  Lvma2               	! loop          		1    umul %o5, %o2, %g2      	! *a * m        		5Lvma3:!    addcc %o4, %g1, %o4     	! pp+h -> l!    addx    %g0, %g0, %g1       ! new carry    rd  %y, %o3!    addcc   %g2, %o4, %o4       ! carry + *paccu + prod(low)    addcc   %g2, %g1, %o4       ! carry + *paccu + prod(low)!    addx    %g1, %o3, %g1       ! carry += prod(high)    addx    %g0, %o3, %g1       ! carry += prod(high)    st  %o4, [%o0]          	! *paccu =Lvma1:    retl    mov %g1, %o0        	! return carry

⌨️ 快捷键说明

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