assembly - multboot header 中校验和的用途是什么?

标签 assembly kernel multiboot

“校验和”的目的是什么?

“校验和”字段是一个 32 位无符号值,当添加到其他魔法字段(即“魔法”和“标志”)时,它必须有一个 32 位无符号和零。

dd 0x100000000 - (0xe85250d6 + 0 + (header_end - header_start))

最佳答案

目的是验证多重引导 header 实际上是多重引导 header 。魔数(Magic Number) 0xE85250D6 不足以验证这一点,因为这个魔数(Magic Number)可能偶然出现或设计出现在非多重引导可执行文件中。例如,用于处理多重启动可执行文件的程序很容易在其中的某处包含这个魔数(Magic Number)。

它的目的不是检测错误,因为只检查多重引导 header 是否损坏是没有意义的。如果有可能损坏,则需要验证整个可执行文件。

关于assembly - multboot header 中校验和的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43035568/

相关文章:

visual-studio - 如何使用 Visual Studio 构建内核镜像?

assembly - 为什么 SPARC 汇编 ld/st 指令中需要方括号?

c - 通过设备名称获取设备标志

macos - NASM 和 clang/LLVM 生成不同的目标文件

c - 在异常处理程序中创建的 Linux 内核线程停止

c - 内核驱动程序接收到结构体,但它仍然为空

x86 - 现代计算机是以实模式还是虚拟实模式启动的?

c++ - 如何在 C++ 中使用内联汇编来设置 Trap 标志

c++ - ASM at&t 语法

c - 未执行循环裂变/不变优化,为什么?