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) 阅读(2776)
评论(5) 编辑 收藏 引用 所属分类:
JIT