bug-binutils
[Top][All Lists]
Advanced

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

[Bug gas/26685] Error: invalid register operand size for `movdir64b'


From: hjl.tools at gmail dot com
Subject: [Bug gas/26685] Error: invalid register operand size for `movdir64b'
Date: Thu, 01 Oct 2020 11:33:38 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=26685

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=97257

--- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Jan Beulich from comment #3)
> (In reply to H.J. Lu from comment #0)
> > [hjl@gnu-cfl-2 gcc]$ cat x.s
> >     movdir64b       (%rdx), %rax
> >     movdir64b       (%edx), %eax
> >     movdir64b       foo(%rip), %rax
> >     movdir64b       foo(%eip), %eax
> >     movdir64b       foo(%rip), %eax
> > [hjl@gnu-cfl-2 gcc]$ gcc -c x.s 
> > x.s: Assembler messages:
> > x.s:5: Error: invalid register operand size for `movdir64b'
> 
> Which is intended, expected, and correct behavior.
> 
> > [hjl@gnu-cfl-2 gcc]$ 
> > 
> >     movdir64b       foo(%rip), %eax
> > 
> > should be treated as
> > 
> >     movdir64b       foo(%eip), %eax
> 
> We should not silently change what the programmer has (mistakenly) written,
> as it's ambiguous what would be meant: Could be they meant 32-bit
> addressing, but could also be they means 64-bit one.

This specific case came from

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97257

The address prefix changes the register operand in these instructions.
(%rip) is a special case.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

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