New switch "386" to generate 80386 code (emulate bswap).

This commit is contained in:
Ulf Möller 1999-03-30 12:49:36 +00:00
parent bc37a6b81c
commit 0f247decd0
2 changed files with 23 additions and 7 deletions

View File

@ -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"; }
@ -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

View File

@ -1,11 +1,5 @@
#!/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";
@ -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)=@_;