대상 파일을 보기 위해 어떤 도구를 사용합니까?

대상 파일을 보기 위해 어떤 도구를 사용합니까?

링커와 로더에 관한 오래된 책을 읽고 있는데 거기에 개체 코드 이미지가 있습니다.

하지만 이러한 파일의 내용을 표시하는 데 어떤 도구를 사용해야 하는지 모르겠습니다.

누구든지 이 도구를 알려주시면 매우 감사하겠습니다.

이는 C 코드와 개체 파일의 해당 표시입니다.

소스 파일 m.c:

extern void a(char *);

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

소스 파일 a.c:

#include <unistd.h>
#include <string.h>

void a(char *s)
{
  write(1, s, strlen(s));
}

대상 코드 m.o:

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
...

대상 코드 a.o:

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

답변1

당신은 그것을 사용할 수 있습니다 objdump. 바라보다사람 개체 덤프. 예를 들어 -d분해 옵션(많은 옵션이 있음):

objdump -d a.o

기타 유용한 프로그램이 포함되어 있습니다.바이너리 도구.

답변2

objdump 옵션을 참조하세요. 예를 들어:

objdump -d ao

objdump -D ao

objdump -S ao

여기에 이미지 설명을 입력하세요.

관련 정보