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

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

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

这个类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协议,这意味着您可以随便修改源代码并发布。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
点赞3
打赏
分享
最新回复 (71)
雪    币: 1270
活跃值: (104)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
AsmDebuger 1 2012-4-28 10:04
2
0
下载看看。顶老罗。
雪    币: 32410
活跃值: (18730)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2012-4-28 10:11
3
0
老罗再翻翻硬盘,看看还有啥好东西被扔在一边了……
雪    币: 334
活跃值: (17)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
likunkun 1 2012-4-28 10:16
4
0
很是支持!,感谢!
雪    币: 132
活跃值: (82)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
messen 2012-4-28 10:35
5
0
膜拜老罗
雪    币: 94
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
miaoling 2012-4-28 10:38
6
0
支持,是个很好的模板
雪    币: 314
活跃值: (128)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
心如止境 2 2012-4-28 10:50
7
0
膜拜,下载,感谢!!
雪    币: 2174
活跃值: (961)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Crakme 2012-4-28 10:58
8
0
我以为是用汇编写的   
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
nevergone 3 2012-4-28 11:00
9
0
顶,支持
雪    币: 4902
活跃值: (90)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
奘和 2012-4-28 11:01
10
0
老罗
有时间把你的硬盘邮寄过来
俺帮你翻翻……
雪    币: 28152
活跃值: (1227)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
潇湘公子 2012-4-28 11:26
11
0
老湿的硬盘里还有很多好东西
雪    币: 125
活跃值: (161)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
zhangtaopy 1 2012-4-28 11:26
12
0
求老罗硬盘
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
大嘴呀呀 2012-4-28 11:47
13
0
神一样的存在啊~
期待详细的教程~
雪    币: 138
活跃值: (460)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Nermor 1 2012-4-28 11:56
14
0
还有这种好东西啊,  赶紧的~~~~!
雪    币: 215
活跃值: (68)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
千里之外 5 2012-4-28 11:59
15
0
编译器 感觉像神话的东西 支持!!!!
雪    币: 1905
活跃值: (1427)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
z许 2012-4-28 12:08
16
0
跪求帮翻老罗的硬盘。
雪    币: 609
活跃值: (172)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
小覃 2 2012-4-28 12:52
17
0
呀,好东西,收藏了再看,谢谢啦!
雪    币: 1252
活跃值: (510)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
zhujian 2 2012-4-28 13:01
18
0
严重支持,
雪    币: 347
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
YwdxY 2012-4-28 13:12
19
0
膜拜,感谢大牛分享~
雪    币: 2547
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
waterwind 2012-4-28 13:30
20
0
谢谢楼主,学习了
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
立方根 2012-4-28 13:58
21
0
一出手就是好东西
雪    币: 19801
活跃值: (3075)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
atompure 2012-4-28 14:01
22
0
Thank you very much
雪    币: 2993
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
天命小三 1 2012-4-28 14:04
23
0
大牛翻一下硬盘,我们就有福了哈~
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jerrynpc 2012-4-28 14:25
24
0
感谢老罗分享高级东西啊。。。
雪    币: 429
活跃值: (1875)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
riusksk 41 2012-4-28 15:26
25
0
又见高级货……
游客
登录 | 注册 方可回帖
返回