More NASM support code it still doesn't work but it doesn't work less than it

didn't work before :-)
This commit is contained in:
Dr. Stephen Henson 1999-07-12 18:12:43 +00:00
parent 5059658219
commit bbdb543844
8 changed files with 113 additions and 13 deletions

View File

@ -32,7 +32,7 @@ sub fcrypt_body
&xor( $R, $R); &xor( $R, $R);
&mov($ks,&wparam(1)); &mov($ks,&wparam(1));
&push(25); # add a variable &push(&DWC(25)); # add a variable
&set_label("start"); &set_label("start");
for ($i=0; $i<16; $i+=2) for ($i=0; $i<16; $i+=2)

View File

@ -44,15 +44,15 @@ sub des_encrypt3
&mov("edi",&wparam(2)); &mov("edi",&wparam(2));
&mov("eax",&wparam(3)); &mov("eax",&wparam(3));
} }
&mov(&swtmp(2), (($enc)?"1":"0")); &mov(&swtmp(2), (DWC(($enc)?"1":"0")));
&mov(&swtmp(1), "eax"); &mov(&swtmp(1), "eax");
&mov(&swtmp(0), "ebx"); &mov(&swtmp(0), "ebx");
&call("des_encrypt2"); &call("des_encrypt2");
&mov(&swtmp(2), (($enc)?"0":"1")); &mov(&swtmp(2), (DWC(($enc)?"0":"1")));
&mov(&swtmp(1), "edi"); &mov(&swtmp(1), "edi");
&mov(&swtmp(0), "ebx"); &mov(&swtmp(0), "ebx");
&call("des_encrypt2"); &call("des_encrypt2");
&mov(&swtmp(2), (($enc)?"1":"0")); &mov(&swtmp(2), (DWC(($enc)?"1":"0")));
&mov(&swtmp(1), "esi"); &mov(&swtmp(1), "esi");
&mov(&swtmp(0), "ebx"); &mov(&swtmp(0), "ebx");
&call("des_encrypt2"); &call("des_encrypt2");

View File

