x86 ASM:DD用作一个;说明;?

x86 ASM:DD用作一个;说明;?,x86,kernel,nasm,osdev,multiboot,X86,Kernel,Nasm,Osdev,Multiboot,在以下x86汇编代码中: dd 0x1BADB002 dd 0x00 dd - (0x1BADB002+0x00) 这些值似乎没有分配给任何变量。那么这段代码是做什么的呢?我听说它被存储在内存中,但具体在哪里?dd是一个“伪指令”,它将4字节常量组合到输出中,就像添加eax,eax将0x01 0xc0组合到输出中一样 NASM手册描述了db/dw/dd等 在本例中,@MichaelPetch指出,这些特定常量用于将多引导头组装到输出文件中 相关的: 这是一个mulitboot头。如果您

在以下x86汇编代码中:

dd 0x1BADB002
dd 0x00
dd - (0x1BADB002+0x00)
这些值似乎没有分配给任何变量。那么这段代码是做什么的呢?我听说它被存储在内存中,但具体在哪里?

dd
是一个“伪指令”,它将4字节常量组合到输出中,就像
添加eax,eax
0x01 0xc0
组合到输出中一样

NASM手册描述了
db
/
dw
/
dd

在本例中,@MichaelPetch指出,这些特定常量用于将多引导头组装到输出文件中


相关的:


这是一个mulitboot头。如果您正在编写要通过GRUB之类的方式启动的代码,则需要在ELF文件的前8k中找到该签名,GRUB(或任何符合mulitboot的加载程序)将该代码标识为符合mulitboot。如果没有它,多引导加载程序将出错。您可以在GRUB文档中找到相关文档:DD没有被用作指令。它是一个NASM指令,允许您定义32位值。构成多重引导头的数据通常放在数据段中,链接器脚本将该数据段放在生成的ELF可执行文件的所有内容之前(这样做是为了在文件的前8k中获取头,以便多重引导加载程序/GRUB可以找到它)