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:
parent
5059658219
commit
bbdb543844
@ -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)
|
||||||
|
@ -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");
|
||||||
|
@ -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)=@_;
|
||||||
|
@ -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);
|
||||||
|
@ -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
57
ms/x86asm.bat
Executable 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
|
@ -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; }
|
||||||
|
@ -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='';
|
||||||
|
Loading…
Reference in New Issue
Block a user