i386 lcall without *
Alan Modra
alan@SPRI.Levels.UniSA.Edu.Au
Fri Mar 3 16:37:00 GMT 2000
On Fri, 3 Mar 2000, [iso-8859-1] Etienne LORRAIN wrote:
> There is a new warning in binutils-2.9.5.0.27 (gas) for i386
> on a line like:
> lcall (memory)
> It says something like "lcall without *".
The warning has been there for a long time. It's just that when
.intel_syntax was added, the warning was accidentally turned off in some
cases. Worse than that, wrong code was generated too (in a smaller
number of cases). For an example, see
http://sourceware.cygnus.com/ml/binutils/2000-01/msg00083.html
> Shall I convert to a form like:
> lcall *memory
> Or the warning will disappear when the argument is in
> between parenthesis ?
The easiest solution is just to use "call *address". Note that
"call (address)" is equivalent to plain "call address", a relative call.
Adding any number of pairs of parentheses doesn't change the address
expression in this case. You could argue that "call address(,1)"
shouldn't give a warning as it is clear that the address expression
here is indirect. Does anyone know what other assemblers do with
.extern foo
call foo(,1)
?
More information about the Binutils
mailing list