回 帖 发 新 帖 刷新版面

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

藝 品 編 程 公 館:[color=0000FF]http://ydgwbh.com.h001.idcren.com/ [/color]

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.115.com/file 中根据提取码下载。

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

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

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

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

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

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

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

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

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

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

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

回复列表 (共10个回复)

沙发

自顶

板凳


盲目学习中!……

3 楼

有没有朋友看过整个教程了?发表点意见

4 楼

标记一下先,等开学了有空好好看下您的源码。
  如果您以后重写编译器时或要扩展c语言,参考下我的拙见。在兼容c语言的同时,考虑下面几点:1.强类型。不允许隐式类型转换,有必要必须强制转换。2.类型推断。变量和函数在使用时不需要先声明,编译器能推断出变量的类型。对于函数只要在源代码里有定义就行。3.支持缩进的语法糖。当然同时能支持花括号。4.在不会出现歧义时,可以省略函数调用的圆括号和分隔参数的逗号。如add(a,b) 可以写成add a b。5.支持中缀函数的写法,如add a b可以写成a `add` b。反引号是为了区分普通函数。  其实上面几点全是Haskell语法的一部分。Haskell的语法非常漂亮,如果把一些语法结合进c语言,这应该是不错的选择。

5 楼

我这个就是一个完整的C89语法的C语言编译器,您所提的几点意见都已经实现。

6 楼

我提的那几点都不是c语言的语法,还没开学,只能用手机上网,看不了您的代码。

7 楼

恩,你提的意见很好

但说实话,虽然编译器大体原理就是书上说的那样,可我实现的和书上所描述的大相径庭,完全是自己搞出的一套东东

很惭愧的说,其实规范的正则表达式我都没完全实现,但我想到办法去解决这些了这些问题。

我脑子中框架有了,以后我会逐步完善起来,争取能做出一套新颖的汉语编程语言...

8 楼

嗯真的不错啊,正在学习C语言中

9 楼

今天做了个改进,本来研究编译器就是为了以后能设计新颖的汉语编程

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

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

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

感兴趣的朋友敬请期待!

10 楼

官网失效了,楼主!!有没有官方群, 我对MYC很感兴趣。

我来回复

您尚未登录,请登录后再回复。点此登录或注册