WebAssembly(wasm)是什么?

内容纲要

WebAssembly 就是运行在 Web 平台上的 Assembly。

Assembly 是指汇编代码,是直接操作 CPU 的指令代码,比如 x86 指令集上的汇编代码有指令集、寄存器、栈等等设计,CPU 根据汇编代码的指导进行运算。汇编代码相当于 CPU 执行的机器码能够转换成的人类适合读的一种语言。

一个典型的编译执行链路是 Cpp、Rust 等编译型语言编译成汇编指令,再转换成二进制机器码由 CPU 读取。

其他例如 Java、Python 等语言是使用运行在 x86 一类的通用硬件指令集的虚拟机,再执行自己的“汇编语言”(例如 Java Bytecode)。

Web 平台在浏览器上是类似于 Java、Python 的虚拟机环境,浏览器提供虚拟机环境执行一些 JavaScript 或者其他脚本语言。

WebAssembly 可以看做是 Web 平台的 x86 硬件通用指令集,作为一层中间语言,上层对接 Java、Python、Rust、Cpp,让这些语言都能编译成统一的格式,用于 Web 平台运行。

在目前情况下,WebAssembly 在使用中可以取代部分 JavaScript 代码执行更高效的 CPU 计算程序。

简化版层次图:

作者:熊伟伦

来源:https://www.zhihu.com/question/304577684/answer/544879503