【发布时间】:2018-03-12 19:26:54
【问题描述】:
在以下 x86 汇编代码中:
dd 0x1BADB002
dd 0x00
dd - (0x1BADB002+0x00)
这些值似乎没有分配给任何变量。那么这段sn-p代码有什么作用呢?我听说过它被存储在内存中,但具体在哪里?
【问题讨论】:
-
这是一个多启动头文件。如果您正在编写要通过 GRUB 之类的东西启动的代码,则需要在它出现的 ELF 文件的前 8k 中找到此签名,以便 GRUB(或任何兼容多引导的加载程序)将代码识别为兼容多引导。没有它,多重引导加载程序将出错。您可以在 GRUB 文档中找到关于此的文档:gnu.org/software/grub/manual/multiboot/…
-
DD 没有被用作指令。它是一个 NASM 指令,允许您定义 32 位值。构成多重引导标头的这些数据通常放置在链接描述文件放置在生成的 ELF 可执行文件中的所有其他内容之前的数据部分中(这样做是为了在文件的前 8k 中获取标头,以便多重引导加载程序/GRUB 可以找到它)
标签: x86 kernel nasm osdev multiboot