前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WebAssembly 技术汇总

WebAssembly 技术汇总

作者头像
我不是码神
发布2022-07-28 14:25:43
9940
发布2022-07-28 14:25:43
举报
文章被收录于专栏:流媒体技术流媒体技术

官方网站

https://webassembly.org/

要点

  1. 文件格式(wasm,wast/wat,asm.js)
  2. 编译(emscripten)
  3. 编程语言(C/C++、Rust、Golang、Javascript、Typescript)
  4. 执行环境(browser、node.js、kernel)

Mozilla 开发的在线IDE,支持Rust、C、Wat开发WebAssembly

WebAssembly Studio

在线编译C到wasm

WasmFiddle

wasm格式

wasm是WebAssembly的二进制字节码,后面将直接用wasm来指代WebAssembly。 要获得wasm格式,可以通过

1. 使用emscripten编译命令加上参数-s WASM=1来得到

代码语言:javascript
复制
emcc -o test.js -s WASM=1 test.c

我们将获得一个test.wasm格式的文件和一个test.js文件。 其中test.js中有大量对wasm的封装,方便操控wasm的内存。

2. 使用工具将wast格式转换成wasm格式

wat2wasm demo

3. 其他语言编译得到

wast/wat格式

wast和wat的区别

WAST vs WAT · webassemblyjs

wast/wat格式是wasm的文本类型格式,使用的是lisp语言的S表达式。 可以 使用工具将wasm转换成wast/wat格式

https://webassembly.github.io/wabt/demo/wasm2wat/

Asm.js

emscripten 不加参数-s WASM=1即可编译成asm.js的代码,asm.js可以兼容大多数浏览器。

Golang编译成wasm

代码语言:javascript
复制
GOARCH=wasm GOOS=js go build -o test.wasm main.go

JavaScript(walt)编译成wasm

walt项目:

https://github.com/ballercat/walt

该项目可以编写javascript代码来生成wasm。 可以通过webpack打包(walt-loader)、walt-cli命令行编译等方式。

代码语言:javascript
复制
npm i walt-cli
walt -- test.walt -o test.wasm

TypeScript (AssemblyScript)

https://assemblyscript.org

C#编译成wasm

migueldeicaza/mono-wasmaspnet/Blazor

eos中编译成wast

代码语言:javascript
复制
eosiocpp -o test.wast test.cpp

浏览器中调用

代码语言:javascript
复制
fetch('module.wasm').then(response =>
  response.arrayBuffer()
).then(bytes =>
  WebAssembly.instantiate(bytes, importObject)
).then(results => {
  // Do something with the compiled results!
});

Node.js中使用

代码语言:javascript
复制
const fs = require('fs')
const wasmFile = fs.readFileSync('test.wasm')
WebAssembly.instantiate(fs).then(module=>{
  module.exports.xxx()
})

使用Linux内核模式调用wasm

rianhunter/wasmjit

Mac中直接执行wasm

在 Mac 系统下通过 brew install binaryen 安装成功后,通过 wasm-shell f.wasm 文件即可直接运行

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 官方网站
  • 要点
  • wasm格式
  • wast/wat格式
  • Asm.js
  • Golang编译成wasm
  • JavaScript(walt)编译成wasm
  • TypeScript (AssemblyScript)
  • C#编译成wasm
  • eos中编译成wast
  • 浏览器中调用
  • Node.js中使用
  • 使用Linux内核模式调用wasm
  • Mac中直接执行wasm
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档