寫在前面
之前做過一段時間的WebAssembly的研究,寫過幾個WebAssembly Demo,並且閱讀並翻譯了很多篇Emscripten官方文件,今天對這些東西做一個總結。
主要是以連結形式提供,並附上簡短的說明。
WebAssembly方面
1.WebAssembly入門
這是一篇對WebAssembly進行概括介紹的文章。裡面也有demo。
連結: https://cunzaizhuyi.github.io/webassembly/
2.WebAssembly API及呼叫過程圖示
為了搞清楚WebAssembly的幾個Web API而畫的一個典型的使用JS呼叫wasm模組所涉及的API。
圖片連結:https://github.com/cunzaizhuyi/photos/blob/master/WebAssembly/seq.png?raw=true
3.WebAssembly的CanvasDemo
介紹了一個基於canvas的圓球隨機運動小demo。
文章連結:https://cunzaizhuyi.github.io/WebAssemblyCanvasDemo/
Demo連結:https://github.com/cunzaizhuyi/wasm-canvasDemo
Emscripten官方文件翻譯
1.Emscripten入門指導
是對這個Emscripten專案的教學型介紹,原文在get started目錄下。
連結: https://segmentfault.com/a/1190000011328496
2.emcc編譯工具使用
如何使用emcc工具將c/c++程式碼編譯為wasm供js呼叫,從而生成web程式?如何使用emcc工具將c/c++程式碼直接編譯為asm,從而生成web程式?以上兩個問題的答案,要在emcc編譯命令的介紹裡面去搜尋。
連結:https://segmentfault.com/a/1190000011335568
3.程式碼可移植性與限制
介紹將C/C++程式碼編譯為wasm的過程中,有哪部分C/C++程式碼不能被編譯、哪種程式碼能編譯但是效率很低、哪種程式碼可以通過轉化程式碼寫法從而進行編譯等。
連結:https://cunzaizhuyi.github.io/em-port-one/
4.Emscripten執行時環境
因為c/c++執行時環境與web程式執行時環境不同,因此一個Emscripten程式如果將來想要能夠被編譯成web程式,它就要對自身的執行時環境進行改造,填平、處理掉這些差異。
連結:https://cunzaizhuyi.github.io/em-port-RuntimeEnv-two/
5.連線C程式和JavaScript程式碼
實際上你可以將Emscripten看成一個js API 和c、C++ sdk 優化子集,即它自己是一套完整的東西。從這個思路出發,說到c和js的程式碼互動,C裡面怎麼呼叫js,js裡面又怎麼調c,不過就是怎麼用好emscripten sdk的問題,這麼說好理解一點。
連結1:https://cunzaizhuyi.github.io/em-port-codeinteract-three/
連結2:https://cunzaizhuyi.github.io/em-port-embind-three/
6.檔案和檔案系統
根據上一個連結的說法,這部分其實就是介紹了Emscripten專案的檔案系統和c/c++的不同,為啥要有這些不同(因為要適應web環境),然後你怎麼用我Emscripten的sdk中涉及檔案系統的API等。
連結:https://cunzaizhuyi.github.io/em-port-filesystem-four/
7.對opengl的支援
介紹了Emscripten專案能夠支援的OpenGL的版本與支援程度。
連結:https://segmentfault.com/a/1190000011438279
8.除錯程式碼
Emscripten提供了好幾種除錯方式
連結:https://cunzaizhuyi.github.io/em-port-debug-six/
9.優化程式碼
其實也算emcc編譯工具使用教程之一,它集中在講解哪些emcc命令是與優化程式碼質量、大小有關的。
連結:https://cunzaizhuyi.github.io/emcscripten-Optimizing-Code/
總結
以上鍊接也可以去segmentfault的專欄閱讀。