prolj
发表于 2007-02-28 16:15
鲸书、EAC(编译器工程)、现代体系结构的优化编译器,都是进一步阅读的好书,后端技术介绍很全面。
Yacc源代码用来学习前端可能有点大,Lemon才 几k 行,适合学习。
CUDev
发表于 2007-03-22 10:55
这个不错,值得看一下!
prolj
发表于 2007-04-04 09:32
Compiler Construction: Principles and Practice上将了一个叫TINY的小型编译器,假想栈体系结构虚拟机解释运行字节码。
译名叫:编译原理及实践
我觉得翻译叫:编译器构造--原理和实践 更合适。
不得不承认,它比我喜欢的龙书更适合用来学习。
[ 本帖最后由 prolj 于 2007-4-4 09:34 编辑 ]
saladjonk
发表于 2007-04-07 00:19
Compiler Construction: Principles and Practice
这本书非常好,把后面的那个最终习题C-实现了就差不多前端入门了,至少对词法分析,语法的递归下降,运行栈等有很好的了解。
之后自动代码生成可以参考lcc那本书,国家图书馆有原版,里面有基于树模式匹配,也就是基于紧缩规范的自动代码生成器构建,使用的是动态规划算法。不过这种自动代码生成起的算法比较落后了 ,主流工业级编译器都没采用。
最复杂的基本是中间代码设计,及其上的优化,基本是靠经验还有体系结构的了解
个人认为学习途径 先 C-,再 lcc,最后Open64,Open64相当不错,而且里面发挥作用的基本是中国人或华裔,现在的gatemainter就是高光荣教授
mik
发表于 2007-04-07 01:39
prolj 兄弟对编译器方面认识比较深喔,目前在写编译器吗?
能否透露一二:P
prolj
发表于 2007-04-07 07:50
原帖由 mik 于 2007-4-7 01:39 发表于 25楼
prolj 兄弟对编译器方面认识比较深喔,目前在写编译器吗?
能否透露一二:P
回BZ,按照书上抄了两个,没有原创。:oops:
对编译非常感兴趣。
现在还在CPU中挣扎:oops: ,想完整的熟悉一下SoC的逻辑设计。明白CPU对代码生成和代码优化肯定是有帮助的(我这么认为,动CPU的动机也是如此,当然也可以打下一个比较扎实的基础)
对系统内核也很感冒,只是还没入门:oops: :oops:
to saladjonk : Open64真的很好吗?关注一下。里面发挥作用的基本是中国人或华裔,现在的gatemainter就是高光荣教授,你在里面做哪部分?能否透露一二?:em02:
saladjonk
发表于 2007-04-07 21:22
原帖由 prolj 于 2007-4-7 07:50 发表于 26楼
明白CPU对代码生成和代码优化肯定是有帮助的
顶你这句话,这个确实重要,不然后面老要指令refine
我编译器也只是入门,理论跟不上,中间代码和优化方面啃不动,还是要多读书才行。。。
身旁有人在弄Open64,高光荣教授也来访问过(此人很牛,中国大陆第一个在MIT的计算机博士,86年),所以了解多一些。
Open64是他向SGI公司接下来的,主力开发者四人,三个是华人,一个大陆的,一个香港的,还有一个人忘了,后来才知道编译界大牛华人其实很多滴~~~
Open64主要是并行算法比gcc多,比gcc效率高一些,在一些benchmark上跑效果比gcc高10%。不过好像gcc要大改动了。
saladjonk
发表于 2007-04-07 21:27
原帖由 prolj 于 2007-4-7 07:50 发表于 26楼
你在里面做那部分
我肯定没资格弄Open64了,只是有些了解,认识一个Open64的大牛,去美国惠普总部了,留下大堆的Paper,我现在才走到lcc的位置,想把这个搞清楚,里面的自动代码生成器我觉得还不错啊,虽然不算先进,不过这个会了,其他的应该好学。
lcc虽然优化不多,我觉得还是有学习价值的,毕竟是ANSI-C,而且以后可以在lcc基础上自己实验优化算法。
国内就是研究氛围不太好,没有企业的支持。
[ 本帖最后由 saladjonk 于 2007-4-7 21:37 编辑 ]
prolj
发表于 2007-04-08 14:13
saladjonk好谦虚。编译器很牛,机会也很多,羡慕。
我要多加油努力了,以后有机会也接触一下Open64。
现在晚上做梦都是一些形式上很简单但是自己完全看不懂的公式,希望是优化公式吧:em15:
mik
发表于 2007-04-08 17:14
我认为能够深入了解目标机器的体系架构已经完全可以应付了。至于了解CPU,当然有这方面的知识更好,无也不需要刻意为了优化而了解CPU。
恐怕许多编译器厂商也未必会深入CPU