Какой инструмент можно использовать для просмотра объектного файла?

Я читаю старую книгу о компоновщиках и загрузчиках, и у нее есть образы объектного кода. Но я не могу понять, какие инструменты используются для отображения содержимого этих файлов. Я был бы признателен, если бы кто-нибудь мог указать на инструмент.

Вот код C и соответствующее отображение объектных файлов.

Исходный файл mc :

 extern void a(char *); int main(int argc, char **argv) { static char string[] = "Hello, world!\n"; a(string); } 

Исходный файл ac :

 #include <unistd.h> #include <string.h> void a(char *s) { write(1, s, strlen(s)); } 

Код объекта для mo :

 Sections: Idx Name Size VMA LMA File off Algn 0 .text 00000010 00000000 00000000 00000020 2**3 1 .data 00000010 00000010 00000010 00000030 2**3 Disassembly of section .text: 00000000 <_main>: 0: 55 pushl %ebp 1: 89 e5 movl %esp,%ebp 3: 68 10 00 00 00 pushl $0x10 4: 32 .data 8: e8 f3 ff ff ff call 0 9: DISP32 _a d: c9 leave e: c3 ret ... 

Код объекта для ao :

 Sections: Idx Name Size VMA LMA File off Algn 0 .text 0000001c 00000000 00000000 00000020 2**2 CONTENTS, ALLOC, LOAD, RELOC, CODE 1 .data 00000000 0000001c 0000001c 0000003c 2**2 CONTENTS, ALLOC, LOAD, DATA Disassembly of section .text: 00000000 <_a>: 0: 55 pushl %ebp 1: 89 e5 movl %esp,%ebp 3: 53 pushl %ebx 4: 8b 5d 08 movl 0x8(%ebp),%ebx 7: 53 pushl %ebx 8: e8 f3 ff ff ff call 0 9: DISP32 _strlen d: 50 pushl %eax e: 53 pushl %ebx f: 6a 01 pushl $0x1 11: e8 ea ff ff ff call 0 12: DISP32 _write 16: 8d 65 fc leal -4(%ebp),%esp 19: 5b popl %ebx 1a: c9 leave 1b: c3 ret 

One Solution collect form web for “Какой инструмент можно использовать для просмотра объектного файла?”

Вы можете использовать objdump . См. Man objdump . Например, опция -d для дизассемблирования (есть много вариантов):

 objdump -d ao 

Другие полезные программы включены в binutils .

  • Слишком большой фактор
  • Почему я получаю «ошибку соответствия», когда я пытаюсь преобразовать воду в единицы GNU?
  • Linux и Unix - лучшая ОС в мире.