JS实现的JVM源代码分析

JS实现的JVM源代码分析
今早看到iteye上的消息(详见 http://www.iteye.com/news/23443),说是用JS实现了jvm,于是乎我就去看了下其实现的源代码,现在把我看到的分享给大家。

从https://github.com/nurv/BicaVM下载源代码,源代码中
lib:使用的外部的库
runtime:java核心运行时(.class)
src: js 源代码
webserver:python写的mini web server

1、src中的代码的基本信息:
preload.js : 工具函数,方便加载别的js代码
long.js js实现的long数据结构
attributes.js 对应.class文件的属性,用于处理符号表
auxiliarJNI.js java string数据转成js格式
class.js 加载解析.class文件(基于http),建立vm内部的数据结构
constantPool.js 符号表数据结构
cpu.js 模拟jvm
infos.js public? private? static?等属性信息
javaNativeInterface.js 实现了一些原来在java runtime中的函数
linearDatastream.js 类似于C++的iostream的对IO的封装
main.js 入口
nativeArray.js js实现的array
intrp.def 字节码解释器,可以认为是此jvm的汇编器

2、入口:main() (main.js中)
3、主流程:run(cpu.js) 依次加载验证 java runtime核心运行时(由java代码来提供),初始化主类,执行主函数
4、方法调用的解析过程(纯解释型的vm)invoke(infos.js)
5、操作栈的处理 interpret (cpu.js)
6、字节码的解释执行 intrp.def

概述:实现了一个demo,可以解释简单的字节码,目前做的工作还很少,离真正可用还有相当的距离。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值