• IV0id
    2020-09-09
    我觉得应该是20啊,命令执行每一行命令之后stack状态如图 i32.const 1 | 1 i32.const 1 | 1,1 i32.eq | 1 i32.const 10 | 1,10 i32.const 10 | 1,10,10 i32.add | 1,20 i32.mul | 20

    作者回复: 很棒!

    共 4 条评论
    23
  • 一步
    2020-09-10
    wasm 就是一种可以在虚拟机上执行的字节码。 对于 JS 引擎 v8 , SpiderMonkey, JavascriptCore 是不是都支持直接执行 wasm 字节码了?

    作者回复: 是的哈,从目前的实现来看,为了保证 JS 与 Wasm 的互操作性,浏览器基本都是在现有的 JS 引擎基础之上来增加对 Wasm 字节码的支持的。而 Chrome,Firefox 以及 Safari 也都已经支持 Wasm 的 MVP 标准了。

    共 2 条评论
    6
  • 军秋
    2020-09-23
    和汇编的区别是wasm最终是字节码,汇编的最终是机器码。字节码最后会被浏览器转成机器码吗?

    作者回复: 会的,但某些情况下也可能会直接解释执行这些字节码。这个依照具体 JIT 引擎的设计实现来看。

    
    3
  • 大土豆
    2020-09-09
    说个最能让大家快速理解的说法,就是Java虚拟机,执行的是字节码,不管是什么jvm语言,Java,kotlin等,最后生成字节码就行,字节码就是WASM

    作者回复: 最后一句可以反过来哈,Wasm 是一种字节码格式。

    
    3
  • pedro
    2020-09-09
    最后的结果应该是 110,错了请指正。 这节可以说完全道出了 webassembly 的本质,它并不是一种新的编程语言,因为你只需要编写其他的语言,例如 c++ 和 rust 从而生成对应的字节码。 对于栈模型的语言太多了,例如 Java,寄存器模型有 lua,请问一下老师累加器模型的编程语言有哪些了?

    作者回复: 答案是 20,具体执行过程可以参考另一位同学画的栈图哈。累加器机模型实际上是一种十分古老的计算机模型,放在这里讲其实是考虑到内容的完整性。实际上,据我所知没有使用累加器机模型设计的虚拟机字节码(语言)。而比如像 “MOS 6502” 这类早期的硬件微处理器,实际上是采用了累加器模型这种结构来进行设计的。

    共 2 条评论
    2
  • 风
    2022-01-10
    请教老师,如果想实现wasm的目的,能否直接使用jvm,而不是另外开发一套V-ISA.

    作者回复: 实际上,从技术角度来看,Java 字节码和 Wasm 都可以被归类为同一种技术实现。即平台 Independency(写中文被判断成敏感词,无语),并且需要由宿主(虚拟机)执行。但由于两者发展的目的,以及所处时代不同,所以与它们配套的工具和基础设施本质上也有一些区别。比如 Wasm 最开始出现在 Web 上,并且在 Web 有一定的应用范畴。但 Java 由于之前 Java Applet 的淘汰,导致 Oracle 也没有在 Web 端恢复 Java 生态的打算。更进一步来看,Wasm 也支持更多源语言。并且 Wasm 字节码和 Java 字节码在设计上也有着很大区别。但最重要的一点是,当两个技术的形态比较类似时,大多数情况下,哪个会被应用的更加广泛实际上完全取决于社区整体的状态,而非技术本身。

    
    1
  • Geek_175b82
    2020-10-17
    这是不是类似于Java 的.class字节码文件?

    作者回复: 对的,可以这样类比。

    
    1
  • 严敏
    2023-03-11 来自浙江
    请问WASM中对在浏览器中对socker支持的如何

    作者回复: WASM 作为一套新的字节码,本身并不提供对 socket 这类宿主功能的支持。相对的,这部分功能由 WebAssembly System Interface 来抽象和定义,可以看看这里:https://github.com/WebAssembly/wasi-sockets

    
    
  • only
    2022-05-04
    有一点不明白,是浏览器集成了wasm的虚拟机还是操作系统集成了wasm虚拟机?

    作者回复: Wasm 本质上是一套抽象的字节码格式,它不对应于任何物理体系,因此如何去执行这些字节码,标准中并没有规定。所以你能够看到现在有很多各种各样的独立虚拟机引擎(比如 WAVM、wasmtime 等)都可以去执行这些字节码。当然,浏览器在 V8 引擎里也构建了一套可以执行 Wasm 的虚拟机,使得它们可以与 JS 环境交互,来完成 Web 应用的相关功能需求。

    
    
  • sheeeeep
    2020-09-09
    我的答案 1,1 1 1,10,10 1,110 110

    作者回复: 可以再想想哦。

    
    