2008-08-21 32 views
7

我正在使用x86机器上的启动加载器。启动后的寄存器状态

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

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

回答

8

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

OS dev Wiki,这是我得到的信息,当我跟我玩玩具OS的

1

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

1

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

1

您可以自己总是初始化他们开始用已知状态。

1

最安全的赌注是假定未定义。

1

我知道唯一能够很好地定义的是复位后立即处理器状态。

因为你可以找到记录是Intel's Software Developer's Manual第3卷第8章:标题为表“处理器管理和初始化”“IA-32处理器状态通电后,复位,或INIT”

1

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

没有什么比移植代码更痛苦的了,它假设所有未初始化的东西都将被设置为零。