@ -51,6 +51,16 @@ sub main'DWP
&get_mem("DWORD",@_); &get_mem("DWORD",@_);
} }
sub main'BC
{
return @_;
}
sub main'DWC
{
return @_;
}
sub main'stack_push sub main'stack_push
{ {
local($num)=@_; local($num)=@_;

View File

@ -27,7 +27,14 @@ $label="L000";
sub main'asm_init_output { @out=(); } sub main'asm_init_output { @out=(); }
sub main'asm_get_output { return(@out); } sub main'asm_get_output { return(@out); }
sub main'get_labels { return(@labels); } sub main'get_labels { return(@labels); }
sub main'external_label { push(@labels,@_); push(@out, "EXTERN\t$_[0]"); }
sub main'external_label
{
push(@labels,@_);
foreach (@_) {
push(@out, "extern\t_$_\n");
}
}
sub main'LB sub main'LB
{ {
@ -51,6 +58,16 @@ sub main'DWP
&get_mem("DWORD",@_); &get_mem("DWORD",@_);
} }
sub main'BC
{
return "BYTE @_";
}
sub main'DWC
{
return "DWORD @_";
}
sub main'stack_push sub main'stack_push
{ {
my($num)=@_; my($num)=@_;
@ -69,7 +86,7 @@ sub get_mem
{ {
my($size,$addr,$reg1,$reg2,$idx)=@_; my($size,$addr,$reg1,$reg2,$idx)=@_;
my($t,$post); my($t,$post);
my($ret)="[$size "; my($ret)="[";
$addr =~ s/^\s+//; $addr =~ s/^\s+//;
if ($addr =~ /^(.+)\+(.+)$/) if ($addr =~ /^(.+)\+(.+)$/)
{ {
@ -192,7 +209,7 @@ sub using486
sub main'file sub main'file
{ {
push(@out, "segment .text"); push(@out, "segment .text\n");
} }
sub main'function_begin sub main'function_begin
@ -201,7 +218,7 @@ sub main'function_begin
push(@labels,$func); push(@labels,$func);
my($tmp)=<<"EOF"; my($tmp)=<<"EOF";
GLOBAL _$func global _$func
_$func: _$func:
push ebp push ebp
push ebx push ebx
@ -216,7 +233,7 @@ sub main'function_begin_B
{ {
my($func,$extra)=@_; my($func,$extra)=@_;
my($tmp)=<<"EOF"; my($tmp)=<<"EOF";
GLOBAL _$func global _$func
_$func: _$func:
EOF EOF
push(@out,$tmp); push(@out,$tmp);

View File

@ -100,6 +100,16 @@ sub main'BP
return(&main'DWP(@_)); return(&main'DWP(@_));
} }
sub main'BC
{
return @_;
}
sub main'DWC
{
return @_;
}
#sub main'BP #sub main'BP
# { # {
# local($addr,$reg1,$reg2,$idx)=@_; # local($addr,$reg1,$reg2,$idx)=@_;

57
ms/x86asm.bat Executable file
View File

@ -0,0 +1,57 @@
@echo off
echo Generating x86 assember
echo Bignum
cd crypto\bn\asm
perl x86.pl win32n > bn-win32.asm
cd ..\..\..
echo DES
cd crypto\des\asm
perl des-586.pl win32n > d-win32.asm
cd ..\..\..
echo "crypt(3)"
cd crypto\des\asm
perl crypt586.pl win32n > y-win32.asm
cd ..\..\..
echo Blowfish
cd crypto\bf\asm
perl bf-586.pl win32n > b-win32.asm
cd ..\..\..
echo CAST5
cd crypto\cast\asm
perl cast-586.pl win32n > c-win32.asm
cd ..\..\..
echo RC4
cd crypto\rc4\asm
perl rc4-586.pl win32n > r4-win32.asm
cd ..\..\..
echo MD5
cd crypto\md5\asm
perl md5-586.pl win32n > m5-win32.asm
cd ..\..\..
echo SHA1
cd crypto\sha\asm
perl sha1-586.pl win32n > s1-win32.asm
cd ..\..\..
echo RIPEMD160
cd crypto\ripemd\asm
perl rmd-586.pl win32n > rm-win32.asm
cd ..\..\..
echo RC5\32
cd crypto\rc5\asm
perl rc5-586.pl win32n > r5-win32.asm
cd ..\..\..
echo on

View File

@ -58,6 +58,7 @@ and [options] can be one of
no-ssl2 no-ssl3 - Skip this version of SSL no-ssl2 no-ssl3 - Skip this version of SSL
just-ssl - remove all non-ssl keys/digest just-ssl - remove all non-ssl keys/digest
no-asm - No x86 asm no-asm - No x86 asm
nasm - Use NASM for x86 asm
no-socks - No socket code no-socks - No socket code
no-err - No error strings no-err - No error strings
dll/shlib - Build shared libraries (MS) dll/shlib - Build shared libraries (MS)
@ -813,6 +814,7 @@ sub read_options
elsif (/^no-dh$/) { $no_dh=1; } elsif (/^no-dh$/) { $no_dh=1; }
elsif (/^no-hmac$/) { $no_hmac=1; } elsif (/^no-hmac$/) { $no_hmac=1; }
elsif (/^no-asm$/) { $no_asm=1; } elsif (/^no-asm$/) { $no_asm=1; }
elsif (/^nasm$/) { $nasm=1; }
elsif (/^no-ssl2$/) { $no_ssl2=1; } elsif (/^no-ssl2$/) { $no_ssl2=1; }
elsif (/^no-ssl3$/) { $no_ssl3=1; } elsif (/^no-ssl3$/) { $no_ssl3=1; }
elsif (/^no-err$/) { $no_err=1; } elsif (/^no-err$/) { $no_err=1; }

View File

@ -49,10 +49,14 @@ $lfile='/out:';
$shlib_ex_obj=""; $shlib_ex_obj="";
$app_ex_obj="setargv.obj"; $app_ex_obj="setargv.obj";
if ($nasm) {
$asm='ml /Cp /coff /c /Cx'; $asm='nasmw -f win32';
$asm.=" /Zi" if $debug; $afile='-o ';
$afile='/Fo'; } else {
$asm='ml /Cp /coff /c /Cx';
$asm.=" /Zi" if $debug;
$afile='/Fo';
}
$bn_asm_obj=''; $bn_asm_obj='';
$bn_asm_src=''; $bn_asm_src='';