
State of Registers After Bootup我正在x86机器上的引导加载程序上工作。 BIOS将MBR的内容复制到0x7c00并跳转到该地址时,寄存器的内容是否有标准含义? 寄存器是否有标准值? 我知道段寄存器通常设置为0,但有时为0x7c0。 那其他硬件寄存器呢?
从OS开发者Wiki中获取信息,当我在玩玩具OS的游戏时可以从中获取信息 始终假定未定义,否则,如果尝试移植体系结构,则会遇到严重问题。 假定将所有未初始化的内容都设置为零,这与移植代码的痛苦完全不同。 据我所知,唯一定义良好的就是复位后立即处于处理器状态。 作为记录,您可以在标题为"加电,复位或INIT之后的IA-32处理器状态"的表中的英特尔软件开发人员手册第3卷第8章:"处理器管理和初始化"中找到该记录。 最安全的选择是假设未定义。 您总是可以自己初始化它们,以已知状态开始。 不确定,我相信吗?我认为这取决于主板和CPU,应从自己的角度考虑将其视为随机的。 最好的选择是不承担任何责任。如果它们具有含义,那么当您需要它们提供的信息时,就会从另一端发现。 |