编程语言虚拟机(一)

最近写了一个玩具型的Fantom语言VM,也就是解释器。类似于JVM运行Java bytecode。

实现一个VM需要完成以下任务:

  • 字节码读取
  • 函数调用栈
  • 操作数栈和指令操作实现
  • 参数传递和返回值
  • 默认参数和参数缩减
  • 本地方法调用
  • 垃圾收集
  • 基本类型装箱和拆箱
  • 运行时类型信息和对象字段访问
  • 方法查找缓存和对象缓存
  • 异常处理

作为了一个玩具实现,很简单,没有复杂的地方。如果要再进一步成为可实际使用的VM,有三个难的地方:

  • 对垃圾收集的优化。目前我只做了一个简单的标记清除垃圾回收。
  • JIT编译,目前我没有任何的思路来做,也许可以通过LLVM来实现。
  • 实现所有的系统标准库。这个工作量比较大,而且写起来也有些乏味。

转载于:https://my.oschina.net/chunquedong/blog/514967

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值