免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: kenby
打印 上一主题 下一主题

gcc的tree [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-11-26 22:56 |只看该作者
最开始我想模仿gcc做一个简化的编译器,但看到rtl就晕了,教材上说IR使用三地址码表示,gcc突然冒出个rtl,本来生成一棵语法树对我来说就够难了,之后还要把树转换成rtl,还有楼上说的,看来这太难了。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
12 [报告]
发表于 2008-11-26 23:03 |只看该作者
如果你是做作业,那么gcc对于你可能就没必要了。
因为gcc的结构还是比较复杂的,为了做作业而参考gcc,时间上可能不允许。
但是如果有一定的时间,并且想趁着这个机会学习一下gcc,那倒是挺值得的。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
13 [报告]
发表于 2008-11-26 23:46 |只看该作者
rtl只是一种过程语言,为Stallman所设计。gcc是一种通用编译器,通用编译器的一个重要特点是前端(词法分析,语法分析,标注,源代码级优化,生成过程码)和后端(依据目标优化,依据目标综合)严格分开。gcc自然这方面做的很好,然而它有一个很复杂的结构,搞懂它我想也是冰冻三尺,非一日之寒吧。除非想要移植gcc,否则不一定要花那么多的时间来研究gcc,其实即便移植gcc,也不一定要对gcc有非常深入的了解。当然,如果你有这个时间,并很想了解gcc,那么可以尝试一下,不过挺痛苦的,做好心理准备,hoho

论坛徽章:
0
14 [报告]
发表于 2008-11-27 10:43 |只看该作者
恩,你说的对,看gcc也是没有办法,其它有源代码的教学编译器都太简单了,下了好几个来看,都没有实现数组和函数,变量类型也只有int一种,我觉得编译原理的课应该理论与实践结合起来,如果光看书学理论,即使看懂了,也理解得不深刻,要你做一个编译器根本不知从何下手。很不幸我们的老师只会对着书本讲,讲到语法制导翻译以及后面的内容后,学生听得云里雾里。

论坛徽章:
0
15 [报告]
发表于 2008-11-27 17:14 |只看该作者
用GDB能不能看到树我不清楚,但至少用
-fdump-tree-xx选项可以看到
原帖由 kenby 于 2008-11-26 17:27 发表
gcc使用yacc语法分析后,生成一棵语法树,gcc的树定义在tree.h,主要的数据结构有:
enum tree_code {
      IDENTIFIER_NODE,
      NEGATE_EXPR,
      ADDR_EXPR,
      TRUTH_NOT_EXPR,
      CONVERT_E ...

论坛徽章:
0
16 [报告]
发表于 2008-11-30 19:27 |只看该作者
我只知道ORC的编译器在用GDB跟踪的时候可以用call dump_tree(*tree)来打印树结构,gcc有没有类似的调用函数就不太清楚了!!!

论坛徽章:
0
17 [报告]
发表于 2008-12-01 21:43 |只看该作者
原帖由 精灵鼠小弟 于 2008-11-30 19:27 发表
我只知道ORC的编译器在用GDB跟踪的时候可以用call dump_tree(*tree)来打印树结构,gcc有没有类似的调用函数就不太清楚了!!!

我还知道ORC的前端是直接用的GCC的,ld也是直接用的GNU ld。

论坛徽章:
0
18 [报告]
发表于 2008-12-02 09:26 |只看该作者
也就是说GCC应该也可以用GDB看tree,记得GCC好像有一个看Tree的选项,《GCC大全》里面说的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP