1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-11-12 21:58:50 +01:00

More of Brian Gladman's contributed files.

This commit is contained in:
Werner Koch 2003-12-03 15:21:08 +00:00
parent 069ab845d1
commit f7264fb7f6
10 changed files with 2632 additions and 0 deletions

View File

@ -0,0 +1,21 @@
Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpg", "gpg.vcproj", "{94134F3A-6236-4B20-8E86-F9CF43ADE332}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
Release = Release
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{94134F3A-6236-4B20-8E86-F9CF43ADE332}.Debug.ActiveCfg = Debug|Win32
{94134F3A-6236-4B20-8E86-F9CF43ADE332}.Debug.Build.0 = Debug|Win32
{94134F3A-6236-4B20-8E86-F9CF43ADE332}.Release.ActiveCfg = Release|Win32
{94134F3A-6236-4B20-8E86-F9CF43ADE332}.Release.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,116 @@
; i80586 add_n -- Add two limb vectors of the same length > 0 and store
; sum in a third limb vector.
;
; Copyright (C) 1992, 1994, 1995, 1996, 1998,
; 2001 Free Software Foundation, Inc.
;
; This file is part of GnuPG.
;
; GnuPG is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; GnuPG is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
;
; Modified versions of the GPG i586 assembler for use with NASM. This
; file is part of a native port of Gnu PG for use with Microsoft Visual
; Studio .net. Ported by Brian Gladman <brg@gladman.uk.net> March 2002.
global _mpihelp_add_n
section .text
align 8
_mpihelp_add_n:
push edi
push esi
push ebx
push ebp
mov edi,[20+esp]
mov esi,[24+esp]
mov ebp,[28+esp]
mov ecx,[32+esp]
mov ebx,[ebp]
dec ecx
mov edx,ecx
shr ecx,3
and edx,7
test ecx,ecx
jz short .2
push edx
align 8
.1: mov eax,[28+edi]
lea edi,[32+edi]
mov eax,[esi]
mov edx,[4+esi]
adc eax,ebx
mov ebx,[4+ebp]
adc edx,ebx
mov ebx,[8+ebp]
mov [-32+edi],eax
mov [-28+edi],edx
mov eax,[8+esi]
mov edx,[12+esi]
adc eax,ebx
mov ebx,[12+ebp]
adc edx,ebx
mov ebx,[16+ebp]
mov [-24+edi],eax
mov [-20+edi],edx
mov eax,[16+esi]
mov edx,[20+esi]
adc eax,ebx
mov ebx,[20+ebp]
adc edx,ebx
mov ebx,[24+ebp]
mov [-16+edi],eax
mov [-12+edi],edx
mov eax,[24+esi]
mov edx,[28+esi]
adc eax,ebx
mov ebx,[28+ebp]
adc edx,ebx
mov ebx,[32+ebp]
mov [-8+edi],eax
mov [-4+edi],edx
lea esi,[32+esi]
lea ebp,[32+ebp]
dec ecx
jnz short .1
pop edx
.2:
dec edx
js short .4
inc edx
.3: lea edi,[4+edi]
mov eax,[esi]
adc eax,ebx
mov ebx,[4+ebp]
mov [-4+edi],eax
lea esi,[4+esi]
lea ebp,[4+ebp]
dec edx
jnz short .3
.4: mov eax,[esi]
adc eax,ebx
mov [edi],eax
sbb eax,eax
neg eax
pop ebp
pop ebx
pop esi
pop edi
ret
end

View File

@ -0,0 +1,185 @@
; 80586 lshift
;
; Copyright (C) 1992, 1994, 1995, 1996, 1998,
; 2001 Free Software Foundation, Inc.
;
; This file is part of GnuPG.
;
; GnuPG is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; GnuPG is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
;
; Modified versions of the GPG i586 assembler for use with NASM. This
; file is part of a native port of Gnu PG for use with Microsoft Visual
; Studio .net. Ported by Brian Gladman <brg@gladman.uk.net> March 2002.
global _mpihelp_lshift
section .text
align 8
_mpihelp_lshift:
push edi
push esi
push ebx
push ebp
mov edi,[20+esp]
mov esi,[24+esp]
mov ebp,[28+esp]
mov ecx,[32+esp]
cmp ecx,1
jne short .1
lea eax,[4+esi]
cmp eax,edi
jnc .6
lea eax,[esi+ebp*4]
cmp edi,eax
jnc .6
.1: lea edi,[-4+edi+ebp*4]
lea esi,[-4+esi+ebp*4]
mov edx,[esi]
sub esi, 4
xor eax,eax
shld eax,edx,cl
push eax
dec ebp
push ebp
shr ebp,3
jz short .3
mov eax, [edi]
align 4
.2: mov eax,[-28+edi]
mov ebx,edx
mov eax,[esi]
mov edx,[-4+esi]
shld ebx,eax,cl
shld eax,edx,cl
mov [edi],ebx
mov [-4+edi],eax
mov ebx,[-8+esi]
mov eax,[-12+esi]
shld edx,ebx,cl
shld ebx,eax,cl
mov [-8+edi],edx
mov [-12+edi],ebx
mov edx,[-16+esi]
mov ebx,[-20+esi]
shld eax,edx,cl
shld edx,ebx,cl
mov [-16+edi],eax
mov [-20+edi],edx
mov eax,[-24+esi]
mov edx,[-28+esi]
shld ebx,eax,cl
shld eax,edx,cl
mov [-24+edi],ebx
mov [-28+edi],eax
sub esi,32
sub edi,32
dec ebp
jnz short .2
.3: pop ebp
and ebp,7
jz short .5
.4: mov eax,[esi]
shld edx,eax,cl
mov [edi],edx
mov edx,eax
sub esi,4
sub edi,4
dec ebp
jnz short .4
.5: shl edx,cl
mov [edi],edx
pop eax
pop ebp
pop ebx
pop esi
pop edi
ret
.6: mov edx,[esi]
add esi,4
dec ebp
push ebp
shr ebp,3
add edx,edx
inc ebp
dec ebp
jz short .8
mov eax, [edi]
align 4
.7: mov eax,[28+edi]
mov ebx,edx
mov eax,[esi]
mov edx,[4+esi]
adc eax,eax
mov [edi],ebx
adc edx,edx
mov [4+edi],eax
mov ebx,[8+esi]
mov eax,[12+esi]
adc ebx,ebx
mov [8+edi],edx
adc eax,eax
mov [12+edi],ebx
mov edx,[16+esi]
mov ebx,[20+esi]
adc edx,edx
mov [16+edi],eax
adc ebx,ebx
mov [20+edi],edx
mov eax,[24+esi]
mov edx,[28+esi]
adc eax,eax
mov [24+edi],ebx
adc edx,edx
mov [28+edi],eax
lea esi,[32+esi]
lea edi,[32+edi]
dec ebp
jnz short .7
.8: pop ebp
sbb eax,eax
and ebp,7
jz short .10
add eax,eax
.9: mov ebx,edx
mov edx,[esi]
adc edx,edx
mov [edi],ebx
lea esi,[4+esi]
lea edi,[4+edi]
dec ebp
jnz short .9
jmp short .11
.10:add eax,eax
.11:mov [edi],edx
sbb eax,eax
neg eax
pop ebp
pop ebx
pop esi
pop edi
ret
end

View File

@ -0,0 +1,70 @@
; i80586 mul_1 -- Multiply a limb vector with a limb and store the
; result in a second limb vector.
;
; Copyright (C) 1992, 1994, 1995, 1996, 1998,
; 2001 Free Software Foundation, Inc.
;
; This file is part of GnuPG.
;
; GnuPG is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; GnuPG is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
;
; Modified versions of the GPG i586 assembler for use with NASM. This
; file is part of a native port of Gnu PG for use with Microsoft Visual
; Studio .net. Ported by Brian Gladman <brg@gladman.uk.net> March 2002.
%define res_ptr edi
%define s1_ptr esi
%define size ecx
%define s2_limb ebp
global _mpihelp_mul_1
section .text
align 8
_mpihelp_mul_1:
push edi
push esi
push ebx
push ebp
mov res_ptr,[esp+20]
mov s1_ptr,[esp+24]
mov size,[esp+28]
mov s2_limb,[esp+32]
lea res_ptr,[res_ptr+size*4]
lea s1_ptr,[s1_ptr+size*4]
neg size
xor ebx,ebx
align 8
.1:
adc ebx,0
mov eax,[s1_ptr+size*4]
mul s2_limb
add ebx,eax
mov [res_ptr+size*4],ebx
inc size
mov ebx,edx
jnz short .1
adc ebx,0
mov eax,ebx
pop ebp
pop ebx
pop esi
pop edi
ret
end

View File

