bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: assembler 'movl ss, (ebp)' produce an error for target i686


From: Nick Clifton
Subject: Re: assembler 'movl ss, (ebp)' produce an error for target i686
Date: Sat, 01 Oct 2005 07:58:01 +0100
User-agent: Mozilla Thunderbird 1.0 (X11/20041206)

Hi Henry,

* Bug: 'movl %ss, (%ebp)' produce an error for target i686 (32 bit):
  " Error: suffix or operands invalid for `mov' "

I asked the x86 maintainers if they would look at this bug report. Here is what H.J.Lu had to say about it:

; There is no such a thing of moving between a segment register and a
: 32bit memory location.
:
: The new i386/x86_64 assemblers no longer accept instructions for
: moving between a segment register and a 32bit memory location, i.e.,
:
:       movl (%eax),%ds
:       movl %ds,(%eax)
:
: To generate instructions for moving between a segment register and a
: 16bit memory location without the 16bit operand size prefix, 0x66,
:
:       mov (%eax),%ds
:       mov %ds,(%eax)
:
: should be used. It will work with both new and old assemblers. The
: assembler starting from 2.16.90.0.1 will also support
:
:       movw (%eax),%ds
:       movw %ds,(%eax)
:
: without the 0x66 prefix. Patches for 2.4 and 2.6 Linux kernels are
: available at
:
: http://www.kernel.org/pub/linux/devel/binutils/linux-2.4-seg-4.patch
: http://www.kernel.org/pub/linux/devel/binutils/linux-2.6-seg-5.patch

I hope that this makes things clear.

Cheers
  Nick






reply via email to

[Prev in Thread] Current Thread [Next in Thread]