随笔-341  评论-2670  文章-0  trackbacks-0
说明:CMinus是一个读入修改过语法的C源程序,然后编译成x86指令集写入内存,最后用__stdcall调用约定跟C++互相交流的脚本引擎。
目标:CMinus的定位是中间语言,用于将其他语言编译到CMinus上,享受本地指令带来的好处。
进度:完成所有功能,但是由于指令集生成的算法不好,打算修改。
下载:见这里

作者陈梓瀚保留对代码的所有权利。

结构:
    <Demo>
        <CMinusConsole>
            <CMinusConsole>工程文件
            <Program>脚本文件
    <Library>
        <Data>数据处理
            <Data>容器
            <Grammar2>语法分析器和正则表达式
        <Script>
            <JIT>
                <Assembly>X86二进制生成
                <Intermediate>中间指令
                <CMinus>CMinus编译器

<庆祝SOS团归来>
posted on 2009-05-22 16:32 陈梓瀚(vczh) 阅读(8462) 评论(24)  编辑 收藏 引用 所属分类: JIT

评论:
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-05-22 17:06 | kuafoo
占个沙发看看  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-05-22 22:39 | 空明流转
niubi , wo deng bai jiaozhu  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-05-23 09:27 | Gohan
很强大,感谢分享~  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-05-23 10:54 | 陈梓瀚(vczh)
@空明流转
教主是swf不是我  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-05-23 16:53 | yindf
拜读啦~~  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-05-25 16:53 | 巫云
太猛了  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-06-09 00:48 | Lo.
建议实现 extern char* pszName; 这样导入数据的语法  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-06-09 00:59 | Lo.
还有#inclue的预处理~~  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-06-09 14:44 | 陈梓瀚(vczh)
@Lo.
extern变量可以考虑,include就不考虑了,因为这个脚本是不基于文件系统的。  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-06-09 18:02 | Lo.
恩 include无所谓 自己处理一下也容易  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-07-27 17:21 | zblc
CMinus在DevC++居然编译了10分钟- -  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-07-28 18:27 | 陈梓瀚(vczh)
@zblc
那是DevC++的问题,我在VC++才编译了30秒。  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-08-21 15:31 | 林林
请教陈兄:您的虚拟机引擎用的是真正的字节码,还是简单的用vector里放variant类型变量来实现?
我现在做的只是一个超级简单的堆栈机,而且堆栈是用vector里放variant变量来实现。感觉很土,并且速度慢!
以后想实现个真正的字节码的虚拟机,但是,随便想像了一下感觉很复杂,工作量很大!因为如果堆栈用字节码来实现的话,涉及到完全的二进制位操作。指令的数量也呈指数级增长。本来一个简单的push语句,可能就需要push_word,push_doubleword,pushbyte。
更要命的是所有的运算可能都需要自己根据二进制位来实现。特别是浮点指令。头大全边啊!  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-08-23 01:48 | 陈梓瀚(vczh)
@林林
你说的这个问题跟字节码没关系,你想想就明白了。  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-08-24 20:21 | ooseven
陈兄能不能在您的虚拟机上跑跑我的代码
i:=0;
result :=0;
while i<1000 do
begin
j := 0;
while j<1000 do
begin
k := 0;
while k<1000 do
begin
k := k+1;
result := result + 1;
end
j := j+1;
end
i:=i+1;
end
才区区10亿次运算,竟然在我的虚拟机上跑了846.75秒,太伤心了!  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-08-25 16:50 | 陈梓瀚(vczh)
@ooseven
我那是强类型的,没有可比性  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-08-25 19:34 | ooseven
@陈梓瀚(vczh)
经过了一个早上的优化后,现在的结果是329.032秒,虽然还是很慢,但是已经很开心了!
cpu e6600
内存 2g

经过测试,vc2008 debug下的运行时间是2秒
vc2008 release下的运行时间是0秒
天啊,太块了!
陈兄不削拿您的虚拟机跟我比,可以理解。但拿出来跟vc比比总不会辱没了您的身份吧:)
我说的是虚拟机,而不实您翻译成机器码后拿来比较哦   回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-08-25 19:36 | ooseven
不过我怀疑vc做了些可耻的优化。  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-08-28 22:18 | ooseven
经过了一个晚上的优化,现在的耗费的时间是152秒,哈,太开心了  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2009-08-31 15:30 | 林林
再优化,结果是128秒。  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2010-03-11 16:46 | elviss
本人也开发了一个脚本引擎,开放源代码。

Moniscript是本人定义的一个脚本,该脚本综合了C,PHP,Matlab的语言优点而独创的。
Moniscript目前是1.0版本,还在继续开发之中,并且源代码公开。
有兴趣的朋友可以使用一下Monscript脚本工具,里面自带了十多个源码。
使用以后觉得有兴趣的朋友请加入QQ群32550793,向我索取源代码,并希望提出意见建议。

Monscript脚本工具下载网址:http://www.moniscript.com/download/moniscript_v1.0.zip">http://www.moniscript.com/download/moniscript_v1.0.zip

论坛网址:http://www.moniscript.com

Moniscript特点:
1. 可以内嵌于Visual C++, Visual Basic, Delphi 等语言中动态解释调用。
2. 支持数据类型包括:int,double,bool,字符串,和数组,其中字符串类型无需内存管理
3. 函数参数个数可变
4. 函数可以返回多个值
5. 支持常用的IF-ELSE,FOR,WHILE,DO-WHILE等语句。
6. 可以与宿主程序进行交互。  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2013-05-25 23:24 | Scan
@林林
几个月前我的脚本还比ooseven的数据慢一倍;之后一直把lua作为比较对象,最近写的解释器跑1000^3的三层循环已经只要20秒,超过当年ooseven的成绩不少了~  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2014-02-16 17:54 | 求败
呵呵,支持哦!  回复  更多评论
  
# re: 【源码下载】JIT脚本引擎:CMinus 0.1版开放下载 2014-10-22 23:17 | 创业博客
这个引擎用起来很方便,我用到了我的业务里  回复  更多评论
  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理