Thanks Bryan. Your explanation makes things a lot clearer to me.
As mentioned in my reply to Daniel, I not cannot figure out why "$1f" will
be "0000".


On Fri, Sep 23, 2011 at 12:05 PM, Brynet <bry...@gmail.com> wrote:

> One of the first things an MBR does is do a long jump from where the BIOS
> loaded it.
>
> The thing is, often you can't trust the BIOS to do the right thing, the x86
> in
> 16-bit real mode uses segmented memory, so you may be at 0000:07C0 or
> 7C00:0000
> depending on the implementation. If you read the comment higher up you'll
> see
> they perform a long jump to "normalize" the Code Segment to 07C0, offset 0.
>
> 0000:07C0 and 7C00:0000 technically resolve to the same address, but
> enforcing
> segment:offset (cs:ip) just makes things consistent.
>
> The references to ":1" is a local label, used for relative addressing, 'f'
> meaning forward and 'b' meaning backward.
>
> http://sourceware.org/binutils/docs/as/Symbol-Names.html
>
> Most MBR's are OS-independent, they relocate, parse partition table, load
> the
> PBR/VBR to 7C00 and perform a ljmp to it.
>
> Hope that helps,
> -Bryan.

Reply via email to