我正在使用x86机器上的启动加载程序。
当BIOS将MBR的内容复制到0x7c00并跳转到该地址时,寄存器的内容是否有标准含义?寄存器是否有标准值?
我知道段寄存器通常设置为0,但有时会为0x7c0。其他硬件寄存器怎么样?
答案 0 :(得分:8)
来自OS dev Wiki的这个早期执行环境是高度实现定义的,意味着您的特定BIOS的实现。永远不要对寄存器的内容做出任何假设。它们可能被初始化为0,但它们也可能包含随机值。
,这是我在玩玩具操作系统时获取信息的地方
答案 1 :(得分:1)
最好的选择是什么都不做。如果它们有意义,当你需要它们提供的信息时,你会发现另一方面。
答案 2 :(得分:1)
未定义,我相信?我认为这取决于主板和CPU,为了你自己的利益应该被视为随机。
答案 3 :(得分:1)
您可以自己初始化它们以从已知状态开始。
答案 4 :(得分:1)
最安全的选择是假设未定义。
答案 5 :(得分:1)
我知道唯一明确定义的是复位后的处理器状态。
对于记录,您可以在Intel's Software Developer's Manual第3章第8章:“处理器管理和初始化”中找到 ,标题为“IA-32处理器状态,上电后重置” ,或INIT“
答案 6 :(得分:1)
总是假定未定义,否则如果您尝试移植架构,就会遇到问题。
没有什么能像移植代码那样假设所有未初始化的内容都设置为零。