首页 > 代码库 > gcc源代码分析的方法【总结】
gcc源代码分析的方法【总结】
看gcc-1.40有段时间了,14年左右看了一段时间,15年左右看了一段时间。
现在可以说基本上明白了gcc的大部分代码。
如果说能快速的明白其中的原理,总结我看代码的方法捷径我列举以下几条。
第一,gcc版本低,这是成功的前提,也是一条捷径。
第二,分析最基本的hello.c文件,就一条函数调用,但是已经足够。
第三,发现了debug_rtx ()函数和debug_tree ()函数。这两个函数可以说是看懂gcc的唯一的两把钥匙!
第四,思路正确,expand_call()如何产生各种rtx的?这个思路借助debug_rtx ()函数。
expand_call ()函数的参数也就是用到的tree如何得到的?
expand_expr_stmt()函数的参数是如何得到的?
形象的可以说tree的形成可以看成套娃模型,
最基本的小的套娃最先形成,然后各种操作tree的函数一层层的套上去,
我们debug_tree ()函数的print_node ()函数的作用则是把套娃分开!
大体的思路就是:就是如何从源代码到tree的,上面的可以说如何从tree到rtx的!
关注的是和printf相关的tree如何形成的?和"Hello,world!\n"相关的tree如何形成的?
第五,对语法分析bison的原理很熟悉。
判断一个人是否懂gcc可以分3个层次:
初级的:hello.c到hello.i到hello.s到hello.o到a.out
中级的:gcc前端,从源代码到rtl中间语言,后端从rtl到汇编语言。
高级的:c文件源代码到tree,tree到rtx,rtx到汇编语言。
gcc源代码分析的方法【总结】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。