2007-09-06 H.J. Lu <hongjiu.lu@intel.com>

* i386-gen.c (next_field): Updated to take a separator.
	(process_i386_opcodes): Updated.
	(process_i386_registers): Likewise.
This commit is contained in:
H.J. Lu 2007-09-06 22:55:04 +00:00
parent 72ffa0fba1
commit 93b1ec2cbf
2 changed files with 20 additions and 14 deletions

View File

@ -1,3 +1,9 @@
2007-09-06 H.J. Lu <hongjiu.lu@intel.com>
* i386-gen.c (next_field): Updated to take a separator.
(process_i386_opcodes): Updated.
(process_i386_registers): Likewise.
2007-09-06 H.J. Lu <hongjiu.lu@intel.com> 2007-09-06 H.J. Lu <hongjiu.lu@intel.com>
* i386-gen.c (table): Moved ... * i386-gen.c (table): Moved ...

View File

@ -100,16 +100,16 @@ remove_trailing_whitespaces (char *str)
while (last != 0); while (last != 0);
} }
/* Find next field separated by '.' and terminate it. Return a /* Find next field separated by SEP and terminate it. Return a
pointer to the one after it. */ pointer to the one after it. */
static char * static char *
next_field (char *str, char **next) next_field (char *str, char sep, char **next)
{ {
char *p; char *p;
p = remove_leading_whitespaces (str); p = remove_leading_whitespaces (str);
for (str = p; *str != ',' && *str != '\0'; str++); for (str = p; *str != sep && *str != '\0'; str++);
*str = '\0'; *str = '\0';
remove_trailing_whitespaces (p); remove_trailing_whitespaces (p);
@ -165,37 +165,37 @@ process_i386_opcodes (FILE *table)
last = p + strlen (p); last = p + strlen (p);
/* Find name. */ /* Find name. */
name = next_field (p, &str); name = next_field (p, ',', &str);
if (str >= last) if (str >= last)
abort (); abort ();
/* Find number of operands. */ /* Find number of operands. */
operands = next_field (str, &str); operands = next_field (str, ',', &str);
if (str >= last) if (str >= last)
abort (); abort ();
/* Find base_opcode. */ /* Find base_opcode. */
base_opcode = next_field (str, &str); base_opcode = next_field (str, ',', &str);
if (str >= last) if (str >= last)
abort (); abort ();
/* Find extension_opcode. */ /* Find extension_opcode. */
extension_opcode = next_field (str, &str); extension_opcode = next_field (str, ',', &str);
if (str >= last) if (str >= last)
abort (); abort ();
/* Find cpu_flags. */ /* Find cpu_flags. */
cpu_flags = next_field (str, &str); cpu_flags = next_field (str, ',', &str);
if (str >= last) if (str >= last)
abort (); abort ();
/* Find opcode_modifier. */ /* Find opcode_modifier. */
opcode_modifier = next_field (str, &str); opcode_modifier = next_field (str, ',', &str);
if (str >= last) if (str >= last)
abort (); abort ();
@ -234,7 +234,7 @@ process_i386_opcodes (FILE *table)
break; break;
} }
operand_types [i] = next_field (str, &str); operand_types [i] = next_field (str, ',', &str);
if (*operand_types[i] == '0') if (*operand_types[i] == '0')
{ {
if (i != 0) if (i != 0)
@ -319,25 +319,25 @@ process_i386_registers (FILE *table)
last = p + strlen (p); last = p + strlen (p);
/* Find reg_name. */ /* Find reg_name. */
reg_name = next_field (p, &str); reg_name = next_field (p, ',', &str);
if (str >= last) if (str >= last)
abort (); abort ();
/* Find reg_type. */ /* Find reg_type. */
reg_type = next_field (str, &str); reg_type = next_field (str, ',', &str);
if (str >= last) if (str >= last)
abort (); abort ();
/* Find reg_flags. */ /* Find reg_flags. */
reg_flags = next_field (str, &str); reg_flags = next_field (str, ',', &str);
if (str >= last) if (str >= last)
abort (); abort ();
/* Find reg_num. */ /* Find reg_num. */
reg_num = next_field (str, &str); reg_num = next_field (str, ',', &str);
fprintf (table, " { \"%s\", %s, %s, %s },\n", fprintf (table, " { \"%s\", %s, %s, %s },\n",
reg_name, reg_type, reg_flags, reg_num); reg_name, reg_type, reg_flags, reg_num);