x86 ASM:DD 被用作 "Instruction"?

x86 ASM: DD Being Used as an "Instruction"?

在下面的 x86 汇编代码中:

dd 0x1BADB002
dd 0x00
dd - (0x1BADB002+0x00)

这些值似乎没有分配给任何变量。那么这段代码有什么作用呢?我听说它存储在内存中,但具体存储在哪里?

dd是一个"pseudo-instruction",即assembles 4字节常量输出,同理add eax,eax assembles 0x01 0xc0 进入输出。

NASM手册section 3.2 Pseudo-Instructions描述了db/dw/dd等等。

在这种情况下,正如@MichaelPetch 指出的那样,这些特定常量用于 assemble 多重启动 header 到输出文件中。 https://www.gnu.org/software/grub/manual/multiboot/multiboot.html#OS-image-format

How does this assembly bootloader code work?


相关:

How are dw and dd different from db directives for strings?

What is the use of .byte assembler directive in gnu assembly?

x86 assembly - Which variable size to use (db, dw, dd)