Index: assemble.pl
===================================================================
RCS file: /home/perlcvs/parrot/assemble.pl,v
retrieving revision 1.60
diff -u -r1.60 assemble.pl
--- assemble.pl 3 Jun 2002 23:22:45 -0000 1.60
+++ assemble.pl 4 Jun 2002 13:56:25 -0000
@@ -662,6 +662,7 @@
my $temp = $_->[0];
$temp=~s/^(\w+)\s*//;
$_->[0] = [$1];
+ my $extname;
while($temp ne '') {
$temp=~s/^\s*(,\s*)?//;
@@ -669,49 +670,49 @@
# Skip flying comments.
}
elsif($temp=~s/^($reg_re)//) {
- $_->[0][0] .= "_".lc(substr($1,0,1));
+ $extname .= "_".lc(substr($1,0,1));
push @{$_->[0]}, [lc(substr($1,0,1)),$1];
}
elsif($temp=~s/^\[(S\d+)\]//) { # The only key register should be Sn
- $_->[0][0] .= "_s";
+ $extname .= "_s";
push @{$_->[0]}, ['s',$1];
}
elsif($temp=~s/^($flt_re)//) {
- $_->[0][0] .= "_nc";
+ $extname .= "_nc";
push @{$_->[0]}, $self->_numeric_constant($1);
}
elsif($temp=~s/^\[($str_re)\]//) {
- $_->[0][0] .= "_sc";
+ $extname .= "_sc";
push @{$_->[0]}, $self->_string_constant($1);
}
elsif($temp=~s/^\[($bin_re)\]//) { # P3[0b11101]
my $val = $1;$val=~s/0b//;
- $_->[0][0] .= "_ic";
+ $extname .= "_ic";
push @{$_->[0]}, ['ic',(strtol($val,2))[0]];
}
elsif($temp=~s/^\[($hex_re)\]//) { # P7[0x1234]
- $_->[0][0] .= "_ic";
+ $extname .= "_ic";
push @{$_->[0]}, ['ic',(strtol($1,16))[0]];
}
elsif($temp=~s/^\[($dec_re)\]//) { # P14[3]
- $_->[0][0] .= "_ic";
+ $extname .= "_ic";
push @{$_->[0]}, ['ic',0+$1];
}
elsif($temp=~s/^($bin_re)//) { # 0b1101
my $val = $1;$val=~s/0b//;
- $_->[0][0] .= "_ic";
+ $extname .= "_ic";
push @{$_->[0]}, ['ic',(strtol($val,2))[0]];
}
elsif($temp=~s/^($hex_re)//) { # 0x12aF
- $_->[0][0] .= "_ic";
+ $extname .= "_ic";
push @{$_->[0]}, ['ic',(strtol($1,16))[0]];
}
elsif($temp=~s/^($dec_re)//) { # -32
- $_->[0][0] .= "_ic";
+ $extname .= "_ic";
push @{$_->[0]}, ['ic',0+$1];
}
elsif($temp=~s/^($str_re)//) { # "Hello World"
- $_->[0][0] .= "_sc";
+ $extname .= "_sc";
push @{$_->[0]}, $self->_string_constant($1);
}
elsif($temp=~s/^($label_re)//) {
@@ -719,13 +720,16 @@
print STDERR "Couldn't find global label '$1' at line $_->[1].\n";
last;
}
- $_->[0][0] .= "_ic";
+ $extname .= "_ic";
push @{$_->[0]}, ['label',$1];
}
else {
print STDERR "Couldn't parse argument '$temp' at line $_->[1].\n";
last;
}
+ }
+ if(not defined $self->{fullops}{$_->[0][0]}) {
+ $_->[0][0] .= $extname;
}
$self->{line_to_pc}{$_->[1]}=$pc;
$pc += scalar @{$_->[0]};