WebAssembly
重要通知
。
基本概况
WebAssembly(缩写为 Wasm)是一种安全、可移植、低级的代码格式 ,专为高效执行和紧凑表示而设计。WebAssembly 的核心是一个虚拟指令集架构(virtual ISA)。它的主要目标是在 Web 上启用高性能应用程序,但它不做任何特定于 Web 的假设或提供特定于 Web 的功能,因此它也可以在其他环境中使用。WebAssembly/wasm WebAssembly 或者 wasm,WebAssembly生成的是WASM格式的二进制字节码,C/C++代码转成 javascript引擎可以运行的代码。
- 官网:https://webassembly.org/
- WebAssembly 规范:https://webassembly.github.io/spec/core/
- 中文文档:https://www.wasm.com.cn/
- MDN:https://developer.mozilla.org/zh-CN/docs/WebAssembly
- Emscripten(WebAssembly 编译器工具链):https://emscripten.org/
- https://zhuanlan.zhihu.com/p/258560278?utm_source=wechat_timeline
- JavaScript是如何工作的:与WebAssembly比较及其使用场景 https://blog.fundebug.com/2018/12/24/how-does-webassembly-works/
WebAssembly部署示例
安装配置Emscripten
从C/C++编译为WebAssembly
加载运行WebAssembly代码
WebAssembly基本语法
WebAssembly
WebAssembly API对象
- WebAssembly.Module
- WebAssembly.Instance
- WebAssembly.Memory
- WebAssembly.Table
- WebAssembly.CompileError
- WebAssembly.LinkError
- WebAssembly.RuntimeError
Emscripten
Emscripten 是一个完整的 WebAssembly 编译器工具链,使用 LLVM,特别关注速度、大小和 Web 平台。Emscripten 的底层使用的是 LLVM 编译器。通过一系列的处理将C/C++编译成asm.js。
编译 C/C++ 为 WebAssembly
asm.js
asm.js, 极度优化的、底层的javascript子集。
实现原理
- 当浏览器的JavaScript 引擎发现运行的是 asm.js时,就会跳过语法分析这一步,将其转成汇编语言执行。
- 浏览器通过 GPU 调用 WebGL 执行 asm.js,使其运行得更快。
- Emscripten是asm.js编译器。