JS实现的JVM源代码分析

JS实现的JVM源代码分析

从https://github.com/nurv/BicaVM下载源代码,源代码中

lib:使用的外部的库

runtime:java核心运行时(.class)

src:js源代码

webserver:python写的miniwebserver

1、src中的代码的基本信息:

preload.js:工具函数,方便加载别的js代码

long.jsjs实现的long数据结构

attributes.js对应.class文件的属性,用于处理符号表

auxiliarJNI.jsjavastring数据转成js格式

class.js加载解析.class文件(基于http),建立vm内部的数据结构

constantPool.js符号表数据结构

cpu.js模拟jvm

infos.jspublic?private?static?等属性信息

javaNativeInterface.js实现了一些原来在javaruntime中的函数

linearDatastream.js类似于C++的iostream的对IO的封装

main.js入口

nativeArray.jsjs实现的array

intrp.def字节码解释器,可以认为是此jvm的汇编器

2、入口:main()(main.js中)

3、主流程:run(cpu.js)依次加载验证javaruntime核心运行时(由java代码来提供),初始化主类,执行主函数

4、方法调用的解析过程(纯解释型的vm)invoke(infos.js)

5、操作栈的处理interpret(cpu.js)

6、字节码的解释执行intrp.def

概述:实现了一个demo,可以解释简单的字节码,目前做的工作还很少,离真正可用还有相当的距离。

相关推荐