x86 - BIOS 中是否有可以在热重置后幸存下来的地方?

标签 x86 low-level bios osdev

是否有任何地方(HDD、软盘等除外)可以存储几个字节的信息并在 CPU 热重置后读取它们?

我尝试使用BIOS数据区域(特别是:0x0040:0x00F0 - 应用程序间通信区域),但该区域在重置时被填充为零,所以我的信息丢失了。

复位时是否还有其他地方没有清除?

最佳答案

重置(冷或热)后机器状态未定义,因此简短的答案是否定的。

但是,您可能会滥用某些尽管不可靠的硬件来在重置时存储值。

  • 显示内存,但有些卡确实会清除内存。
  • MSR,但这取决于型号
  • PCI 寄存器 - 对于某些卡,BAR 似乎在重置后没有变化。

再说一遍,以上所有内容都不可靠。毫不奇怪,要在重置后持久存储值,您需要持久存储,即磁盘、远程服务器等。

关于x86 - BIOS 中是否有可以在热重置后幸存下来的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25816300/

相关文章:

assembly - 不知道为什么我们在汇编代码使用 %eax 和 %edx 时添加寄存器 %rdx 和 %rax

linux - x86 汇编语言 - 如何读取输入的字符数?

c - 在 BIOS 级程序集中读取输入?

java - 用 Java 或 Javascript 播放 BIOS 声音(通过 PC 扬声器)

c++ - SIMD __m256i 到 __m256d 转换结果

c++ - 为什么错误共享仍然影响非原子,但远小于原子?

c - 将 2 个 32 位数字相乘并使用 AVX2 取前 32 位

C "double to num"转换码 : why is it written like this?

c++ - 为什么当我访问一个由三个整数组成的对象时,它会从基指针而不是堆栈指针中减去?

assembly - int 13h 不从虚拟磁盘读取扇区