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 _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-binutils