Commit 0f247dec authored by Ulf Möller's avatar Ulf Möller
Browse files

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

parent bc37a6b8
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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
+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";
@@ -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)=@_;