我正在尝试在Linux中查看已编译的C程序的x86程序集,但我没有源代码。这可以通过GCC完成,还是需要不同的工具?感谢。
答案 0 :(得分:1)
GCC是一个编译器。您正在寻找的是一个反汇编程序。在linux上,您可以使用objdump(1)
。
示例(为了便于阅读而剪切了一些objdump
输出):
$ cat example.c
#include <stdio.h>
int main(void)
{
printf("Hello, world!\n");
return 0;
}
$ clang -Wall -Wextra -O2 -o example example.c
$ ./example
Hello, world!
$ objdump -d example | grep -A10 '<main>'
0000000000400500 <main>:
400500: 55 push %rbp
400501: 48 89 e5 mov %rsp,%rbp
400504: bf 0c 06 40 00 mov $0x40060c,%edi
400509: e8 e2 fe ff ff callq 4003f0 <puts@plt>
40050e: 31 c0 xor %eax,%eax
400510: 5d pop %rbp
400511: c3 retq
400512: 90 nop
400513: 90 nop
400514: 90 nop
答案 1 :(得分:0)
objdump -d program&gt; dumped.txt