Assembly 一个FSBL可以加载另一个FSBL吗?

Assembly 一个FSBL可以加载另一个FSBL吗?,assembly,bootloader,Assembly,Bootloader,我目前正在探索引导程序世界 然而,我问自己,第一阶段引导加载程序是否可以加载并运行另一个第一阶段引导加载程序。(假设它位于一个胖分区上) 如果是,首选的方式是什么? 如果不是,原因是什么?请确保: 在适当的段中加载新的FSBL。 这通常意味着0000:7c00,这反过来意味着您必须覆盖当前的引导加载程序。 您可以重新定位一个例程(您希望使其与位置无关),该例程可以像设置(慢速)rep movsb/w/d的ds:si、es:di和cx一样简单 正确设置寄存器。 BIOS将控制权交给具有明确寄存器值

我目前正在探索引导程序世界

然而,我问自己,第一阶段引导加载程序是否可以加载并运行另一个第一阶段引导加载程序。(假设它位于一个胖分区上)

如果是,首选的方式是什么?
如果不是,原因是什么?

请确保:

  • 在适当的段中加载新的FSBL。
    这通常意味着
    0000:7c00
    ,这反过来意味着您必须覆盖当前的引导加载程序。
    您可以重新定位一个例程(您希望使其与位置无关),该例程可以像设置(慢速)
    rep movsb/w/d
    ds:si
    es:di
    cx
    一样简单

  • 正确设置寄存器。
    BIOS将控制权交给具有明确寄存器值的FSBL(参见的第6.5.1节),您必须保存这些值(甚至保存到固定内存位置)并将其还原

  • 一些引导加载程序可能是一个成功的链加载

    只要确保:

  • 在适当的段中加载新的FSBL。
    这通常意味着
    0000:7c00
    ,这反过来意味着您必须覆盖当前的引导加载程序。
    您可以重新定位一个例程(您希望使其与位置无关),该例程可以像设置(慢速)
    rep movsb/w/d
    ds:si
    es:di
    cx
    一样简单

  • 正确设置寄存器。
    BIOS将控制权交给具有明确寄存器值的FSBL(参见的第6.5.1节),您必须保存这些值(甚至保存到固定内存位置)并将其还原


  • 一些引导加载程序可能是一个成功的链加载

    是的,当然,为什么不呢。另请参见链加载。是的,当然,为什么不。另请参见链加载。