首页
社区
课程
招聘
[原创]Little C编译器发布源代码
发表于: 2012-4-28 10:01 37026

[原创]Little C编译器发布源代码

2012-4-28 10:01
37026

偶然想起还有这么个东东,反正放在硬盘里也是烂掉,索性贡献出来让我们一起学习提高吧。

这个类C编译器是我在2008年写的,完成度并不高,并没有实现指针、struct这些,不过还是实现了基本的C语言数据类型(int/char/long/short等),函数的声明、定义、调用、递归,if/for/while/goto等跳转,详细请看sample和source。

为了节省开发的时间,词法和语法分析分别采用lex和yacc编写,可以用Cygwin里面的flex和bison进行编译。另外我觉得编译成x86的bytecode比较麻烦,所以定义了一套自己的bytecode,以及写了一个虚拟机(叫模拟器更准确)去执行它,这部分是比较好修改的,而且我生成的bytecode要比x86的指令体系精简,也跟平台无关,可能适合移植到一些对运行环境要求较苛刻的地方。

前端没有做太多的优化,主要是对一些可以在编译期计算出来的值就直接计算了,例如int a=1+4/2,就在编译期直接算出结果3,然后生成“赋值3给a”的指令,这样节省了最终生成的指令大小和运行期的时间。

----------

由于这仅仅是我个人业余练手的项目,里面还存在着许多的bug,而且并没有写任何文档和注释,仅供大家学习和参考使用,请谅解。分发遵循BSD协议,这意味着您可以随便修改源代码并发布。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 6
支持
分享
最新回复 (71)
雪    币: 1270
活跃值: (109)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
下载看看。顶老罗。
2012-4-28 10:04
0
雪    币: 47147
活跃值: (20445)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
老罗再翻翻硬盘,看看还有啥好东西被扔在一边了……
2012-4-28 10:11
0
雪    币: 334
活跃值: (22)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
很是支持!,感谢!
2012-4-28 10:16
0
雪    币: 132
活跃值: (132)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
膜拜老罗
2012-4-28 10:35
0
雪    币: 94
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
支持,是个很好的模板
2012-4-28 10:38
0
雪    币: 316
活跃值: (128)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
7
膜拜,下载,感谢!!
2012-4-28 10:50
0
雪    币: 2194
活跃值: (1001)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我以为是用汇编写的   
2012-4-28 10:58
0
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
9
顶,支持
2012-4-28 11:00
0
雪    币: 4902
活跃值: (130)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
老罗
有时间把你的硬盘邮寄过来
俺帮你翻翻……
2012-4-28 11:01
0
雪    币: 31200
活跃值: (1407)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
老湿的硬盘里还有很多好东西
2012-4-28 11:26
0
雪    币: 125
活跃值: (161)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
求老罗硬盘
2012-4-28 11:26
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
神一样的存在啊~
期待详细的教程~
2012-4-28 11:47
0
雪    币: 138
活跃值: (470)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
还有这种好东西啊,  赶紧的~~~~!
2012-4-28 11:56
0
雪    币: 217
活跃值: (68)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
15
编译器 感觉像神话的东西 支持!!!!
2012-4-28 11:59
0
雪    币: 1895
活跃值: (1657)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
16
跪求帮翻老罗的硬盘。
2012-4-28 12:08
0
雪    币: 615
活跃值: (172)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
17
呀,好东西,收藏了再看,谢谢啦!
2012-4-28 12:52
0
雪    币: 1262
活跃值: (755)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
18
严重支持,
2012-4-28 13:01
0
雪    币: 347
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
膜拜,感谢大牛分享~
2012-4-28 13:12
0
雪    币: 2547
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
谢谢楼主,学习了
2012-4-28 13:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
一出手就是好东西
2012-4-28 13:58
0
雪    币: 20880
活跃值: (4085)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
22
Thank you very much
2012-4-28 14:01
0
雪    币: 2993
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
23
大牛翻一下硬盘,我们就有福了哈~
2012-4-28 14:04
0
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
感谢老罗分享高级东西啊。。。
2012-4-28 14:25
0
雪    币: 433
活跃值: (1870)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
25
又见高级货……
2012-4-28 15:26
0
游客
登录 | 注册 方可回帖
返回
//