This is the mail archive of the binutils@sourceware.cygnus.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: i386 lcall without *



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)

?




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]