A Lua bytecode compiler written in Lua itself for didactic purposes or for new language implementations - franko/luajit-lang-toolkit
A Lua bytecode compiler written in Lua itself for didactic purposes or for new language implementations - rcbing/luajit-lang-toolkit
1). 纯脚本解析执行(不选用任何Compiler) 2). To Lua字节码(LuaC, lua-to-lua-bytecode compiler) 3). To Java字节码(LuaJC, lua-to-java-bytecode compiler) 其中LuaC是默认的选用Compiler. 依据官方的介绍: 不使用LuaC的方法是, 则不调用如何行: org.luaj.vm2.compiler.LuaC.install(globals); 而使用...
当某个函数/循环足够热了之后,JIT compiler 就开始工作了。 第一步录制,录制的核心流程是:一边解释执行,一边生成 IR code。 具体过程是: 通过修改 DISPATCH,添加字节码解释执行的 hook 在hook 中,为当前执行的 byte code,生成对应的 IR code,也会有判断来 完成/提前终止 录制 继续解释执行 byte code 从开始录...
将虚拟机指令Dump成二进制文件,以Bytecode的形式保存 在将来某个时刻,运行Lua虚拟机,并加载Dump后的文件,直接通过Dump数据,将指令结构还原回来,保存在虚拟机状态实例中 运行虚拟机,对虚拟机状态实例中的Opcodes进行执行 这两种方式,前者从虚拟机创建到加载脚本,再到运行一气呵成。后者需要预先将Lua脚本编译成Bytecode...
JvmCompiler的编译方法是我们生成字节的地方,以后我们将这些字节保存到类文件中。 我们如何产生这些字节? 在ASM的帮助下,该库是生成Bytecode的库。 现在,我们可以自己生成bytes数组,但要点是,它将涉及到一些无聊的任务,例如生成类池结构。 ASM为我们做到了。 我们仍然需要对JVM的结构有一些了解,但是我们可以生存下来而...
+ common/ #vm和compiler共同使用的结构、接口均放置在这里 + compiler/ #编译器相关的部分放置在这里 + test/ #测试用例全部放置在这里 + vm/ #虚拟机相关的部分放置在这里 main.c makefile 我们有理由相信,目录组织也是架构的一部分,上面附上了目录说明,能够清晰说明他们的分类和作用。我想构建的逻辑层次图如...
+ compiler/ #编译器相关的部分放置在这里 + test/ #测试用例全部放置在这里 + vm/ #虚拟机相关的部分放置在这里 main.c makefile 我们有理由相信,目录组织也是架构的一部分,上面附上了目录说明,能够清晰说明他们的分类和作用。我想构建的逻辑层次图如下所示: ...
1). 纯脚本解析执行(不选用任何Compiler) 2). To Lua字节码(LuaC, lua-to-lua-bytecode compiler) 3). To Java字节码(LuaJC, lua-to-java-bytecode compiler) 其中LuaC是默认的选用Compiler. 依据官方的介绍: 不使用LuaC的方法是, 则不调用如何行: org.luaj.vm2.compiler.LuaC.install(globals); 而使...
将虚拟机指令Dump成二进制文件,以Bytecode的形式保存 在将来某个时刻,运行Lua虚拟机,并加载Dump后的文件,直接通过Dump数据,将指令结构还原回来,保存在虚拟机状态实例中 运行虚拟机,对虚拟机状态实例中的Opcodes进行执行 这两种方式,前者从虚拟机创建到加载脚本,再到运行一气呵成。后者需要预先将Lua脚本编译成Bytecode...