@@ -18,10 +18,10 @@ sub ::generic
|
18 | 18 | |
19 | 19 | if ($opcode =~ /lea/ && @arg[1] =~ s/.*PTR\s+(\(.*\))$/OFFSET $1/) # no [] |
20 | 20 | { $opcode="mov"; } |
21 | | -elsif ($opcode !~ /movq/) |
| 21 | +elsif ($opcode !~ /mov[dq]$/) |
22 | 22 | { # fix xmm references |
23 | | -$arg[0] =~ s/\b[A-Z]+WORD\s+PTR/XMMWORD PTR/i if ($arg[1]=~/\bxmm[0-7]\b/i); |
24 | | -$arg[1] =~ s/\b[A-Z]+WORD\s+PTR/XMMWORD PTR/i if ($arg[0]=~/\bxmm[0-7]\b/i); |
| 23 | +$arg[0] =~ s/\b[A-Z]+WORD\s+PTR/XMMWORD PTR/i if ($arg[-1]=~/\bxmm[0-7]\b/i); |
| 24 | +$arg[-1] =~ s/\b[A-Z]+WORD\s+PTR/XMMWORD PTR/i if ($arg[0]=~/\bxmm[0-7]\b/i); |
25 | 25 | } |
26 | 26 | |
27 | 27 | &::emit($opcode,@arg); |
@@ -160,13 +160,13 @@ sub ::public_label
|
160 | 160 | { push(@out,"PUBLIC\t".&::LABEL($_[0],$nmdecor.$_[0])."\n"); } |
161 | 161 | |
162 | 162 | sub ::data_byte |
163 | | -{ push(@out,("DB\t").join(',',@_)."\n"); } |
| 163 | +{ push(@out,("DB\t").join(',',splice(@_,0,16))."\n") while(@_); } |
164 | 164 | |
165 | 165 | sub ::data_short |
166 | | -{ push(@out,("DW\t").join(',',@_)."\n"); } |
| 166 | +{ push(@out,("DW\t").join(',',splice(@_,0,8))."\n") while(@_); } |
167 | 167 | |
168 | 168 | sub ::data_word |
169 | | -{ push(@out,("DD\t").join(',',@_)."\n"); } |
| 169 | +{ push(@out,("DD\t").join(',',splice(@_,0,4))."\n") while(@_); } |
170 | 170 | |
171 | 171 | sub ::align |
172 | 172 | { push(@out,"ALIGN\t$_[0]\n"); } |
|