日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WebAssembly 技术汇总

發(fā)布時間:2025/3/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebAssembly 技术汇总 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標準>>>

官方網(wǎng)站

https://webassembly.org/

要點

  • 文件格式(wasm,wast/wat,asm.js)
  • 編譯(emscripten)
  • 編程語言(C/C++、Rust、Golang、Javascript、Typescript)
  • 執(zhí)行環(huán)境(browser、node.js、kernel)
  • Mozilla 開發(fā)的在線IDE,支持Rust、C、Wat開發(fā)WebAssembly https://webassembly.studio/

    在線編譯C到wasm https://wasdk.github.io/WasmFiddle/

    wasm格式

    wasm是WebAssembly的二進制字節(jié)碼,后面將直接用wasm來指代WebAssembly。 要獲得wasm格式,可以通過

  • 使用emscripten編譯命令加上參數(shù)-s WASM=1來得到
  • emcc -o test.js -s WASM=1 test.c

    我們將獲得一個test.wasm格式的文件和一個test.js文件。 其中test.js中有大量對wasm的封裝,方便操控wasm的內(nèi)存。 2. 使用工具將wast格式轉(zhuǎn)換成wasm格式 https://webassembly.github.io/wabt/demo/wat2wasm/

  • 其他語言編譯得到
  • wast/wat格式

    wast和wat的區(qū)別 https://webassembly.js.org/docs/contrib-wat-vs-wast.html wast/wat格式是wasm的文本類型格式,使用的是lisp語言的S表達式。 可以 使用工具將wasm轉(zhuǎn)換成wast/wat格式 https://webassembly.github.io/wabt/demo/wasm2wat/

    Asm.js

    emscripten 不加參數(shù)-s WASM=1即可編譯成asm.js的代碼,asm.js可以兼容大多數(shù)瀏覽器。

    Golang編譯成wasm

    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命令行編譯等方式。

    npm i walt-cli walt -- test.walt -o test.wasm

    TypeScript (AssemblyScript)

    https://assemblyscript.org/

    C#編譯成wasm

    https://github.com/migueldeicaza/mono-wasm https://github.com/aspnet/Blazor

    eos中編譯成wast

    eosiocpp -o test.wast test.cpp

    瀏覽器中調(diào)用

    fetch('module.wasm').then(response =>response.arrayBuffer() ).then(bytes =>WebAssembly.instantiate(bytes, importObject) ).then(results => {// Do something with the compiled results! });

    Node.js中使用

    const fs = require('fs') const wasmFile = fs.readFileSync('test.wasm') WebAssembly.instantiate(fs).then(module=>{module.exports.xxx() })

    使用Linux內(nèi)核模式調(diào)用wasm

    https://github.com/rianhunter/wasmjit

    Mac中直接執(zhí)行wasm

    在 Mac 系統(tǒng)下通過 brew install binaryen 安裝成功后,通過 wasm-shell f.wasm 文件即可直接運行

    轉(zhuǎn)載于:https://my.oschina.net/langhuihui/blog/2251405

    總結(jié)

    以上是生活随笔為你收集整理的WebAssembly 技术汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。