首页
社区
课程
招聘
[原创]一个编译器含源码,基于luocong大神的lcc改进而成
发表于: 2015-3-3 16:45 12386

[原创]一个编译器含源码,基于luocong大神的lcc改进而成

2015-3-3 16:45
12386

hi,各位新年快乐~拜个晚年

大概前年底的时候,开始想往自制的os tinix里移植一个编译器,构建一个传说中的os生态,哈哈
于是看雪上面找来luocong大神的lcc源码进行研究,改着改着发现要移植是不可能的事情。
但是研究的过程中发现了lcc源码的不少问题,也有了一些功能改进想法和研究兴趣,顺便也想了解下编译原理这门学科。慢慢的做了好多现在看来很2的修改。

也许可以改进成一个不错的脚本解释器,发出来大家一起研究学习下

luocong大神的lcc在这个帖子上
http://bbs.pediy.com/showthread.php?t=149966
分发遵循BSD协议,有改进也可以共享下

做了很多修改,大多是为了实现A功能首先得实现B功能,实现期间发现,干脆再实现个C功能......
由于是很早以前改的,忘了很多,印象里做了以下几点修改:
1,修复部分语法解析上的bug,不赘述,可通过查看两份代码区别来确认。

2,新增一部分语法支持,如取地址符,指针符,全局变量等。这部分主要实现在,虚拟机指令的修改,代码生成时全局内存分配的修改。

3,为虚拟机添加调试功能
启动时-d参数将进入调试模式,调试器将停在第一条虚拟指令li_i指令上

断点功能(支持符号)及调用栈查看、内存查看等功能



4,可变参数调用约定的支持

5,define宏的简单支持

#define MUL(_a,_b,_c) ((_a)*(_b)*(_c))
#define CRT_LIB_NAME "msvcr90.dll"
#define malloc(_size) cdecl_wrapper(CRT_LIB_NAME, "malloc", _size)
cdecl_wrapper("msvcr90.dll", "malloc", 100)

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

上传的附件:
收藏
免费 3
支持
分享
最新回复 (11)
雪    币: 435
活跃值: (1277)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
2
另外,-p的虚拟指令修改也做了点修改,让他能做出一些注释来
这种基于符号的注释和上贴中的变量功能,都是通过编译期间的 符号表 和运行期间共享实现的


有点OD的感觉了~
哈哈
上传的附件:
2015-3-3 16:52
0
雪    币: 341
活跃值: (138)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
3
好厉害膜拜
2015-3-3 18:24
0
雪    币: 100
活跃值: (323)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
膜拜。。
2015-3-3 18:31
0
雪    币: 135
活跃值: (63)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
mark
2015-3-3 18:39
0
雪    币: 155
活跃值: (132)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我都不好意思回复了,注册那么早的,技术现在要用想起来要学习了,希望能跟上LZ
2015-3-3 19:02
0
雪    币: 80
活跃值: (72)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
可以看看tcc。
2015-3-3 20:23
0
雪    币: 74
活跃值: (748)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
高端,膜拜
2015-3-3 20:27
0
雪    币: 435
活跃值: (1277)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
9
当时不能用tcc的,对libc的依赖太深了,无法移植
还是lcc好,依赖少,不过还是没成功移植就是了
2015-3-3 22:03
0
雪    币: 85
活跃值: (51)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
强悍的讲话~
2015-3-4 00:08
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
挺好,有机会合作。
2015-3-5 00:14
0
雪    币: 108
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
谢谢,正在弄这个
2015-3-7 10:05
0
游客
登录 | 注册 方可回帖
返回
//