KGC_TEST/KGCAPP/3rdparty/miracl/source/mrmuldv.c32

58 lines
1.4 KiB
Plaintext

/*
* Borland C++ 32-bit compiler (BCC32). Use with mirdef.h32
* Uses inline assembly feature. Suitable for Win32 Apps
* Also compatible with Microsoft Visual C++ 32-bit compiler
*/
#define ASM _asm
int muldiv(a,b,c,m,rp)
int a,b,c,m,*rp;
{
ASM mov eax,DWORD PTR a
ASM mul DWORD PTR b
ASM add eax,DWORD PTR c
ASM adc edx,0h
ASM div DWORD PTR m
ASM mov ebx,DWORD PTR rp
ASM mov [ebx],edx
}
int muldvm(a,c,m,rp)
int a,c,m,*rp;
{
ASM mov edx,DWORD PTR a
ASM mov eax,DWORD PTR c
ASM div DWORD PTR m
ASM mov ebx,DWORD PTR rp
ASM mov [ebx],edx
}
int muldvd(a,b,c,rp)
int a,b,c,*rp;
{
ASM mov eax,DWORD PTR a
ASM mul DWORD PTR b
ASM add eax,DWORD PTR c
ASM adc edx,0h
ASM mov ebx,DWORD PTR rp
ASM mov [ebx],eax
ASM mov eax,edx
}
void muldvd2(a,b,c,rp)
int a,b,*c,*rp;
{
ASM mov eax,DWORD PTR a
ASM mul DWORD PTR b
ASM mov ebx,DWORD PTR c
ASM add eax,[ebx]
ASM adc edx,0h
ASM mov esi,DWORD PTR rp
ASM add eax,[esi]
ASM adc edx,0h
ASM mov [esi],eax
ASM mov [ebx],edx
}