@ -0,0 +1,73 @@
; i80586 addmul_1 -- Multiply a limb vector with a limb and add
; the result to a second limb vector.
;
; Copyright (C) 1992, 1994, 1995, 1996, 1998,
; 2001 Free Software Foundation, Inc.
;
; This file is part of GnuPG.
;
; GnuPG is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; GnuPG is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
;
; Modified versions of the GPG i586 assembler for use with NASM. This
; file is part of a native port of Gnu PG for use with Microsoft Visual
; Studio .net. Ported by Brian Gladman <brg@gladman.uk.net> March 2002.
%define res_ptr edi
%define s1_ptr esi
%define size ecx
%define s2_limb ebp
global _mpihelp_addmul_1
section .text
align 8
_mpihelp_addmul_1:
push edi
push esi
push ebx
push ebp
mov res_ptr,[esp+20]
mov s1_ptr,[esp+24]
mov size,[esp+28]
mov s2_limb,[esp+32]
lea res_ptr,[res_ptr+4*size]
lea s1_ptr,[s1_ptr+4*size]
neg size
xor ebx,ebx
align 8
.1:
adc ebx,0
mov eax,[s1_ptr+4*size]
mul s2_limb
add eax,ebx
mov ebx,[res_ptr+4*size]
adc edx,0
add ebx,eax
mov [res_ptr+4*size],ebx
inc size
mov ebx,edx
jnz short .1
adc ebx,0
mov eax,ebx
pop ebp
pop ebx
pop esi
pop edi
ret
end

View File

@ -0,0 +1,72 @@
; i80586 submul_1 -- Multiply a limb vector with a limb and add
; the result to a second limb vector.
;
; Copyright (C) 1992, 1994, 1995, 1996, 1998,
; 2001 Free Software Foundation, Inc.
;
; This file is part of GnuPG.
;
; GnuPG is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; GnuPG is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
;
; Modified versions of the GPG i586 assembler for use with NASM. This
; file is part of a native port of Gnu PG for use with Microsoft Visual
; Studio .net. Ported by Brian Gladman <brg@gladman.uk.net> March 2002.
global _mpihelp_submul_1
%define res_ptr edi
%define s1_ptr esi
%define size ecx
%define s2_limb ebp
section .text
align 8
_mpihelp_submul_1:
push edi
push esi
push ebx
push ebp
mov res_ptr,[esp+20]
mov s1_ptr,[esp+24]
mov size,[esp+28]
mov s2_limb,[esp+32]
lea res_ptr,[res_ptr+size*4]
lea s1_ptr,[s1_ptr+size*4]
neg size
xor ebx,ebx
align 8
.1: adc ebx,0
mov eax,[s1_ptr+size*4]
mul s2_limb
add eax,ebx
mov ebx,[res_ptr+size*4]
adc edx,0
sub ebx,eax
mov [res_ptr+size*4],ebx
inc size
mov ebx,edx
jnz short .1
adc ebx,0
mov eax,ebx
pop ebp
pop ebx
pop esi
pop edi
ret
end

View File

