提交 70cf3095 编写于 作者: A Andy Polyakov

x86_64 assembler translator update.

上级 8b5bf52a
...@@ -113,12 +113,14 @@ my $current_function; ...@@ -113,12 +113,14 @@ my $current_function;
$self->{value} = $1; $self->{value} = $1;
$ret = $self; $ret = $self;
$line = substr($line,@+[0]); $line =~ s/^\s+//; $line = substr($line,@+[0]); $line =~ s/^\s+//;
$self->{value} = oct($self->{value}) if ($self->{value} =~ /^0/);
} }
$ret; $ret;
} }
sub out { sub out {
my $self = shift; my $self = shift;
sprintf $masm?"%s":"\$%s",$self->{value}; sprintf $masm?"0%xh":"\$0x%x",$self->{value};
} }
} }
{ package ea; # pick up effective addresses: expr(%reg,%reg,scale) { package ea; # pick up effective addresses: expr(%reg,%reg,scale)
...@@ -134,7 +136,6 @@ my $current_function; ...@@ -134,7 +136,6 @@ my $current_function;
$ret = $self; $ret = $self;
$line = substr($line,@+[0]); $line =~ s/^\s+//; $line = substr($line,@+[0]); $line =~ s/^\s+//;
$self->{label} =~ s/\.L/\$L/g;
$self->{base} =~ s/^%//; $self->{base} =~ s/^%//;
$self->{index} =~ s/^%// if (defined($self->{index})); $self->{index} =~ s/^%// if (defined($self->{index}));
} }
...@@ -152,7 +153,8 @@ my $current_function; ...@@ -152,7 +153,8 @@ my $current_function;
$self->{base} =~ s/^[er](.?[0-9xp])[d]?$/r\1/; $self->{base} =~ s/^[er](.?[0-9xp])[d]?$/r\1/;
if (defined($self->{index})) { if (defined($self->{index})) {
sprintf "%s(%%%s,%%%s,%d)", $self->{label},$self->{base}, sprintf "%s(%%%s,%%%s,%d)",
$self->{label},$self->{base},
$self->{index},$self->{scale}; $self->{index},$self->{scale};
} }
else { else {
...@@ -161,6 +163,10 @@ my $current_function; ...@@ -161,6 +163,10 @@ my $current_function;
} else { } else {
%szmap = ( b=>"BYTE", w=>"WORD", l=>"DWORD", q=>"QWORD" ); %szmap = ( b=>"BYTE", w=>"WORD", l=>"DWORD", q=>"QWORD" );
$self->{label} =~ s/\./\$/g;
$self->{label} =~ s/0x([0-9a-f]+)/0$1h/ig;
$self->{label} = "($self->{label})" if ($self->{label} =~ /[\*\+\-\/]/);
if (defined($self->{index})) { if (defined($self->{index})) {
sprintf "%s PTR %s[%s*%d+%s]",$szmap{$sz}, sprintf "%s PTR %s[%s*%d+%s]",$szmap{$sz},
$self->{label}, $self->{label},
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册