WebAssembly和Emscripten工做整理

寫在前面

以前作過一段時間的WebAssembly的研究,寫過幾個WebAssembly Demo,而且閱讀並翻譯了不少篇Emscripten官方文檔,今天對這些東西作一個總結。
若是有須要對這塊知識瞭解的同窗,就能夠按照這篇文章裏的資料順序來學習。
主要是以連接形式提供,並附上簡短的說明。c++

WebAssembly方面

1.WebAssembly入門

這是一篇對WebAssembly進行歸納介紹的文章。裏面也有demo。git

連接https://cunzaizhuyi.github.io...github

2.WebAssembly API及調用過程圖示

爲了搞清楚WebAssembly的幾個Web API而畫的一個典型的使用JS調用wasm模塊所涉及的API。web

圖片連接https://github.com/cunzaizhuy...canvas

3.WebAssembly的CanvasDemo

介紹了一個基於canvas的圓球隨機運動小demo。segmentfault

文章連接https://cunzaizhuyi.github.io... 工具

Demo連接https://github.com/cunzaizhuy...學習

Emscripten官方文檔翻譯

1.Emscripten入門指導

是對這個Emscripten項目的教學型介紹,原文在get started目錄下。優化

連接https://segmentfault.com/a/11...翻譯

2.emcc編譯工具使用

如何使用emcc工具將c/c++代碼編譯爲wasm供js調用,從而生成web程序?如何使用emcc工具將c/c++代碼直接編譯爲asm,從而生成web程序?以上兩個問題的答案,要在emcc編譯命令的介紹裏面去搜尋。

連接https://segmentfault.com/a/11...

3.代碼可移植性與限制

介紹將C/C++代碼編譯爲wasm的過程當中,有哪部分C/C++代碼不能被編譯、哪一種代碼能編譯可是效率很低、哪一種代碼能夠經過轉化代碼寫法從而進行編譯等。

連接https://cunzaizhuyi.github.io...

4.Emscripten運行時環境

由於c/c++運行時環境與web程序運行時環境不一樣,所以一個Emscripten程序若是未來想要可以被編譯成web程序,它就要對自身的運行時環境進行改造,填平、處理掉這些差別。

連接https://cunzaizhuyi.github.io...

5.鏈接C程序和JavaScript代碼

實際上你能夠將Emscripten當作一個js API 和c、C++ sdk 優化子集,即它本身是一套完整的東西。從這個思路出發,說到c和js的代碼交互,C裏面怎麼調用js,js裏面又怎麼調c,不過就是怎麼用好emscripten sdk的問題,這麼說好理解一點。

連接1https://cunzaizhuyi.github.io...

連接2https://cunzaizhuyi.github.io...

6.文件和文件系統

根據上一個連接的說法,這部分其實就是介紹了Emscripten項目的文件系統和c/c++的不一樣,爲啥要有這些不一樣(由於要適應web環境),而後你怎麼用我Emscripten的sdk中涉及文件系統的API等。

連接https://cunzaizhuyi.github.io...

7.對opengl的支持

介紹了Emscripten項目可以支持的OpenGL的版本與支持程度。

連接https://segmentfault.com/a/11...

8.調試代碼

Emscripten提供了好幾種調試方式

連接https://cunzaizhuyi.github.io...

9.優化代碼

其實也算emcc編譯工具使用教程之一,它集中在講解哪些emcc命令是與優化代碼質量、大小有關的。

連接https://cunzaizhuyi.github.io...

總結

以上文章都收錄在segmentfault的專欄。由於以前文章發表的時間是亂序的,因此這篇文章的主旨實際上是整理一個合理的學習順序出來。

歡迎加入Wasm和emscripten技術交流羣,羣聊號碼:939206522

相關文章
相關標籤/搜索