[PATCH] x86: rep prefix handling adjustment
Jan Beulich
JBeulich@novell.com
Fri May 6 12:04:00 GMT 2005
Until now, gas looked just at the first instruction of a series of
identically named ones to determine whether it is a string instruction and
thus accepts the use of a rep prefix. Since that required particular
ordering in the opcode table (without that being said to be so), this
patch adjusts code to have more freedom in the table ordering. At once, it
restricts the set of instructions to choose from to just the string ones
when a rep prefix was specified. As a nice side effect, some diagnostics
get replaced by more meaningful ones.
Built and tested on i686-pc-linux-gnu and x86_64-unknown-linux-gnu.
Jan
gas/
2005-05-06 Jan Beulich <jbeulich@novell.com>
* config/tc-i386.c (parse_insn): Consider all matching instructions
when checking for string instruction after string-only prefix.
--- /home/jbeulich/src/binutils/mainline/2005-05-06/gas/config/tc-i386.c 2005-05-06 08:24:28.000000000 +0200
+++ 2005-05-06/gas/config/tc-i386.c 2005-05-06 11:45:55.861726528 +0200
@@ -1765,12 +1766,24 @@ parse_insn (line, mnemonic)
}
/* Check for rep/repne without a string instruction. */
- if (expecting_string_instruction
- && !(current_templates->start->opcode_modifier & IsString))
+ if (expecting_string_instruction)
{
- as_bad (_("expecting string instruction after `%s'"),
- expecting_string_instruction);
- return NULL;
+ static templates override;
+
+ for (t = current_templates->start; t < current_templates->end; ++t)
+ if (t->opcode_modifier & IsString)
+ break;
+ if (t >= current_templates->end)
+ {
+ as_bad (_("expecting string instruction after `%s'"),
+ expecting_string_instruction);
+ return NULL;
+ }
+ for (override.start = t; t < current_templates->end; ++t)
+ if (!(t->opcode_modifier & IsString))
+ break;
+ override.end = t;
+ current_templates = &override;
}
return l;
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: binutils-mainline-x86-string-prefix.patch
URL: <https://sourceware.org/pipermail/binutils/attachments/20050506/af295f38/attachment.ksh>
More information about the Binutils
mailing list