This is the mail archive of the binutils@sources.redhat.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]
Other format: [Raw text]

Re: as 2.13.90.0.18 question/problem


Hi Thomas,

> Please forgive my mailing here for this, as I could find nowhere
> else posted on the gnu page for support.

No worries - this is the appropriate list for these kind of problems.

> I am trying what I believe to be a fairly simple task.

The first thing to note is that you are using an old version of the
assembler.  v2.14 is now out and the sources in the CVS repository
have even more improvements and bug-fixes than the 2.14 release.  (It
is possible that your problem is due to a bug in the assembler or
linker...)


> I would like to make an indirect (or even direct) lcall.

> #   lcall   *%es:16(%di)     # indirect lcall to the routine
>     lcall   $0x9dbc,$0x106   # call it with immediate values

>
> at the time I do the lcall I am certain that %es:16(%di) refers to a
> segment:offset value of 0x9dbc0106.  When I try to make the lcall my
> program fails, whereas if I call that address with the immediate
> operands, the call works just fine.

Unfortunately I am not familiar with x86 assembler, so I am not going
to be able to help very much with this problem, but I would suggest
that the best way to debug this problem would be to run the code under
GDB and single step through the instructions.  When you get to the
lcall, examine the registers to see that they contain the correct
values and then step through the lcall to see where it ends up.

Cheers
        Nick


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