mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 03:29:47 +08:00
2007-01-13 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-i386.c (build_modrm_byte): Check number of operands when procssing memory/register operand.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2007-01-13 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* config/tc-i386.c (build_modrm_byte): Check number of operands
|
||||||
|
when procssing memory/register operand.
|
||||||
|
|
||||||
2007-01-12 Nick Clifton <nickc@redhat.com>
|
2007-01-12 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
PR gas/3856
|
PR gas/3856
|
||||||
|
@ -3443,9 +3443,12 @@ build_modrm_byte (void)
|
|||||||
if (i.mem_operands)
|
if (i.mem_operands)
|
||||||
{
|
{
|
||||||
unsigned int fake_zero_displacement = 0;
|
unsigned int fake_zero_displacement = 0;
|
||||||
unsigned int op = ((i.types[0] & AnyMem)
|
unsigned int op;
|
||||||
? 0
|
|
||||||
: (i.types[1] & AnyMem) ? 1 : 2);
|
for (op = 0; op < i.operands; op++)
|
||||||
|
if ((i.types[op] & AnyMem))
|
||||||
|
break;
|
||||||
|
assert (op < i.operands);
|
||||||
|
|
||||||
default_seg = &ds;
|
default_seg = &ds;
|
||||||
|
|
||||||
@ -3616,18 +3619,15 @@ build_modrm_byte (void)
|
|||||||
registers are coded into the i.rm.reg field. */
|
registers are coded into the i.rm.reg field. */
|
||||||
if (i.reg_operands)
|
if (i.reg_operands)
|
||||||
{
|
{
|
||||||
unsigned int op =
|
unsigned int op;
|
||||||
((i.types[0]
|
|
||||||
& (Reg | RegMMX | RegXMM
|
for (op = 0; op < i.operands; op++)
|
||||||
| SReg2 | SReg3
|
if ((i.types[op] & (Reg | RegMMX | RegXMM
|
||||||
| Control | Debug | Test))
|
| SReg2 | SReg3
|
||||||
? 0
|
| Control | Debug | Test)))
|
||||||
: ((i.types[1]
|
break;
|
||||||
& (Reg | RegMMX | RegXMM
|
assert (op < i.operands);
|
||||||
| SReg2 | SReg3
|
|
||||||
| Control | Debug | Test))
|
|
||||||
? 1
|
|
||||||
: 2));
|
|
||||||
/* If there is an extension opcode to put here, the register
|
/* If there is an extension opcode to put here, the register
|
||||||
number must be put into the regmem field. */
|
number must be put into the regmem field. */
|
||||||
if (i.tm.extension_opcode != None)
|
if (i.tm.extension_opcode != None)
|
||||||
|
Reference in New Issue
Block a user