6

随想录(gcc生成的中间语言、汇编代码)

 3 years ago
source link: https://feixiaoxing.blog.csdn.net/article/details/102734760
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

随想录(gcc生成的中间语言、汇编代码)

费晓行 2019-10-24 23:53:34 604
分类专栏: 随想录

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

    学过编译原理的朋友都知道,为了让编译器可以生成多种cpu后端代码,在这之前一般先将语法树翻译成中间语言。中间语言的概念大家应该不陌生。只是很多人虽然听说过中间语言,但是却未必看过编译器生成的中间语言是什么样子的。恰好,gcc编译器提供了这样的功能。只要我们编译的时候加上-fdump-tree-all就可以看到中间语言是什么样的了。

1、假设有一段简单的递归函数代码,

2、接着我们在编译的过程中添加-fdump-tree-all选项

shell> gcc -fdump-tree-all hello.c

3、等到命令结束后,在文件夹下面可以看到生成了很多的文件,

4、选择打开hello.c.011t.cfg就可以看到生成的中间文件了,

5、当然,也可以用-S命令查看一下生成的汇编代码,

    也许有些同学会说,这些知识点根本用不到。确实是这样,编译器出故障的机会是很低的。但是大家平时在分析软件bug的时候,了解一些编译原理和操作系统知识,对于提高自己解决问题的能力还是很有帮助的。

    除了中间语言和汇编语言,其实大家看一下预处理文件也是不错的,比如gcc -E hello.c > hello.i。文件有点长,大家耐心看,


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK