This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: as 2.13.90.0.18 question/problem
- From: Nick Clifton <nickc at redhat dot com>
- To: Thomas Green <thomas dot green at altiris dot com>
- Cc: binutils at sources dot redhat dot com
- Date: Tue, 25 Nov 2003 18:24:59 +0000
- Subject: Re: as 2.13.90.0.18 question/problem
- References: <1069277627.23299.21.camel@squid>
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