本节书摘来自华章出版社《深入分析GCC 》一书中的第2章,第2.3节,作者 王亚刚 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2.3 GNU binutils工具
在分析GCC代码时,尤其是后端代码生成的过程中,经常需要对编译生成的目标文件进行分析,包括编译生成的汇编代码、目标文件等,此时,如果能够熟练使用GNU binutils工具链中的工具,无疑将对分析非常有用。GNU binutils工具的源代码及介绍参见GNU的官网:http://www.gnu.org/software/binutils/,其中主要工具如表2-1所示。
例如,对于如下的源代码:
[GCC@localhost test]$ cat test.c
int main(){
int i=0, sum=0;
sum = sum + i;
return sum;
}
可以使用objdump进行目标代码的反汇编:
[GCC@localhost test]$ gcc -c -o test.o test.c
[GCC@localhost test]$ objdump -d test.o
test.o: file format elf32-i386
Disassembly of section .text:
00000000 <main>:
0: 55 push