This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: i386 Intel synax assembler is broken.
- To: dnovillo at cygnus dot com, alan at linuxcare dot com dot au
- Subject: Re: i386 Intel synax assembler is broken.
- From: "H . J . Lu" <hjl at valinux dot com>
- Date: Tue, 15 Aug 2000 20:46:08 -0700
- Cc: binutils at sourceware dot cygnus dot com
- References: <20000815190313.A12040@valinux.com>
On Tue, Aug 15, 2000 at 07:03:13PM -0700, H . J . Lu wrote:
> Did you run "make check" before and after you checked in this patch?
> I got a failure on Intel synax test. Back out your patch fixes it.
> Could you please fix it?
>
> Thanks.
>
>
> --
> H.J. Lu (hjl@gnu.org)
> --
> Wed Aug 9 16:28:21 EDT 2000 Diego Novillo <dnovillo@cygnus.com>
>
> * tc-i386.c (md_assemble): Skip suffix check if the opcode modifier
> has the IgnoreSize bit set.
>
This patch seems to work for me. I don't know if it is entirely correct.
H.J.
---
2000-08-15 H.J. Lu <hjl@gnu.org>
* i386.h: Swap the Intel syntax "movsx"/"movzx" due to the
IgnoreSize change.
Index: i386.h
===================================================================
RCS file: /work/cvs/gnu/binutils/include/opcode/i386.h,v
retrieving revision 1.1.1.14
diff -u -p -r1.1.1.14 i386.h
--- i386.h 2000/05/30 05:35:57 1.1.1.14
+++ i386.h 2000/08/16 03:42:30
@@ -108,15 +108,15 @@ static const template i386_optab[] = {
{"movsbw", 2, 0x0fbe, X, Cpu386, NoSuf|Modrm, { Reg8|ByteMem, Reg16, 0} },
{"movswl", 2, 0x0fbf, X, Cpu386, NoSuf|Modrm, { Reg16|ShortMem, Reg32, 0} },
/* Intel Syntax next 2 insns */
-{"movsx", 2, 0x0fbf, X, Cpu386, w_Suf|Modrm|IgnoreSize, { Reg16|ShortMem, Reg32, 0} },
{"movsx", 2, 0x0fbe, X, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
+{"movsx", 2, 0x0fbf, X, Cpu386, w_Suf|Modrm|IgnoreSize, { Reg16|ShortMem, Reg32, 0} },
/* Move with zero extend. */
{"movzb", 2, 0x0fb6, X, Cpu386, wl_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
{"movzwl", 2, 0x0fb7, X, Cpu386, NoSuf|Modrm, { Reg16|ShortMem, Reg32, 0} },
/* Intel Syntax next 2 insns */
-{"movzx", 2, 0x0fb7, X, Cpu386, w_Suf|Modrm|IgnoreSize, { Reg16|ShortMem, Reg32, 0} },
{"movzx", 2, 0x0fb6, X, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
+{"movzx", 2, 0x0fb7, X, Cpu386, w_Suf|Modrm|IgnoreSize, { Reg16|ShortMem, Reg32, 0} },
/* Push instructions. */
{"push", 1, 0x50, X, 0, wl_Suf|ShortForm|DefaultSize, { WordReg, 0, 0 } },