最近在写 WebAssembly 虚拟机 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Mohanson
V2EX    程序员

最近在写 WebAssembly 虚拟机

  •  
  •   Mohanson 2018-12-25 23:50:58 +08:00 9401 次点击
    这是一个创建于 2557 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上周开了个新坑, 使用 Pure Python 实现了 WebAssembly 虚拟机, 已经(部分)能跑用 c/c++ 编译出来的 WebAssembly 代码了阿鲁.

    希望能在这周写完. 测试也是个头疼的活.

    目测完成度 55% 左右.

    项目链接: https://github.com/mohanson/py-wasmi

    等这个项目做完, 又能水文章了好开心阿鲁.

    第 1 条附言    2018-12-26 18:14:32 +08:00
    已经写完大部分指令集, 正在写条件控制, 完成率 70%
    第 2 条附言    2018-12-30 19:05:08 +08:00
    老铁们, 终于写完了(自认为), 现在还未加完整测试, 元旦后再加, 这几天先玩会我的劳拉小姐姐.

    太 OJB 累了, 肝了 5 天, 休息休息一下.
    第 3 条附言    2019-01-02 21:25:26 +08:00
    MVP 版本 release 了: t/523261
    23 条回复    2018-12-30 19:08:20 +08:00
    lxml
        1
    lxml  
       2018-12-26 02:31:37 +08:00 via Android
    感觉用 python 写有点坑啊,现在这种底层的都流行用 rust 来搞
    yech1990
        2
    yech1990  
       2018-12-26 02:45:31 +08:00 via Android
    一屏幕的 if 看得脑瓜疼
    Mohanson
        3
    Mohanson  
    OP
       2018-12-26 08:25:12 +08:00 via Android
    @yec 之后应该会把 if 里面的逻辑都扔数组里面,现在代码比较乱
    Mohanson
        4
    Mohanson  
    OP
       2018-12-26 08:38:02 +08:00 via Android   1
    @lxml 最近刚用 rust 写完了 evm 虚拟机,
    Mohanson
        5
    Mohanson  
    OP
       2018-12-26 08:40:07 +08:00 via Android
    @lxml wasm 比较复杂,先用 python 撸起来 笑脸 evm 在这里 https://github.com/cryptape/cita-vm
    atonku
        6
    atonku  
       2018-12-26 08:44:44 +08:00   2
    虽然不知道你们在说些什么,但是微笑就对了
    byteli
        7
    byteli  
       2018-12-26 09:17:58 +08:00 via Android
    mark,有时间看看怎么测试的
    dabaibai
        8
    dabaibai  
       2018-12-26 10:38:20 +08:00
    python 写的? 用 C 写更好吧
    Mohanson
        9
    Mohanson  
    OP
       2018-12-26 11:20:23 +08:00
    @dabaibai 用 py 是想最快速地完成 wasm 虚拟机, 快速试错, 上来就 c 太麻烦了. 性能可以以后再考虑.
    hanxiV2EX
        10
    hanxiV2EX  
       2018-12-26 11:22:24 +08:00 via Android
    都好牛逼
    tengshe789
        11
    tengshe789  
       2018-12-26 11:25:21 +08:00 via Android
    浓浓的神乐画面感
    swchzq
        12
    swchzq  
       2018-12-26 11:30:29 +08:00   1
    666, 正想找个好修改的 wasm 虚拟机来做 wasm 动态逆向分析
    Mohanson
        13
    Mohanson  
    OP
       2018-12-26 11:55:09 +08:00
    @swchzq 666 加个好友, 有问题可以交流下 cXE6NTI2MDk5ODEy
    Mohanson
        14
    Mohanson  
    OP
       2018-12-26 11:59:59 +08:00
    @swchzq go-interpreter/wagon, paritytech/wasmi 都不错
    vicvinc
        15
    vicvinc  
       2018-12-26 12:41:25 +08:00
    这两天在想要是在 webkit 上直接支持 wasm 会咋样
    vicvinc
        16
    vicvinc  
       2018-12-26 12:59:47 +08:00
    好像已经支持了(♂

    ```We ’ re pleased to announce that WebKit has a full WebAssembly implementation.```

    https://webkit.org/blog/7691/webassembly/
    qiushijie
        17
    qiushijie  
       2018-12-26 13:43:22 +08:00 via Android
    我想写一个 c 版本的
    janxin
        18
    janxin  
       2018-12-26 14:16:30 +08:00
    Rust 起码有两个的 wasm 虚拟机了吧...python 的似乎也有好几个了...

    不过 wasm 现在使用起来还是有很多限制,起码在我们的使用场景里面暂时还不能用

    什么时候能原生操作 dom 了再说吧
    Mohanson
        19
    Mohanson  
    OP
       2018-12-26 14:26:45 +08:00   1
    @janxin Pure Python 的目前还没有. 写轮子可以边学边开心, 不自己动手就只能永远停留在 "我觉得这个技术 xxxx" 的范围.
    Mohanson
        20
    Mohanson  
    OP
       2018-12-26 14:28:48 +08:00
    @qiushijie 搞起搞起
    janxin
        21
    janxin  
       2018-12-26 14:31:01 +08:00
    @Mohanson https://github.com/kanaka/warpy 这个应该算吧?

    有时间自然是很不错的,不过我这边确实这个优先级很低罢了
    janxin
        22
    janxin  
       2018-12-26 14:31:59 +08:00
    仔细想象我说的不是虚拟机,嗯。。。
    Mohanson
        23
    Mohanson  
    OP
       2018-12-30 19:08:20 +08:00
    肝完啦老铁们~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5598 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 02:18 PVG 10:18 LAX 18:18 JFK 21:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86