提交 0f247dec 编写于 作者: U Ulf Möller

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

上级 bc37a6b8
......@@ -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
......
#!/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)=@_;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册