我正在使用x86机器上的启动加载器。启动后的寄存器状态
当BIOS将MBR的内容复制到0x7c00并跳转到该地址时,寄存器内容是否有标准含义?寄存器是否有标准值?
我知道段寄存器通常设置为0,但有时会是0x7c0。其他硬件寄存器呢?
我正在使用x86机器上的启动加载器。启动后的寄存器状态
当BIOS将MBR的内容复制到0x7c00并跳转到该地址时,寄存器内容是否有标准含义?寄存器是否有标准值?
我知道段寄存器通常设置为0,但有时会是0x7c0。其他硬件寄存器呢?
这个早期执行环境是高度实现定义的,这意味着您的特定BIOS的实现。不要对寄存器的内容做任何假设。它们可能被初始化为0,但它们也可能包含一个随机值。
从OS dev Wiki,这是我得到的信息,当我跟我玩玩具OS的
最好的选择是什么都不要。如果他们有意义,当你需要他们提供的信息时,你会发现从另一端。
未定义,我相信吗?我认为这取决于主板和CPU,为了您自己的利益,应视为随机。
您可以自己总是初始化他们开始用已知状态。
最安全的赌注是假定未定义。
我知道唯一能够很好地定义的是复位后立即处理器状态。
因为你可以找到记录是在Intel's Software Developer's Manual第3卷第8章:标题为表“处理器管理和初始化”“IA-32处理器状态通电后,复位,或INIT”
总是假定未定义,否则如果尝试移植架构,则会遇到不好的问题。
没有什么比移植代码更痛苦的了,它假设所有未初始化的东西都将被设置为零。