由于仍然需要启动,我想知道,在 x64/AMD64 64 位系统上,BIOS 是否仍使用 16 位指令?它是否也在实模式下运行?
答案1
x86 处理器仍然以实模式启动。BIOS 在初始化硬件时可以自由(有时是强制)切换到受保护模式或长模式,但当它们将控制权移交给操作系统(或者更确切地说是其引导加载程序)时,它们必须恢复到实模式,因为这些加载程序希望系统处于这种模式。
核心引导和UEFI较早切换到保护模式,而对于 PCBIOS(phoenix/award、ami 等),我们无法分辨。它们是闭源的,通常不会透露太多有关其内部的信息,并且它们的接口都指定为实模式。
对于使用 ECC RAM 运行的系统,您可以相对确定它们会切换到能够寻址所有 RAM 的某种模式,因此它们至少会进入受保护模式 - 这是因为它们需要在启动时初始化内存(向每个地址写入一些值),否则如果某些后续代码读取从未写入的地址(由于错误检测可能会产生误报),系统就会停止运行。但正如所说,这是 BIOS 内部的,普通人无法轻易弄清楚,也不需要考虑。
tl;dr:BIOS 在所有外部可见的地方都处于实模式,因此从所有意图和目的来看,它可能一直在实模式下运行。