随笔-341  评论-2670  文章-0  trackbacks-0
    JIT是just in time,一门包含了JIT的脚本引擎就是将脚本编译成机器码,让CPU而不是自己写的虚拟机运行。这样做有助于提供高速的运行环境、以及与C++更加方便的融合。这次计划所需要的任务如下:

    汇编器。汇编器指的是可以做如下转变的一个工具:机器码 <--> 汇编程序的数据结构 <--> 汇编程序文本表示。有了三个可以互相转换的结构之后,编译器可以在更高层的层面上开发,调试也变得更加容易。

    中间指令。由于x86的指令集过于复杂,并且以后可能会发生重大变更,因此有必要开发一个容易使用的、功能简洁但是强大的另一个指令集,提供中间指令到汇编的单向转换操作。这主要是用来解决x86指令互相之间操作不够统一、寄存器分配和更好的x86指令选择等问题,并且可以让以后的编译器更加容易开发。

    内存管理器。由于汇编是不处理内存申请释放等操作的,因此需要将内存管理器,连同垃圾收集器,一起封装成函数供汇编代码调用。这个内存管理器届时将使用C#和Java均验证过的多代收集方法。如果语言不直接操作指针的话,还能提供压缩操作。

    基本语言。基本语言拥有绝大多数的没有重复的必要的基础设施,并提供基本语言到中间指令的单向转换操作。

    脚本语言。当然基本语言如果足够强大的话也能变成一门脚本。这里指的脚本是类似DSL那样有特殊目的语言。编译器所需要的词法分析器可以大部分交给我开发的VL++2.0的Syngram负责,并且编译成基本语言。以后制作DSL将会变得非常简单。

    汇编器是体力活,因此我想了一个办法。Intel手册上的指令集的二进制码表还是写得相当有规律的,因此可以复制下来集中到一起(已完成),然后使用正则表达式进行第一步处理,将码表、语法和说明三部分分开成更加合理的格式,然后再用一个正则表达式进行处理,最后生成记载着翻译方法的C++代码。等这一部分完成之后,可能会给出相关的代码,并且解释x86在32位下的详细的指令格式。64位等购买新电脑并安装win7之后才开始,目前没有条件。
posted on 2009-02-13 21:18 陈梓瀚(vczh) 阅读(2766) 评论(5)  编辑 收藏 引用 所属分类: JIT

评论:
# re: 新计划出炉:含JIT的脚本引擎[未登录] 2009-02-14 02:59 | 无限
可以写一个虚拟机层面是brainfuck的脚本引擎么  回复  更多评论
  
# re: 新计划出炉:含JIT的脚本引擎 2009-02-14 04:59 | 陈梓瀚(vczh)
根据我对brainfuck的理解,应当是可以的。  回复  更多评论
  
# re: 新计划出炉:含JIT的脚本引擎[未登录] 2009-02-14 22:37 | 无限
@陈梓瀚(vczh)
那么你能不能动手做一个实例来看看呢
可以选个简单的脚本语言 比如lua来44  回复  更多评论
  
# re: 新计划出炉:含JIT的脚本引擎 2009-02-14 22:57 | 陈梓瀚(vczh)
@无限
等JIT做完了再说,说不定一高兴会把brainfuck编译到x86上跑。  回复  更多评论
  
# re: 新计划出炉:含JIT的脚本引擎 2009-02-15 17:55 | SOS
opcode?  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理