diff options
author | Dr. Stephen Henson <steve@openssl.org> | 1999-07-12 18:12:43 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 1999-07-12 18:12:43 +0000 |
commit | bbdb543844cd4f8f787b678e33466afc12eccd96 (patch) | |
tree | 6910cfcd6aa9f6c6fa01acdd31a410900cf9be14 | |
parent | 5059658219465c2e3e15f45c5ca3a0d251cd5fba (diff) | |
download | openssl-bbdb543844cd4f8f787b678e33466afc12eccd96.tar.gz |
More NASM support code it still doesn't work but it doesn't work less than it
didn't work before :-)
-rw-r--r-- | crypto/des/asm/crypt586.pl | 2 | ||||
-rw-r--r-- | crypto/des/asm/desboth.pl | 6 | ||||
-rw-r--r-- | crypto/perlasm/x86ms.pl | 10 | ||||
-rw-r--r-- | crypto/perlasm/x86nasm.pl | 27 | ||||
-rw-r--r-- | crypto/perlasm/x86unix.pl | 10 | ||||
-rwxr-xr-x | ms/x86asm.bat | 57 | ||||
-rwxr-xr-x | util/mk1mf.pl | 2 | ||||
-rw-r--r-- | util/pl/VC-32.pl | 12 |
8 files changed, 113 insertions, 13 deletions
diff --git a/crypto/des/asm/crypt586.pl b/crypto/des/asm/crypt586.pl index b310d922a1..197c413ea6 100644 --- a/crypto/des/asm/crypt586.pl +++ b/crypto/des/asm/crypt586.pl @@ -32,7 +32,7 @@ sub fcrypt_body &xor( $R, $R); &mov($ks,&wparam(1)); - &push(25); # add a variable + &push(&DWC(25)); # add a variable &set_label("start"); for ($i=0; $i<16; $i+=2) diff --git a/crypto/des/asm/desboth.pl b/crypto/des/asm/desboth.pl index 288984d135..d5106414db 100644 --- a/crypto/des/asm/desboth.pl +++ b/crypto/des/asm/desboth.pl @@ -44,15 +44,15 @@ sub des_encrypt3 &mov("edi",&wparam(2)); &mov("eax",&wparam(3)); } - &mov(&swtmp(2), (($enc)?"1":"0")); + &mov(&swtmp(2), (DWC(($enc)?"1":"0"))); &mov(&swtmp(1), "eax"); &mov(&swtmp(0), "ebx"); &call("des_encrypt2"); - &mov(&swtmp(2), (($enc)?"0":"1")); + &mov(&swtmp(2), (DWC(($enc)?"0":"1"))); &mov(&swtmp(1), "edi"); &mov(&swtmp(0), "ebx"); &call("des_encrypt2"); - &mov(&swtmp(2), (($enc)?"1":"0")); + &mov(&swtmp(2), (DWC(($enc)?"1":"0"))); &mov(&swtmp(1), "esi"); &mov(&swtmp(0), "ebx"); &call("des_encrypt2"); diff --git a/crypto/perlasm/x86ms.pl b/crypto/perlasm/x86ms.pl index b8b1909567..51dcce067f 100644 --- a/crypto/perlasm/x86ms.pl +++ b/crypto/perlasm/x86ms.pl @@ -51,6 +51,16 @@ sub main'DWP &get_mem("DWORD",@_); } +sub main'BC + { + return @_; + } + +sub main'DWC + { + return @_; + } + sub main'stack_push { local($num)=@_; diff --git a/crypto/perlasm/x86nasm.pl b/crypto/perlasm/x86nasm.pl index 3aab34a813..b4da364bbf 100644 --- a/crypto/perlasm/x86nasm.pl +++ b/crypto/perlasm/x86nasm.pl @@ -27,7 +27,14 @@ $label="L000"; sub main'asm_init_output { @out=(); } sub main'asm_get_output { return(@out); } 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 { @@ -51,6 +58,16 @@ sub main'DWP &get_mem("DWORD",@_); } +sub main'BC + { + return "BYTE @_"; + } + +sub main'DWC + { + return "DWORD @_"; + } + sub main'stack_push { my($num)=@_; @@ -69,7 +86,7 @@ sub get_mem { my($size,$addr,$reg1,$reg2,$idx)=@_; my($t,$post); - my($ret)="[$size "; + my($ret)="["; $addr =~ s/^\s+//; if ($addr =~ /^(.+)\+(.+)$/) { @@ -192,7 +209,7 @@ sub using486 sub main'file { - push(@out, "segment .text"); + push(@out, "segment .text\n"); } sub main'function_begin @@ -201,7 +218,7 @@ sub main'function_begin push(@labels,$func); my($tmp)=<<"EOF"; -GLOBAL _$func +global _$func _$func: push ebp push ebx @@ -216,7 +233,7 @@ sub main'function_begin_B { my($func,$extra)=@_; my($tmp)=<<"EOF"; -GLOBAL _$func +global _$func _$func: EOF push(@out,$tmp); diff --git a/crypto/perlasm/x86unix.pl b/crypto/perlasm/x86unix.pl index bc9e42e4e7..8c456b14af 100644 --- a/crypto/perlasm/x86unix.pl +++ b/crypto/perlasm/x86unix.pl @@ -100,6 +100,16 @@ sub main'BP return(&main'DWP(@_)); } +sub main'BC + { + return @_; + } + +sub main'DWC + { + return @_; + } + #sub main'BP # { # local($addr,$reg1,$reg2,$idx)=@_; diff --git a/ms/x86asm.bat b/ms/x86asm.bat new file mode 100755 index 0000000000..4d80e706e4 --- /dev/null +++ b/ms/x86asm.bat @@ -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
diff --git a/util/mk1mf.pl b/util/mk1mf.pl index c9b5b2c502..0afc3c6736 100755 --- a/util/mk1mf.pl +++ b/util/mk1mf.pl @@ -58,6 +58,7 @@ and [options] can be one of no-ssl2 no-ssl3 - Skip this version of SSL just-ssl - remove all non-ssl keys/digest no-asm - No x86 asm + nasm - Use NASM for x86 asm no-socks - No socket code no-err - No error strings dll/shlib - Build shared libraries (MS) @@ -813,6 +814,7 @@ sub read_options elsif (/^no-dh$/) { $no_dh=1; } elsif (/^no-hmac$/) { $no_hmac=1; } elsif (/^no-asm$/) { $no_asm=1; } + elsif (/^nasm$/) { $nasm=1; } elsif (/^no-ssl2$/) { $no_ssl2=1; } elsif (/^no-ssl3$/) { $no_ssl3=1; } elsif (/^no-err$/) { $no_err=1; } diff --git a/util/pl/VC-32.pl b/util/pl/VC-32.pl index 8082d2ef3c..6db1c9fe23 100644 --- a/util/pl/VC-32.pl +++ b/util/pl/VC-32.pl @@ -49,10 +49,14 @@ $lfile='/out:'; $shlib_ex_obj=""; $app_ex_obj="setargv.obj"; - -$asm='ml /Cp /coff /c /Cx'; -$asm.=" /Zi" if $debug; -$afile='/Fo'; +if ($nasm) { + $asm='nasmw -f win32'; + $afile='-o '; +} else { + $asm='ml /Cp /coff /c /Cx'; + $asm.=" /Zi" if $debug; + $afile='/Fo'; +} $bn_asm_obj=''; $bn_asm_src=''; |