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 汇编代码中:
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?