mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-04-06 14:21:43 +08:00
Allow spaces in i386 FP reg names, eg. %st ( 1 ).
This commit is contained in:
parent
eb1b03df1a
commit
5f47d35be1
@ -1,3 +1,9 @@
|
||||
1999-08-29 Alan Modra <alan@spri.levels.unisa.edu.au>
|
||||
|
||||
Based on a patch from H.J. Lu <hjl@gnu.org>
|
||||
* config/tc-i386.c (parse_register): Handle FP regs specially.
|
||||
(md_begin): Remove '(' and ')' from register_chars.
|
||||
|
||||
1999-08-29 Doug Evans <devans@casey.cygnus.com>
|
||||
|
||||
* config/tc-m32r.c (md_parse_option): Delete unrecognized option
|
||||
|
@ -703,8 +703,6 @@ md_begin ()
|
||||
#ifdef LEX_AT
|
||||
identifier_chars['@'] = '@';
|
||||
#endif
|
||||
register_chars[')'] = ')';
|
||||
register_chars['('] = '(';
|
||||
digit_chars['-'] = '-';
|
||||
identifier_chars['_'] = '_';
|
||||
identifier_chars['.'] = '.';
|
||||
@ -4166,6 +4164,39 @@ parse_register (reg_string, end_op)
|
||||
|
||||
r = (const reg_entry *) hash_find (reg_hash, reg_name_given);
|
||||
|
||||
/* Handle floating point regs, allowing spaces in the (i) part. */
|
||||
if (r == i386_regtab /* %st is first entry of table */)
|
||||
{
|
||||
--s;
|
||||
if (is_space_char (*s))
|
||||
++s;
|
||||
if (*s == '(')
|
||||
{
|
||||
*p++ = *s++;
|
||||
if (is_space_char (*s))
|
||||
++s;
|
||||
if (*s >= '0' && *s <= '7')
|
||||
{
|
||||
r = &i386_float_regtab[*s - '0'];
|
||||
*p++ = *s++;
|
||||
if (is_space_char (*s))
|
||||
++s;
|
||||
if (*s == ')')
|
||||
{
|
||||
*end_op = s + 1;
|
||||
return r;
|
||||
}
|
||||
*p++ = *s;
|
||||
}
|
||||
if (!allow_naked_reg)
|
||||
{
|
||||
*p = '\0';
|
||||
as_bad (_("bad register name `%s'"), reg_name_given);
|
||||
}
|
||||
return (const reg_entry *) NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (r == NULL)
|
||||
{
|
||||
if (!allow_naked_reg)
|
||||
|
@ -1,3 +1,7 @@
|
||||
1999-08-29 Alan Modra <alan@spri.levels.unisa.edu.au>
|
||||
|
||||
* gas/i386/white.s, gas/i386/white.l: Add space in FP reg tests.
|
||||
|
||||
Sat Aug 28 00:16:12 1999 Jerry Quinn <jquinn@nortelnetworks.com>
|
||||
|
||||
* gas/hppa/basic/basic.exp: Add new tests shift2.s,
|
||||
|
@ -19,3 +19,6 @@ GAS LISTING .*
|
||||
16 0022 66B81300 0000 Mov \$ foo , %eAx
|
||||
17 .Code32
|
||||
18 0028 66B81300 mov \$ foo , %ax
|
||||
19
|
||||
20 002c D9C9 fxch %st \( 1 \)
|
||||
21 002e D9C9 fxch % st\(1\)
|
||||
|
@ -16,3 +16,6 @@ foo: jmpw % es : * ( % ebx )
|
||||
Mov $ foo , %eAx
|
||||
.Code32
|
||||
mov $ foo , %ax
|
||||
|
||||
fxch %st ( 1 )
|
||||
fxch % st(1)
|
||||
|
@ -1,3 +1,9 @@
|
||||
1999-08-29 Alan Modra <alan@spri.levels.unisa.edu.au>
|
||||
|
||||
* i386.h (i386_regtab): Move %st to top of table, and split off
|
||||
other fp reg entries.
|
||||
(i386_float_regtab): To here.
|
||||
|
||||
Sat Aug 28 00:25:25 1999 Jerry Quinn <jquinn@nortelnetworks.com>
|
||||
|
||||
* hppa.h (pa_opcodes): Replace 'f' by 'v'. Prefix float register args
|
||||
|
@ -1061,6 +1061,8 @@ static const template i386_optab[] = {
|
||||
/* 386 register table */
|
||||
|
||||
static const reg_entry i386_regtab[] = {
|
||||
/* make %st first as we test for it */
|
||||
{"st", FloatReg|FloatAcc, 0},
|
||||
/* 8 bit regs */
|
||||
{"al", Reg8|Acc, 0},
|
||||
{"cl", Reg8|ShiftCount, 1},
|
||||
@ -1130,16 +1132,7 @@ static const reg_entry i386_regtab[] = {
|
||||
{"tr5", Test, 5},
|
||||
{"tr6", Test, 6},
|
||||
{"tr7", Test, 7},
|
||||
/* float registers */
|
||||
{"st(0)", FloatReg|FloatAcc, 0},
|
||||
{"st", FloatReg|FloatAcc, 0},
|
||||
{"st(1)", FloatReg, 1},
|
||||
{"st(2)", FloatReg, 2},
|
||||
{"st(3)", FloatReg, 3},
|
||||
{"st(4)", FloatReg, 4},
|
||||
{"st(5)", FloatReg, 5},
|
||||
{"st(6)", FloatReg, 6},
|
||||
{"st(7)", FloatReg, 7},
|
||||
/* mmx and simd registers */
|
||||
{"mm0", RegMMX, 0},
|
||||
{"mm1", RegMMX, 1},
|
||||
{"mm2", RegMMX, 2},
|
||||
@ -1158,6 +1151,17 @@ static const reg_entry i386_regtab[] = {
|
||||
{"xmm7", RegXMM, 7}
|
||||
};
|
||||
|
||||
static const reg_entry i386_float_regtab[] = {
|
||||
{"st(0)", FloatReg|FloatAcc, 0},
|
||||
{"st(1)", FloatReg, 1},
|
||||
{"st(2)", FloatReg, 2},
|
||||
{"st(3)", FloatReg, 3},
|
||||
{"st(4)", FloatReg, 4},
|
||||
{"st(5)", FloatReg, 5},
|
||||
{"st(6)", FloatReg, 6},
|
||||
{"st(7)", FloatReg, 7}
|
||||
};
|
||||
|
||||
#define MAX_REG_NAME_SIZE 8 /* for parsing register names from input */
|
||||
|
||||
/* segment stuff */
|
||||
|
Loading…
x
Reference in New Issue
Block a user