[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