idigitvecmult.c

来自「Arithmetic for integers of almost unlimi」· C语言 代码 · 共 45 行

C
45
字号
/* idigitvecmult.c - inline assembler code for MSVC++6.0 on Intel586 *//* TPf, Sep 1999 */#include <iint.h>#include <idigit.h>#if !defined(USE_C_DIGITVECMULT)DigitType DigitVecMult(res, a, m, l)    DigitType *res, *a, m;    int l; /* res[0..l-1] = a[0..l-1]*m; return CARRY;   */{__asm    {/*	.text	.align 4	.globl USCORE(DigitVecMult)USCORE(DigitVecMult): */	mov ebx, res		; DWORD PTR 20[esp]	mov edi, a		; DWORD PTR 24[esp]	mov esi, m		; DWORD PTR 28[esp]	mov ecx, l		; DWORD PTR 32[esp]	xor ebp,ebp	test ecx,ecx		; 	jz L2			; jump if ecx is zeroL1:	mov eax, DWORD PTR [edi]	add edi, 4	mul esi	add eax, ebp	mov ebp, edx	adc ebp, 0	mov DWORD PTR [ebx], eax	add ebx, 4	dec ecx	jnz L1L2:	mov eax, ebp    }}#endif

⌨️ 快捷键说明

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