x86 ASM: DD используется в качестве "инструкции"?

В следующем коде сборки x86:

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

Кажется, значения не присваиваются никаким переменным. Так что же делает этот фрагмент кода? Я слышал, что что-то хранится в памяти, но где именно?

1 ответ

dd является "псевдоинструкцией", которая собирает 4-байтовые константы в вывод, так же, как add eax,eax монтирует 0x01 0xc0 в выходной.

В разделе 3.2 руководства пользователя NASM описаны псевдоинструкции db / dw / dd и так далее.

В этом случае, как указывает @MichaelPetch, эти конкретные константы используются для сборки заголовка мультизагрузки в выходной файл. https://www.gnu.org/software/grub/manual/multiboot/multiboot.html

Как работает код этой сборки загрузчика?


Связанные с:

Чем dw и dd отличаются от директив db для строк?

Какая польза от директивы ассемблера.byte в сборке GNU?

сборка x86 - какой размер переменной использовать (db, dw, dd)

Другие вопросы по тегам