注册 登录
编程论坛 C图形专区

[原创]My-C编译器&虚拟机 - 完全手动编写的C语言编译器

jig 发布于 2011-02-20 03:09, 4260 次点击
藝 品 編 程 公 館:http://


My-C编译器不是一款能编译出在X86硬件体系运作程序的编译
  
器,它的目标平台是一款馆主编写的虚拟机;而目标代码也是经过
馆主加强的一套工业汇编指令。但这不能妨碍My-C成为一款非常好
玩的C语言编译器。
 
    它实现了95%以上的C89语法,并添加改造了有趣的内嵌汇编语言;它不
正统,没有借助任何第三方库纯手工编码,如果得到源码你可以随意自己定
制;它门槛浅,不需要你理解很高深的编译原理和正则表达式,因为馆主就
不理解。它是一次尝试,如果你对编译器感兴趣又觉专业知识无从下手,可
以玩玩它感受一下,待摸到点门道再去研习专业的知识。
    艺品公馆将做为My-C编译器的官方发布和维护网站,馆主会陆续的贴出
My-C编译器的部分源码和设计说明文档,有兴趣的朋友敬请关注...
------------------------------------------------------------------------
此虚拟机是专为调试My-C编译器而逐步完善起来的。可以说为
  
了方便研究编译器原理馆主设计了一款独特硬件 — My-C虚拟机。
    My-C虚拟机模拟了一款32位但只有8个寄存器的CPU;拥有32
Bit色深,最大分辨率为 1024X768 的显示屏;微妙级的时钟;鼠标;还有  
一个拥有4K缓存的键盘;支持外部配置显示器分辨率和内存,堆栈大小;可
以实时查看CPU和内存状态;甚至以多种方式支持CPU单步运作方便调试。
    所有这些都使My-C虚拟机配合着My-C编译器显得很有趣,相信会给很多
朋友带来欣喜。同时由于以上原因,如果朋友你想很好的玩玩My-C编译  
器那就必须先花点时间熟悉和理解一下My-C虚拟机。
    艺品公馆将做为My-C虚拟机的官方发布和维护网站,馆主会陆续的贴出
My-C虚拟机的全部源码和设计文档,还等什么?赶快进来看看吧!
-----------------------------------------------------------------------

需提取码的在 http://u. 中根据提取码下载。

    My-C编译器&虚拟机下载:提取码 - f56f9c8a13
    My-C编译器&My-C虚拟机实例下载:     
       虚拟机介绍:http://v. (比较模糊)
       提取码:f5b335c0c3         (1680X1050 高清)

       编译器介绍:http://v. (比较模糊)
       提取码:f581c4009c         (1680X1050 高清)

       递归实例:  http://v. (比较模糊)
       提取码:f5a779be97         (1680X1050 高清)

       画点&初步画图:http://v. (比较模糊)
       提取码:f5a255cdc          (1680X1050 高清)

       嵌套汇编:  http://v. (比较模糊)
       提取码:f57ed5fd41         (1680X1050 高清)

       时钟:      http://v. (比较模糊)
       提取码:f529c1fdea         (1680X1050 高清)

       键盘:      http://v. (比较模糊)
       提取码:f5a295bf15         (1680X1050 高清)

       鼠标:      http://v. (比较模糊)
       提取码:f540ce25ac         (1680X1050 高清)

       俄罗斯方块:http://v. (比较模糊)
       提取码:f545b3253d         (1680X1050 高清)

       五子棋:    http://v. (比较模糊)
       提取码:f590037a5          (1680X1050 高清)

       以上视频中的对应源码:提取码 - f56fbe662e

[ 本帖最后由 jig 于 2011-2-20 03:14 编辑 ]
24 回复
#2
gongyaping2011-02-20 06:36
好,试试看吧。
#3
flyue2011-02-20 08:46
看了你的bug list,明白你开发这个编译器的艰辛

强烈推荐你使用lex&yacc,这不是第三方库,而是编译器的编译器~
#4
BlueGuy2011-02-20 08:53
jig 版主, 我觉得你的编译器的名字 起的不好~~
#5
marschant2011-02-20 11:29
哇塞,这个还不懂,收藏一下。
#6
jig2011-02-20 14:43
回复 3楼 flyue
我明白,但我做这个的原因主要是为了实现自己以前的梦想

完全自己手工编写。我也知道用YACC要简单的多,可以将精力放在语法树到汇编的翻译和优化上

但那不是我想做的事,我就像整个,词法扫描,语法书建立,翻译过程全部自己来...
#7
flyue2011-02-20 17:26
如果是我的话,我会自己纯手工打造一个 lex&yacc

然后用自己的 l&y 构造一个编译器

想怎么改语法都方便
#8
jig2011-02-20 18:54
以下是引用flyue在2011-2-20 17:26:43的发言:

如果是我的话,我会自己纯手工打造一个 lex&yacc

然后用自己的 l&y 构造一个编译器

想怎么改语法都方便
哦,我明白了

仔细想想,其实我这个C语言编译器,的确是已经形成了自己独立的L&Y了

后续我贴出代码,你看看就知道了。只是还不完善。

我这版的C编译器也是为后续想自己发明汉语编程语言做一个学习尝试。一步一步来。。。
#9
jig2011-02-22 22:51
自顶,看来还是要贴出才有吸引力
#10
flyue2011-02-22 23:00
那是,酒再香,也怕巷子深啊
#11
pangding2011-02-24 16:32
好东西,收藏了。
#12
a3436374122011-02-25 21:33
留爪,方便找
#13
jig2011-02-26 01:37
近期我会首先将MY-C虚拟机的源码贴出,目前还在整理中,有兴趣的朋友可以关注一下。
#14
jig2011-03-01 21:16
今天做了个改进,本来研究编译器就是为了以后能设计新颖的汉语编程

当初做这个MY-C编译器的时候,其实无意中就是按LEX&YACC做的,就是说目前实现这个C编译器已经有自己的LEX&YACC,只是还不完整。

虽然离设计独立新颖的汉语语言还很远,但我暂时稍作更改,就让目前的MY-C编译器支持中文了。呵呵,太开心了

等整理1,2天,我将支持汉语版的MY-C编译器发布出来。那这样,MY-C编译器就是支持英文,汉语双语版的

感兴趣的朋友敬请期待!
#15
2011-03-02 23:17
前排支持  

不知道用什么语言支持你


就是顶吧   


以前我也想看编译原理  但是看不懂。  希望看完你的编译器  能让我提高一步
#16
vfdff2011-03-03 00:39
回复 13楼 jig
代码什么时候公布??
#17
jig2011-03-03 20:37
近期吧,陆续会发布出来。

首先会发布虚拟机的代码。
#18
yangfanconan2011-03-06 22:53
顶了,非常给力的帖子。
#19
st664222011-03-07 11:18
给力~

渴望已久的汉语语言啊
#20
vfdff2011-03-09 00:56
掉人胃口
#21
jig2011-03-10 00:32
最迟这个周末一定发支持中文的MY-C编译器

争取也把MY-C虚拟机的源码整理好,写好文档贴出
#22
jig2011-03-15 22:24
意思意思,论坛这两天总登不上,随后发出汉语版编译器
#23
mysteryice2011-03-22 09:44
学习。
#24
vfdff2011-04-09 00:23
2011-3-10 00:32:56  到现在又好几周过去了!
#25
hkcmd2013-08-27 23:26
编译器本来是基础课程,想不到群主搞得这么神秘,
还有既然敢叫c编译器,那么c99是必须的。
1