免费注册 查看新帖 |

Chinaunix

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

一个使用递归下降方法实现的cminus编译器,使用nasm作为后端 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2007-10-16 17:52 |只看该作者
原帖由 onlyflyer 于 2007-10-16 17:46 发表
albcamus(leviathan),我是你的粉丝啊。
这次aka内核开发者大会我还问asmcos你怎么没来呢。


您这叫硬功夫, 我是唬悠型的, 做您的粉丝还差不多

有机会认识一下

论坛徽章:
0
22 [报告]
发表于 2007-10-16 18:01 |只看该作者
原帖由 onlyflyer 于 2007-10-16 17:25 发表
非常感谢DennisRitchie的热心和细心,你提出的问题我会马上改正的。
我已经研三了,目前在北京一家公司实习,目前正在找正式工作。

那就有点可惜了,如果是研一的话,兄台肯下番功夫,可以做一个完整的ANSI C的编译器,就像TCC(Tiny C Compiler)一样。

感觉研究生阶段在公司实习比在学校跟着老板做会学到更多实际的东西.

以计算机专业来说,我感觉在研究生阶段:
自己做一个较为完整的程序后上涨的经验值 > 在公司实习的收获 > 在学校跟着老板做

论坛徽章:
0
23 [报告]
发表于 2007-10-16 18:14 |只看该作者
lz很强,理论联系实际才是正道。

目前没有时间拜读楼主的作品,但是好贴要支持一把。

论坛徽章:
0
24 [报告]
发表于 2007-10-16 18:27 |只看该作者
原帖由 flw2 于 2007-10-16 13:28 发表
《可变目标c编译器:设计与实现》刚买,介绍lcc的,感觉写的很烂
就看过龙书,而且据说现在的教材内容都是模仿它的,china-pub有句话说
“现在很多编译原理书都有错误,因为它的算法和龙书不是一样的”
我第6 ...

flw2过奖了。越往底层学习,越觉得如进来汪洋大海,无穷无尽。
编译器一直是心向往之,但又不敢涉略,感觉相关知识太多了。我本人也不是计算机专业的,没学过编译原理,对此一窍不通,一直不敢去看。
而且我和lz一样,也研三了,正如DennisRitchie 说的,要是还是研一的话,真该好好去学一下。
不过时间就像xx,挤挤总有的,还是要找时间学习一下计算机中如此重要的东西。
lz的代码收藏了,有机会好好研究一下。

[ 本帖最后由 zx_wing 于 2007-10-16 18:34 编辑 ]

论坛徽章:
0
25 [报告]
发表于 2007-10-16 18:58 |只看该作者
感觉DennisRitchie 也很牛呀,不是只会吵架^^
to zx_wing:
真的,你是大牛,而且感觉基础非常扎实。
还有“唬悠型”,一直是我的偶像,趁机会自卑一把吧
哎,我做什么都有点没耐心研究下去,以前比较喜欢内核,可是现在也忘记的差不多了
现在整天想着学什么会赚的多。

我没看楼主的代码是怎么生成的,语法分析看着比较简单,代码生成的怕看不懂,没有看,不过看着生成的一堆汇编就很不错了

论坛徽章:
0
26 [报告]
发表于 2007-10-16 19:47 |只看该作者
顶!
这个就是编译原理与实践最后的那个综合习题吧,没有类型系统,只支持整型
在tiny的基础上增加了函数和数组的支持,记得书上的给的文法有一个冲突,转成EBNF还要自己改一些。
我当时是生成的是书后的TM机的汇编。

编译器前端已经被漂亮的解决掉了,现在外边的编译器工作都是搞后端优化的,跟体系结构结合的很紧。

[ 本帖最后由 Guang-Yuan.Wang 于 2007-10-16 20:07 编辑 ]

论坛徽章:
0
27 [报告]
发表于 2007-10-16 20:12 |只看该作者
膜拜一个....编译器 太不容易了

