objdump на машинном коде с блоками нулей не показывает все байты? - PullRequest
1 голос
/ 08 июля 2019

Могу ли я знать, почему я не вижу 15 байтов 0x00 в коде сборки, который отображается objdump?

$ cat test.c 
void main()
{
   __asm__(".byte 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00");
}
$ gcc -masm=intel -g -c test.c 
$ objdump -d -M intel -S test.o 

test.o:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <main>:
void main()
{
   0:   55                      push   rbp
   1:   48 89 e5                mov    rbp,rsp
    ...
  10:   00 00                   add    BYTE PTR [rax],al
  12:   00 5d c3                add    BYTE PTR [rbp-0x3d],bl
$ 

1 Ответ

1 голос
/ 09 июля 2019

Требуется опция -z объекта objdump :

-z
--disassemble-zeroes
Обычно на выходе разборки пропускаются нулевые блоки.Эта опция заставляет дизассемблер разбирать эти блоки, как и любые другие данные.

...