/* tc-i386.c -- Assemble Intel syntax code for ix86/x86-64
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2019 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
else
reg_num = e->X_md - 1;
+ if (reg_num < 0 || reg_num >= (int) i386_regtab_size)
+ {
+ as_bad (_("invalid register number"));
+ return 0;
+ }
+
if (!intel_state.in_bracket)
{
if (i.op[this_operand].regs)
&& (i386_regtab[reg_num].reg_type.bitfield.xmmword
|| i386_regtab[reg_num].reg_type.bitfield.ymmword
|| i386_regtab[reg_num].reg_type.bitfield.zmmword
- || i386_regtab[reg_num].reg_num == RegRiz
- || i386_regtab[reg_num].reg_num == RegEiz))
+ || i386_regtab[reg_num].reg_num == RegIZ))
intel_state.index = i386_regtab + reg_num;
else if (!intel_state.base && !intel_state.in_scale)
intel_state.base = i386_regtab + reg_num;
i.mem_operands = 0;
i.disp_operands = 0;
i.imm_operands = 2;
- i.types[0].bitfield.mem = 0;
+ i.flags[0] &= ~Operand_Mem;
i.types[0].bitfield.disp16 = 0;
i.types[0].bitfield.disp32 = 0;
i.types[0].bitfield.disp32s = 0;
if (!i386_index_check (operand_string))
return 0;
- i.types[this_operand].bitfield.mem = 1;
+ i.flags[this_operand] |= Operand_Mem;
if (i.mem_operands == 0)
i.memop1_string = xstrdup (operand_string);
++i.mem_operands;