论坛徽章:
0
28 [报告]
发表于 2007-10-16 21:24 |只看该作者
1、对于小部分科研人员和顶尖工程师(如C#的作者)来说,非优化的编译器确实没有必要再研究了。
2、对于大部分软件工程师来说,实现一个简化的编译器仍然是一件具有挑战、很有意义的事情。

这里有一个tianya的帖子,供大家参考,http://cache.tianya.cn/publicforum/content/itinfo/1/57753.shtml
天上午又去招聘了,加上前面一段时间的招聘经验,有些话不吐不快
  
  我们希望找到能干活的人,就是能编程序的人,但是我感觉现在刚毕业的人里面,包括名校的,能干活的人比例非常的低,大概不超过百分之一
  
  很多人都说,没有参加过实际的项目,没有经验,希望能够在工作过程中学习等等,开始的时候我也这样认为,随着面试的人的增多,手下新人的增多,我的看法逐渐变了
  
  不谈个人主观能动性方面的种种问题,我想谈谈我心目当中的科班出身编程序选手的及格线
  
  如果你希望编程序为生的话,那么,大学才是你最重要的经验积累地点,相反,工作单位能够积累的东西很少,或者说绝对是第二位的
  
  大学里面,最重要的课程有两门,一门是编译原理,一门是数据结构,这两门课的课程都不重要,重要的是课程设计,也就是老师让你上机做的题目,就我这段时间面试的上百人来说,我认为其中的九十九个,这两门课的课程设计要么是直接复制别人的,要么是蒙混过关的[只碰到一个真刀真枪作过的],其实,这两门课是你大学里所有学习内容当中对编程序的能力进行训练的最根本内容,也是你在社会上永远碰不到的学习机会,任何,不论多贵的培训机构,也不可能给你提供这两门课的训练深度,我见过太多的毕业之后又花一两万块参加各种形式的培训机构培训一年的选手了,你学会一万种框架的配置方法,也不如你大学的时候把这两门课上好有意义
  
  编译原理的课程设计,一般来说要求做一个词法分析器或者语法分析器,最屁要你做一个数学公式的逆波兰式解析,我个人看法词法分析器或者语法分析器都可以,单作逆波兰式,则最好能够做到支持各种类型的运算的地步,比如逻辑运算等等,这门课的课程设计如果能够独立完成,可以在你的大脑里面创建一个整体化的计算机思考方式,最重要的是,这个过程能够让你学会面对一个复杂问题的时候,如何通过各种计算机语言来解决问题,、、、,好处不再列举,其实你毕业之后参加的任何培训,其算法复杂程度都不可能和这门课程相比
  
  数据结构的课程设计,关键点在于两个,一个是数据结构和算法本身,这里需要理解和学习的主要内容是循环和递归等等,其实如果你上面一个做得好,这些都不是太大问题了,学习一下各种数据结构的应用还有些意义;第二个最重要的训练目的,就是如何在计算机当中表达问题的问题,很多人跟我说,我的课程设计是二叉树排序,输入就是我自己输进去一堆数字,输出就是把这些数字排好了再输出到屏幕上、、、faint,晕倒,讲一个汉诺塔的例子吧:
  汉诺塔本身的算法只有二十几行,不太好理解,但是也不难理解,那么,如果希望做一个东西,把汉诺塔表达一下,应该考虑什么东西呢?
  首先,需要考虑清楚几个塔,个个盘子,应该用什么表达,用什么数据结构表达?这个是一个关键问题,需要能够把塔和盘子和数组以及数组里面的元素对应起来思考问题,不要看这一点简单,实际上太多人根本就没有办法在大脑里面完成这个转换、、
  其次,要考虑清楚其中有哪些元素可能发生变化,盘子的数目是最简单的变化元素了,有没有其它的了呢?
  有,移动的速度,如果你移动得太快,那么谁也看不清楚,你等于什么也没做、、那么,至少两个元素要可变,一个是移动速度,一个是盘子数目
  好,轮到表达方式了,你要是牛的话,就画成棍子上面穿着有洞的盘子,不行的话就竖线上面穿横线,移动的过程,牛的话做成动画??不行的话就演示每个步骤地结果既可
  好,该怎么画出来呢,这个时候你就要弄明白如何在屏幕上划线,这个简单,重要的是如何擦掉一条线,还不能把棍子的那个点擦掉,这就有点问题了、、
  好了,上面问题都解决完毕之后,用什么语言编程序就很次要了,c也好,pascal,java,任何语言,一个带两个参数的动画演示汉诺塔的东东就出世了、、、[我花了一个半小时]
  
  数据结构的学习过程中,如果能够在四五个题目上面做到上面的深度,相信你绝对受欢迎
  
  以上两个课程设计,如果都能够独立完成,一般来说毕业后两三年内收入必然超过五千,如果在北京上海,应该可以肯定超过一万

论坛徽章:
0
29 [报告]
发表于 2007-10-16 21:27 |只看该作者

回复 #2 cugb_cat 的帖子

没有涉及过,不知哪位有电子档,可否发给我francy@accel.net.cn
谢谢!

论坛徽章:
0
30 [报告]
发表于 2007-10-16 22:28 |只看该作者
28楼说到我心里了

很多人都说,没有参加过实际的项目,没有经验,希望能够在工作过程中学习等等,开始的时候我也这样认为,随着面试的人的增多,手下新人的增多,我的看法逐渐变了
大学才是你最重要的经验积累地点,相反,工作单位能够积累的东西很少,或者说绝对是第二位的
  

引用李开复的一句话

“打工只是学习生活的一种补充,学习才是最重要的。打工的目的是开阔眼界,不是提前上班。如果你把翻译书本,录入数据库所花的时间投入学习,将来可以赚更多的钱。那些钱将远远的超过你目前打工的收入”

是的,我们现在也还是在打工,只不过是有正式合同了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP