新到貨2本75折
WebAssembly標準入門

WebAssembly標準入門

  • 定價:294
  • 優惠價:87256
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

WebAssembly是一種新興的網頁虛擬機器標準,它的設計目標包括高可攜性、高安全性、高效率(包括載入效率和運行效率)、盡可能小的程式體積。本書詳盡介紹了WebAssembly程式在JavaScript環境下的使用方法、WebAssembly組合語言和二進位格式,給出了大量簡單易懂的示例,同時以C/C++和Go語言開發環境為例,介紹了如何使用其他高階語言開發WebAssembly模組。 本書適合從事高性能Web前端開發、跨語言Web應用開發的技術人員學習參考,也可以作為WebAssembly標準參考手冊隨時查閱。
 

作者介紹

柴樹杉,青雲QingCloud高級軟體工程師,Go語言和WebAssembly技術專家,著有《Go語言高級程式設計》等書。GitHub 帳號為chai2010。
 
丁爾男,Go語言愛好者,WebAssembly技術專家, 常年從事三維渲染引擎開發, 著有《C/C++面向WebAssembly程式設計》等書,現任武漢航太遠景科技股份有限公司應用技術總監。GitHub 帳號為3dgen。
 

目錄

第0章 WebAssembly誕生背景 1
0.1 JavaScript簡史 1
0.2 asm.js的嘗試 2
0.3 WebAssembly的救贖 5

第1章 JavaScript語言基礎 7
1.1 console對象 7
1.2 函數和閉包 9
1.3 Promise對象 12
1.4 二進位數字組 13

第2章 WebAssembly快速入門 17
2.1 準備工作 17
2.1.1 WebAssembly相容性 17
2.1.2 WebAssembly文本格式與wabt工具集 19
2.2 首個常式 21
2.3 WebAssembly概覽 22
2.3.1 WebAssembly中的關鍵概念 23
2.3.2 WebAssembly程式生命週期 24
2.3.3 WebAssembly虛擬機器體系結構 25
2.4 你好,WebAssembly 25
2.4.1 WebAssembly部分 26
2.4.2 JavaScript部分 27
2.5 WebAssembly調試及代碼編輯環境 28

第3章 JavaScript中的WebAssembly物件 31
3.1 WebAssembly對象簡介 31
3.2 全域方法 32
3.2.1 WebAssembly.compile() 32
3.2.2 WebAssembly.instantiate() 33
3.2.3 WebAssembly.validate() 34
3.2.4 WebAssembly.compileStreaming() 35
3.2.5 WebAssembly.instantiateStreaming() 35
3.3 WebAssembly.Module對象 36
3.3.1 WebAssembly.Module() 36
3.3.2 WebAssembly.Module.exports() 37
3.3.3 WebAssembly.Module.imports() 38
3.3.4 WebAssembly.Module.customSections() 39
3.3.5 緩存Module 40
3.4 WebAssembly.Instance對象 41
3.4.1 WebAssembly.Instance() 41
3.4.2 WebAssembly.Instance.prototype.exports 42
3.4.3 創建WebAssembly.Instance的簡潔方法 43
3.5 WebAssembly.Memory對象 44
3.5.1 WebAssembly.Memory() 44
3.5.2 WebAssembly.Memory.prototype.buffer 44
3.5.3 WebAssembly.Memory.prototype.grow() 47
3.6 WebAssembly.Table對象 50
3.6.1 WebAssembly.Table() 51
3.6.2 WebAssembly.Table.prototype.get() 52
3.6.3 WebAssembly.Table.prototype.length 54
3.6.4 在WebAssembly內部使用表格 55
3.6.5 多個實例通過共用表格及記憶體協同工作 57
3.6.6 WebAssembly.Table.prototype.set() 60
3.6.7 WebAssembly.Table.prototype.grow() 61
3.7 小結及錯誤類型 61

