摘要:寫在前面之前做過一段時(shí)間的的研究,寫過幾個(gè),并且閱讀并翻譯了很多篇官方文檔,今天對這些東西做一個(gè)總結(jié)。主要是以鏈接形式提供,并附上簡短的說明。歡迎加入和技術(shù)交流群,群聊號(hào)碼
寫在前面
之前做過一段時(shí)間的WebAssembly的研究,寫過幾個(gè)WebAssembly Demo,并且閱讀并翻譯了很多篇Emscripten官方文檔,今天對這些東西做一個(gè)總結(jié)。
如果有需要對這塊知識(shí)了解的同學(xué),就可以按照這篇文章里的資料順序來學(xué)習(xí)。
主要是以鏈接形式提供,并附上簡短的說明。
這是一篇對WebAssembly進(jìn)行概括介紹的文章。里面也有demo。
鏈接: https://cunzaizhuyi.github.io...
2.WebAssembly API及調(diào)用過程圖示為了搞清楚WebAssembly的幾個(gè)Web API而畫的一個(gè)典型的使用JS調(diào)用wasm模塊所涉及的API。
圖片鏈接:https://github.com/cunzaizhuy...
3.WebAssembly的CanvasDemo介紹了一個(gè)基于canvas的圓球隨機(jī)運(yùn)動(dòng)小demo。
文章鏈接:https://cunzaizhuyi.github.io...
Demo鏈接:https://github.com/cunzaizhuy...
Emscripten官方文檔翻譯 1.Emscripten入門指導(dǎo)是對這個(gè)Emscripten項(xiàng)目的教學(xué)型介紹,原文在get started目錄下。
鏈接: https://segmentfault.com/a/11...
2.emcc編譯工具使用如何使用emcc工具將c/c++代碼編譯為wasm供js調(diào)用,從而生成web程序?如何使用emcc工具將c/c++代碼直接編譯為asm,從而生成web程序?以上兩個(gè)問題的答案,要在emcc編譯命令的介紹里面去搜尋。
鏈接:https://segmentfault.com/a/11...
3.代碼可移植性與限制介紹將C/C++代碼編譯為wasm的過程中,有哪部分C/C++代碼不能被編譯、哪種代碼能編譯但是效率很低、哪種代碼可以通過轉(zhuǎn)化代碼寫法從而進(jìn)行編譯等。
鏈接:https://cunzaizhuyi.github.io...
4.Emscripten運(yùn)行時(shí)環(huán)境因?yàn)閏/c++運(yùn)行時(shí)環(huán)境與web程序運(yùn)行時(shí)環(huán)境不同,因此一個(gè)Emscripten程序如果將來想要能夠被編譯成web程序,它就要對自身的運(yùn)行時(shí)環(huán)境進(jìn)行改造,填平、處理掉這些差異。
鏈接:https://cunzaizhuyi.github.io...
5.連接C程序和JavaScript代碼實(shí)際上你可以將Emscripten看成一個(gè)js API 和c、C++ sdk 優(yōu)化子集,即它自己是一套完整的東西。從這個(gè)思路出發(fā),說到c和js的代碼交互,C里面怎么調(diào)用js,js里面又怎么調(diào)c,不過就是怎么用好emscripten sdk的問題,這么說好理解一點(diǎn)。
鏈接1:https://cunzaizhuyi.github.io...
鏈接2:https://cunzaizhuyi.github.io...
6.文件和文件系統(tǒng)根據(jù)上一個(gè)鏈接的說法,這部分其實(shí)就是介紹了Emscripten項(xiàng)目的文件系統(tǒng)和c/c++的不同,為啥要有這些不同(因?yàn)橐m應(yīng)web環(huán)境),然后你怎么用我Emscripten的sdk中涉及文件系統(tǒng)的API等。
鏈接:https://cunzaizhuyi.github.io...
7.對opengl的支持介紹了Emscripten項(xiàng)目能夠支持的OpenGL的版本與支持程度。
鏈接:https://segmentfault.com/a/11...
8.調(diào)試代碼Emscripten提供了好幾種調(diào)試方式
鏈接:https://cunzaizhuyi.github.io...
9.優(yōu)化代碼其實(shí)也算emcc編譯工具使用教程之一,它集中在講解哪些emcc命令是與優(yōu)化代碼質(zhì)量、大小有關(guān)的。
鏈接:https://cunzaizhuyi.github.io...
總結(jié)以上文章都收錄在segmentfault的專欄。因?yàn)橹拔恼掳l(fā)表的時(shí)間是亂序的,所以這篇文章的主旨其實(shí)是整理一個(gè)合理的學(xué)習(xí)順序出來。
歡迎加入Wasm和emscripten技術(shù)交流群,群聊號(hào)碼:939206522
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/90789.html
摘要:解析下載后,需要引擎經(jīng)過兩個(gè)階段轉(zhuǎn)換成,然后再轉(zhuǎn)換為瀏覽器需要的中間字節(jié)碼。未來所有支持編譯到字節(jié)碼的編程語言,理論上都可以輸出。 了解WebAssembly原理 WebAssembly是一種可以在瀏覽器上運(yùn)行的二進(jìn)制可執(zhí)行格式文件。它將成為瀏覽器進(jìn)化史上又一次革命。 自從瀏覽器問世以來,javascript就成為瀏覽器上執(zhí)行程序的唯一標(biāo)準(zhǔn),越來越多的應(yīng)用程序通過javascript開...
摘要:工作原理分點(diǎn)介紹官方解讀它可以從各類現(xiàn)有的其他高級(jí)語言寫的業(yè)務(wù)庫編譯而來,比如下文提到的庫,就是一種語言編寫的剛體動(dòng)力學(xué)與碰撞檢測計(jì)算的庫。 1、WebAssembly工作原理 分點(diǎn)介紹 官方解讀 它可以從各類現(xiàn)有的其他高級(jí)語言寫的業(yè)務(wù)庫編譯而來,比如下文提到的bullet庫,就是一種C++語言編寫的剛體動(dòng)力學(xué)與碰撞檢測計(jì)算的庫。根據(jù)調(diào)研,還有Haskell、Go、C#的語言的一些We...
摘要:如何判斷環(huán)境變量是否配置成功呢可以使用命令行工具在非目錄下,執(zhí)行,看看結(jié)果是不是類似下面如果是,那么恭喜你已經(jīng)安裝成功了。 javascript 這門語言的性能無法與原生的C/C++代碼相媲美,為了進(jìn)一步提高網(wǎng)頁的性能,業(yè)界推出了WebAssembly技術(shù):將C語言編譯成了瀏覽器可以執(zhí)行的wasm文件。WebAssembly不僅提高了網(wǎng)頁的性能,而且還可以完成原來javascript無...
摘要:本文以這個(gè)模塊的開發(fā)過程梳理如何應(yīng)用到前端工程中。注使用完成開發(fā)至少需要基礎(chǔ)的編碼能力。具體其他信息可以參考上該模塊的。配置主要針對源碼文件,需要添加正確的進(jìn)行處理。下一篇應(yīng)用到前端工程下和 前言 WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine...
閱讀 3758·2021-08-11 11:16
閱讀 1629·2019-08-30 15:44
閱讀 1998·2019-08-29 18:45
閱讀 2279·2019-08-26 18:18
閱讀 1010·2019-08-26 13:37
閱讀 1576·2019-08-26 11:43
閱讀 2125·2019-08-26 11:34
閱讀 380·2019-08-26 10:59