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: jbeulich at suse dot com
Subject: [Bug gas/26685] Error: invalid register operand size for `movdir64b'
Date: Thu, 01 Oct 2020 13:12:38 +0000

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

--- Comment #13 from Jan Beulich <jbeulich at suse dot com> ---
(In reply to H.J. Lu from comment #12)
> (In reply to Jan Beulich from comment #11)
> > (In reply to H.J. Lu from comment #10)
> > > symbol(%rip) is similar to symbol and DISP.  There is no real register
> > > in memory operand.
> > 
> > I disagree - the compiler ought to emit
> > 
> >     movdir64b       foo(%eip), %eax
> > 
> > or
> > 
> >     movdir64b       foo(%rip), %rax
> 
> This is wrong for x32.

You mean both, or (I assume) just the latter?

> > in this case, whatever fits the x32 model better. The compiler ought to in
> > particular be aware that the register operand of this insn is
> > address-size-prefix, not operand-size-/REX-prefix controlled.
> 
> There is no RIP register in GCC. It isn't a real register. GCC always
> generate foo(%rip).

That's not interesting, it's a gcc internal thing how to arrange for correct
code to be generated. At the insn template level it's only %<number> anyway.
What is needed is some sort of flag to indicate that in this specific case it
needs to be foo(%eip).

-- 
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]