WebAssembly

重要通知

基本概况

WebAssembly(缩写为 Wasm)是一种安全、可移植、低级的代码格式 ,专为高效执行和紧凑表示而设计。WebAssembly 的核心是一个虚拟指令集架构(virtual ISA)。它的主要目标是在 Web 上启用高性能应用程序,但它不做任何特定于 Web 的假设或提供特定于 Web 的功能,因此它也可以在其他环境中使用。WebAssembly/wasm WebAssembly 或者 wasm,WebAssembly生成的是WASM格式的二进制字节码,C/C++代码转成 javascript引擎可以运行的代码。

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编译器。

Last Updated:
Contributors: 709992523