Re: binutils-2.9.1.0.1

Alan Modra (alan@spri.levels.unisa.edu.au)
Mon, 4 May 1998 21:52:21 +0930 (CST)


On Wed, 29 Apr 1998, Steven N. Hirsch wrote:

> I'm not sure why the (,%eax,4) form was made illegal in the latest release

It's not the `(,eax,4)' that is illegal

> of binutils, but assembly of Intel Linux entry.S now fails at the two
> instances of:
>
> call sys_call_table(,%eax,4)

Gas is complaining about a missing `*'. You should write

call *sys_call_table(,%eax,4)

to be strictly legal. It's one of those quirks of AT&T assembler that
absolute jumps and calls have a '*' while pc relative jump and calls
don't. You really only need the '*' to distinguish between them in the
case where no register or base/index expression is given. eg. `jmp foo'
vs. `jmp *foo' However, the syntax does make quite a lot of sense.
`jmp foo' branches to the label `foo', while `jmp *foo' reads the
destination address from the memory location foo, then jumps there. Think
of the `*' as being a pointer operation.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu