[syslinux] Question about memdisk
Gregg Lebovitz
gregg at suma.com
Mon Aug 26 10:20:46 PDT 2002
On Mon, 2002-08-26 at 12:52, H. Peter Anvin wrote:
> Gregg Lebovitz wrote:
> > Peter,
> >
> > I am trying to get memdisk to work with grub and have run into a
> > problem. Grub loads memdisk into the 0x9000 segment and then starts it
> > at location 0x90200. I run into problems in the first printf statement.
> > It turns out that printf uses a switch statement that compiles into a
> > jump table. When I reach this jump table, I believe the code is jumping
> > into hyperspace due to the jump table using long addresses.
> >
> > The jump into the jump table is the instruction:
> >
> > jmpl 0x2220(,%eax,4)
> >
> > If you have a moment, can you give me a clue as to what is happening
> > here?
> >
>
> It's just a standard jump, using a 32-bit addresses, which is legal in
> real mode, as long as the value is <= 0xffff.
So if I understand you correctly, even though the value A at 0x2220 +
(%eax * 4) is a 32 bit address, it will be used to jump to a location
within the current segment (as long as the 32bit address A is less then
0xffff).
Gregg
>
> -hpa
>
>
More information about the Syslinux
mailing list