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)