This is the mail archive of the
binutils@sourceware.cygnus.com
mailing list for the binutils project.
Re: i386 lcall without *
- To: Etienne LORRAIN <etienne_lorrain at yahoo dot fr>
- Subject: Re: i386 lcall without *
- From: Alan Modra <alan at SPRI dot Levels dot UniSA dot Edu dot Au>
- Date: Sat, 4 Mar 2000 11:08:48 +1030 (CST)
- cc: binutils at sourceware dot cygnus dot com, etienne dot lorrain at ibm dot net
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)
?