Loading crypto/perlasm/x86asm.pl +7 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,11 @@ sub main'asm_init ($type,$fn)=@_; $filename=$fn; if ($ARGV[$#ARGV] eq "386") { $i386=1; } $cpp=$sol=$aout=$win32=0; if ( ($type eq "elf")) { require "x86unix.pl"; } Loading @@ -32,6 +37,8 @@ sub main'asm_init else { print STDERR <<"EOF"; Usage: $filename <target> [386] Pick one target type from elf - linux, FreeBSD etc a.out - old linux Loading crypto/perlasm/x86unix.pl +16 −7 Original line number Diff line number Diff line #!/usr/local/bin/perl # Because the bswapl instruction is not supported for old assembers # (it was a new instruction for the 486), I've added .byte xxxx code # to put it in. # eric 24-Apr-1998 # package x86unix; $label="L000"; Loading Loading @@ -158,12 +152,27 @@ sub main'dec { &out1("decl",@_); } sub main'inc { &out1("incl",@_); } sub main'push { &out1("pushl",@_); $stack+=4; } sub main'pop { &out1("popl",@_); $stack-=4; } sub main'bswap { &out1("bswapl",@_); } sub main'not { &out1("notl",@_); } sub main'call { &out1("call",$under.$_[0]); } sub main'ret { &out0("ret"); } sub main'nop { &out0("nop"); } # The bswapl instruction is new for the 486. Emulate if i386. sub main'bswap { if ($main'i386) { &main'comment("bswapl @_"); &main'exch(main'HB(@_),main'LB(@_)); &main'rotr(@_,16); &main'exch(main'HB(@_),main'LB(@_)); } else { &out1("bswapl",@_); } } sub out2 { local($name,$p1,$p2)=@_; Loading Loading
crypto/perlasm/x86asm.pl +7 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,11 @@ sub main'asm_init ($type,$fn)=@_; $filename=$fn; if ($ARGV[$#ARGV] eq "386") { $i386=1; } $cpp=$sol=$aout=$win32=0; if ( ($type eq "elf")) { require "x86unix.pl"; } Loading @@ -32,6 +37,8 @@ sub main'asm_init else { print STDERR <<"EOF"; Usage: $filename <target> [386] Pick one target type from elf - linux, FreeBSD etc a.out - old linux Loading
crypto/perlasm/x86unix.pl +16 −7 Original line number Diff line number Diff line #!/usr/local/bin/perl # Because the bswapl instruction is not supported for old assembers # (it was a new instruction for the 486), I've added .byte xxxx code # to put it in. # eric 24-Apr-1998 # package x86unix; $label="L000"; Loading Loading @@ -158,12 +152,27 @@ sub main'dec { &out1("decl",@_); } sub main'inc { &out1("incl",@_); } sub main'push { &out1("pushl",@_); $stack+=4; } sub main'pop { &out1("popl",@_); $stack-=4; } sub main'bswap { &out1("bswapl",@_); } sub main'not { &out1("notl",@_); } sub main'call { &out1("call",$under.$_[0]); } sub main'ret { &out0("ret"); } sub main'nop { &out0("nop"); } # The bswapl instruction is new for the 486. Emulate if i386. sub main'bswap { if ($main'i386) { &main'comment("bswapl @_"); &main'exch(main'HB(@_),main'LB(@_)); &main'rotr(@_,16); &main'exch(main'HB(@_),main'LB(@_)); } else { &out1("bswapl",@_); } } sub out2 { local($name,$p1,$p2)=@_; Loading