启动后的寄存器状态

时间:2008-08-21 15:57:36

标签: boot bios

我正在使用x86机器上的启动加载程序。

当BIOS将MBR的内容复制到0x7c00并跳转到该地址时,寄存器的内容是否有标准含义?寄存器是否有标准值?

我知道段寄存器通常设置为0,但有时会为0x7c0。其他硬件寄存器怎么样?

7 个答案:

答案 0 :(得分:8)

  

这个早期执行环境是高度实现定义的,意味着您的特定BIOS的实现。永远不要对寄存器的内容做出任何假设。它们可能被初始化为0,但它们也可能包含随机值。

来自OS dev Wiki

,这是我在玩玩具操作系统时获取信息的地方

答案 1 :(得分:1)

最好的选择是什么都不做。如果它们有意义,当你需要它们提供的信息时,你会发现另一方面。

答案 2 :(得分:1)

未定义,我相信?我认为这取决于主板和CPU,为了你自己的利益应该被视为随机。

答案 3 :(得分:1)

您可以自己初始化它们以从已知状态开始。

答案 4 :(得分:1)

最安全的选择是假设未定义。

答案 5 :(得分:1)

我知道唯一明确定义的是复位后的处理器状态。

对于记录,您可以在Intel's Software Developer's Manual第3章第8章:“处理器管理和初始化”中找到 ,标题为“IA-32处理器状态,上电后重置” ,或INIT“

答案 6 :(得分:1)

总是假定未定义,否则如果您尝试移植架构,就会遇到问题。

没有什么能像移植代码那样假设所有未初始化的内容都设置为零。