• 请不要在回答技术问题时复制粘贴 AI 生成的内容
guxingke
V2EX  ›  程序员

[直播贴][mini-jvm] 如何使用 Java 实现一个简单的 JVM.

  •  
  •   guxingke ·
    guxingke · Dec 17, 2019 · 2276 views
    This topic created in 2343 days ago, the information mentioned may be changed or developed.

    实现一个简单的 JVM 比我想象的还是要难一些的, 中途会碰到一些有意思的问题, 由于项目尚未结束, 没大块的时间来整理, 暂开贴, 一备个人日后回顾, 二则若有他人交流与此, 岂不善哉. 有兴趣不妨关注此贴, 必有更新.

    最终的目标的 mini-jvm 把 mini-jvm 跑起来. 目前离这个目标还很远.

    一些基础特性已简单实现.
    字节码执行引擎
    方法调用
    lambda

    项目地址: mini-jvm

    7 replies    2019-12-18 22:30:13 +08:00
    lavvrence
        1
    lavvrence  
       Dec 17, 2019
    这算是 Java 自举?
    guxingke
        2
    guxingke  
    OP
       Dec 17, 2019
    https://github.com/guxingke/mini-jvm/commit/d2a75a12308c42d22b19f89177ba8a4dfef6cef7
    今日更新. 主要是格式化了 debug 日志的输出 , 接口的递归初始化 , instanceof 指令实现.

    选项 verbose:class , 输出加载的 class

    ![1576584932.png]( https://raw.githubusercontent.com/guxingke/oss/master/blog/1576584932.png)

    选项 verbose:trace , 输出执行的字节码指令

    ![1576585316.png]( https://raw.githubusercontent.com/guxingke/oss/master/blog/1576585316.png)

    选项 verbose:debug, 输出执行每个字节码指令的栈帧信息.

    ![1576585426.png]( https://raw.githubusercontent.com/guxingke/oss/master/blog/1576585426.png)
    mortonnex
        3
    mortonnex  
       Dec 17, 2019   ❤️ 1
    楼主厉害了!
    guxingke
        4
    guxingke  
    OP
       Dec 17, 2019
    @jaylee4869 是的, 想这么干
    keelii
        5
    keelii  
       Dec 17, 2019
    所以直播呢?
    guxingke
        6
    guxingke  
    OP
       Dec 17, 2019 via Android
    @keelii 有更新了就播一点😃
    guxingke
        7
    guxingke  
    OP
       Dec 18, 2019
    实现了简单的 JDB (The Java Debugger)
    n/next -> 执行到下一个方法调用 (invoke 指令)
    s/step -> 单步执行指令
    ls/list -> 输出当前方法字节码
    run -> 启动
    env -> 输出当前栈帧的信息.

    https://raw.githubusercontent.com/guxingke/oss/master/blog/1576679149.png
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5582 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 98ms · UTC 01:23 · PVG 09:23 · LAX 18:23 · JFK 21:23
    ♥ Do have faith in what you're doing.