@ -0,0 +1,187 @@
; i80586 rshift
;
; Copyright (C) 1992, 1994, 1995, 1996, 1998,
; 2001 Free Software Foundation, Inc.
;
; This file is part of GnuPG.
;
; GnuPG is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; GnuPG is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
;
; Modified versions of the GPG i586 assembler for use with NASM. This
; file is part of a native port of Gnu PG for use with Microsoft Visual
; Studio .net. Ported by Brian Gladman <brg@gladman.uk.net> March 2002.
global _mpihelp_rshift
section .text
align 8
_mpihelp_rshift:
push edi
push esi
push ebx
push ebp
mov edi,[20+esp]
mov esi,[24+esp]
mov ebp,[28+esp]
mov ecx,[32+esp]
cmp ecx,1
jne short .1
lea eax,[4+edi]
cmp eax,esi
jnc .6
lea eax,[edi+ebp*4]
cmp esi,eax
jnc .6
.1:
mov edx,[esi]
add esi,4
xor eax,eax
shrd eax,edx,cl
push eax
dec ebp
push ebp
shr ebp,3
jz short .3
mov eax, [edi]
align 4
.2: mov eax,[28+edi]
mov ebx,edx
mov eax,[esi]
mov edx,[4+esi]
shrd ebx,eax,cl
shrd eax,edx,cl
mov [edi],ebx
mov [4+edi],eax
mov ebx,[8+esi]
mov eax,[12+esi]
shrd edx,ebx,cl
shrd ebx,eax,cl
mov [8+edi],edx
mov [12+edi],ebx
mov edx,[16+esi]
mov ebx,[20+esi]
shrd eax,edx,cl
shrd edx,ebx,cl
mov [16+edi],eax
mov [20+edi],edx
mov eax,[24+esi]
mov edx,[28+esi]
shrd ebx,eax,cl
shrd eax,edx,cl
mov [24+edi],ebx
mov [28+edi],eax
add esi,32
add edi,32
dec ebp
jnz short .2
.3: pop ebp
and ebp,7
jz .5
.4:
mov eax,[esi]
shrd edx,eax,cl
mov [edi],edx
mov edx,eax
add esi,4
add edi,4
dec ebp
jnz short .4
.5: shr edx,cl
mov [edi],edx
pop eax
pop ebp
pop ebx
pop esi
pop edi
ret
.6:
lea edi,[-4+edi+ebp*4]
lea esi,[-4+esi+ebp*4]
mov edx,[esi]
sub esi,4
dec ebp
push ebp
shr ebp,3
shr edx,1
inc ebp
dec ebp
jz short .8
mov eax, [edi]
align 4
.7: mov eax,[-28+edi]
mov ebx,edx
mov eax,[esi]
mov edx,[-4+esi]
rcr eax,1
mov [edi],ebx
rcr edx,1
mov [-4+edi],eax
mov ebx,[-8+esi]
mov eax,[-12+esi]
rcr ebx,1
mov [-8+edi],edx
rcr eax,1
mov [-12+edi],ebx
mov edx,[-16+esi]
mov ebx,[-20+esi]
rcr edx,1
mov [-16+edi],eax
rcr ebx,1
mov [-20+edi],edx
mov eax,[-24+esi]
mov edx,[-28+esi]
rcr eax,1
mov [-24+edi],ebx
rcr edx,1
mov [-28+edi],eax
lea esi,[-32+esi]
lea edi,[-32+edi]
dec ebp
jnz short .7
.8:
pop ebp
sbb eax,eax
and ebp,7
jz .10
add eax,eax
.9:
mov ebx,edx
mov edx,[esi]
rcr edx,1
mov [edi],ebx
lea esi,[-4+esi]
lea edi,[-4+edi]
dec ebp
jnz short .9
jmp short .11
.10:add eax,eax
.11:mov [edi],edx
mov eax,0
rcr eax,1
pop ebp
pop ebx
pop esi
pop edi
ret
end

View File

@ -0,0 +1,114 @@
; i80586 sub_n -- Sub two limb vectors of the same length > 0 and store
; sum in a third limb vector.
;
; Copyright (C) 1992, 1994, 1995, 1996, 1998,
; 2001 Free Software Foundation, Inc.
;
; This file is part of GnuPG.
;
; GnuPG is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; GnuPG is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
;
; Modified versions of the GPG i586 assembler for use with NASM. This
; file is part of a native port of Gnu PG for use with Microsoft Visual
; Studio .net. Ported by Brian Gladman <brg@gladman.uk.net> March 2002.
global _mpihelp_sub_n
section .text
align 8
_mpihelp_sub_n:
push edi
push esi
push ebx
push ebp
mov edi,[20+esp]
mov esi,[24+esp]
mov ebp,[28+esp]
mov ecx,[32+esp]
mov ebx,[ebp]
dec ecx
mov edx,ecx
shr ecx,3
and edx,7
test ecx,ecx
jz short .2
push edx
align 8
.1: mov eax,[28+edi]
lea edi,[32+edi]
mov eax,[esi]
mov edx,[4+esi]
sbb eax,ebx
mov ebx,[4+ebp]
sbb edx,ebx
mov ebx,[8+ebp]
mov [-32+edi],eax
mov [-28+edi],edx
mov eax,[8+esi]
mov edx,[12+esi]
sbb eax,ebx
mov ebx,[12+ebp]
sbb edx,ebx
mov ebx,[16+ebp]
mov [-24+edi],eax
mov [-20+edi],edx
mov eax,[16+esi]
mov edx,[20+esi]
sbb eax,ebx
mov ebx,[20+ebp]
sbb edx,ebx
mov ebx,[24+ebp]
mov [-16+edi],eax
mov [-12+edi],edx
mov eax,[24+esi]
mov edx,[28+esi]
sbb eax,ebx
mov ebx,[28+ebp]
sbb edx,ebx
mov ebx,[32+ebp]
mov [-8+edi],eax
mov [-4+edi],edx
lea esi,[32+esi]
lea ebp,[32+ebp]
dec ecx
jnz short .1
pop edx
.2: dec edx
js short .4
inc edx
.3: lea edi,[4+edi]
mov eax,[esi]
sbb eax,ebx
mov ebx,[4+ebp]
mov [-4+edi],eax
lea esi,[4+esi]
lea ebp,[4+ebp]
dec edx
jnz short .3
.4: mov eax,[esi]
sbb eax,ebx
mov [edi],eax
sbb eax,eax
neg eax
pop ebp
pop ebx
pop esi
pop edi
ret
end