1/* i386.c -- Assemble code for the Intel 80386
2 Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3 2000, 2001
4 Free Software Foundation, Inc.
5
6 This file is part of GAS, the GNU Assembler.
7
8 GAS is free software; you can redistribute it and/or modify
--- 7 unchanged lines hidden (view full) ---
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with GAS; see the file COPYING. If not, write to the Free
20 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
21 02111-1307, USA. */
22
23
24/* $FreeBSD: head/contrib/binutils/gas/config/tc-i386.c 78840 2001-06-26 17:56:02Z obrien $ */
25
26
27/* Intel 80386 machine specific gas.
28 Written by Eliot Dresselhaus (eliot@mgm.mit.edu).
29 x86_64 support by Jan Hubicka (jh@suse.cz)
30 Bugs & suggestions are completely welcome. This is free software.
31 Please help us make it better. */
32
--- 1869 unchanged lines hidden (view full) ---
1902 as_bad (_("`%s' operand %d must use `%%es' segment"),
1903 i.tm.name,
1904 mem_op + 2);
1905 return;
1906 }
1907 }
1908 }
1909
1910 if (i.reg_operands && flag_code < CODE_64BIT)
1911 {
1912 int op;
1913 for (op = i.operands; --op >= 0;)
1914 if ((i.types[op] & Reg)
1915 && (i.op[op].regs->reg_flags & (RegRex64|RegRex)))
1916 {
1917 as_bad (_("Extended register `%%%s' available only in 64bit mode."),
1918 i.op[op].regs->reg_name);
1919 return;
1920 }
1921 }
1922
1923 /* If matched instruction specifies an explicit instruction mnemonic
1924 suffix, use it. */
1925 if (i.tm.opcode_modifier & (Size16 | Size32 | Size64))
1926 {
1927 if (i.tm.opcode_modifier & Size16)
1928 i.suffix = WORD_MNEM_SUFFIX;
1929 else if (i.tm.opcode_modifier & Size64)
1930 i.suffix = QWORD_MNEM_SUFFIX;
--- 2549 unchanged lines hidden (view full) ---
4480 return r;
4481 }
4482 }
4483 /* We have "%st(" then garbage. */
4484 return (const reg_entry *) NULL;
4485 }
4486 }
4487
4488 return r;
4489}
4490
4491#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
4492const char *md_shortopts = "kVQ:sq";
4493#else
4494const char *md_shortopts = "q";
4495#endif
--- 1350 unchanged lines hidden ---
2 Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3 2000, 2001
4 Free Software Foundation, Inc.
5
6 This file is part of GAS, the GNU Assembler.
7
8 GAS is free software; you can redistribute it and/or modify
--- 7 unchanged lines hidden (view full) ---
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with GAS; see the file COPYING. If not, write to the Free
20 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
21 02111-1307, USA. */
22
23
24/* $FreeBSD: head/contrib/binutils/gas/config/tc-i386.c 78840 2001-06-26 17:56:02Z obrien $ */
25
26
27/* Intel 80386 machine specific gas.
28 Written by Eliot Dresselhaus (eliot@mgm.mit.edu).
29 x86_64 support by Jan Hubicka (jh@suse.cz)
30 Bugs & suggestions are completely welcome. This is free software.
31 Please help us make it better. */
32
--- 1869 unchanged lines hidden (view full) ---
1902 as_bad (_("`%s' operand %d must use `%%es' segment"),
1903 i.tm.name,
1904 mem_op + 2);
1905 return;
1906 }
1907 }
1908 }
1909
1910 if (i.reg_operands && flag_code < CODE_64BIT)
1911 {
1912 int op;
1913 for (op = i.operands; --op >= 0;)
1914 if ((i.types[op] & Reg)
1915 && (i.op[op].regs->reg_flags & (RegRex64|RegRex)))
1916 {
1917 as_bad (_("Extended register `%%%s' available only in 64bit mode."),
1918 i.op[op].regs->reg_name);
1919 return;
1920 }
1921 }
1922
1923 /* If matched instruction specifies an explicit instruction mnemonic
1924 suffix, use it. */
1925 if (i.tm.opcode_modifier & (Size16 | Size32 | Size64))
1926 {
1927 if (i.tm.opcode_modifier & Size16)
1928 i.suffix = WORD_MNEM_SUFFIX;
1929 else if (i.tm.opcode_modifier & Size64)
1930 i.suffix = QWORD_MNEM_SUFFIX;
--- 2549 unchanged lines hidden (view full) ---
4480 return r;
4481 }
4482 }
4483 /* We have "%st(" then garbage. */
4484 return (const reg_entry *) NULL;
4485 }
4486 }
4487
4488 return r;
4489}
4490
4491#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
4492const char *md_shortopts = "kVQ:sq";
4493#else
4494const char *md_shortopts = "q";
4495#endif
--- 1350 unchanged lines hidden ---