第4章 WebAssembly組合語言 65
4.1 S-運算式 65
4.2 資料類型 66
4.3 函式定義 67
4.3.1 函數簽名 67
4.3.2 區域變數表 68
4.3.3 函數體 68
4.3.4 函數別名 68
4.4 變數 69
4.4.1 參數與區域變數 69
4.4.2 變數別名 70
4.4.3 全域變數 70
4.5 棧式虛擬機器 72
4.5.1 棧 72
4.5.2 WebAssembly棧式虛擬機器 72
4.5.3 棧式調用 73
4.6 函式呼叫 75
4.6.1 直接調用 75
4.6.2 間接調用 76
4.6.3 遞迴 78
4.7 記憶體讀寫 79
4.7.1 記憶體初始化 79
4.7.2 讀取記憶體 80
4.7.3 寫入記憶體 81
4.7.4 獲取記憶體容量及記憶體擴容 82
4.8 控制流 83
4.8.1 nop和unreachable 83
4.8.2 block指令塊 83
4.8.3 if指令塊 85
4.8.4 loop指令塊 86
4.8.5 指令塊的label索引及嵌套 86
4.8.6 br 87
4.8.7 br_if 89
4.8.8 return 90
4.8.9 br_table 90
4.9 導入和匯出 91
4.9.1 匯出對象 91
4.9.2 導入對象 93
4.10 start()函數及指令折疊 96
4.10.1 start()函數 96
4.10.2 指令折疊 97

第5章 WebAssembly二進位格式 99
5.1 LEB128編碼 99
5.1.1 LEB128編碼原理 99
5.1.2 無符號數的LEB128編碼 100
5.1.3 有符號數的LEB128編碼 101
5.2 頭部和段資料 101
5.2.1 頭部 101
5.2.2 段類型列表 101
5.2.3 段資料結構 102
5.3 記憶體段和資料段 104
5.3.1 記憶體段 104
5.3.2 資料段 105
5.4 表格段和元素段 106
5.4.1 表格段 107
5.4.2 元素段 108
5.5 開始段和函數索引 108
5.5.1 開始段 109
5.5.2 函數索引 110
5.6 全域段 111
5.6.1 全域變數索引 111
5.6.2 全域段編碼方式 112
5.7 函數段、程式碼片段和類型段 113
5.7.1 函數段、程式碼片段和類型段之間的關係 113
5.7.2 更簡單的例子 114
5.7.3 函數段 115
5.7.4 類型段 116
5.7.5 程式碼片段 117
5.8 導入段和匯出段 118
5.8.1 例子 118
5.8.2 類型段 119
5.8.3 導入段 119
5.8.4 匯出段 120
5.9 自訂段 121
5.9.1 自訂段結構 122
5.9.2 模組的名字 122
5.9.3 全域變數的名字 123
5.9.4 函數的名字 124
5.9.5 區域變數的名字 124
5.10 補充說明 126

第6章 Emscripten和WebAssembly 127
6.1 安裝環境 127
6.1.1 emsdk命令安裝 127
6.1.2 Docker環境安裝 128
6.1.3 驗證emcc命令 129
6.2 你好,Emscripten! 129
6.2.1 生成wasm檔 130
6.2.2 流覽器環境 130
6.2.3 自動生成HTML測試檔 132
6.3 C/C++內聯JavaScript代碼 133
6.3.1 EM_ASM宏 133
6.3.2 EM_ASM_宏 134
6.3.3 EM_ASM_宏 135
6.3.4 函數參數 137
6.3.5 注意問題 138
6.4 C/C++調用JavaScript函數 139
6.4.1 C語言版本的eval()函數 139
6.4.2 打造帶參數的eval()函數 141
6.4.3 打造可變參數的eval()函數 143
6.4.4 eval()函數返回字串 146
6.5 JavaScript調用C匯出函數 149
6.5.1 調用匯出函數 149
6.5.2 輔助函數ccall()和cwrap() 152
6.6 運行時和消息迴圈 155
6.6.1 Emscripten運行時 155
6.6.2 消息迴圈 158
6.7 補充說明 162

第7章 Go語言和WebAssembly 163
7.1 你好,Go語言 163
7.2 流覽器中的Go語言 166
7.3 使用JavaScript函數 168
7.4 回檔Go函數 170
7.5 syscall/js包 172
7.6 WebAssembly模組的導入函數 175
7.7 WebAssembly虛擬機器 178
7.8 補充說明 180

附錄 指令參考 181
 

詳細資料

  • ISBN:9787115500595
  • 規格:平裝 / 194頁 / 16k / 19 x 26 x 1 cm / 普通級 / 單色印刷 / 1-1
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 【科普、電腦】高寶電子書暢銷書展:人生就是選擇的總和,全展75折起
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 翦商作者新作79折
  • 針灸匠張寶旬