第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 函數(shù)和閉包 9
1.3 Promise對象 12
1.4 二進制數(shù)組 13
第 2章 WebAssembly快速入門 17
2.1 準備工作 17
2.2 首個例程 21
2.3 WebAssembly概覽 22
2.4 你好,WebAssembly 25
2.5 WebAssembly調試及代碼編輯環(huán)境 28
第3章 JavaScript中的WebAssembly對象 31
3.1 WebAssembly對象簡介 31
3.2 全局方法 32
3.3 WebAssembly.Module對象 36
3.4 WebAssembly.Instance對象 41
3.5 WebAssembly.Memory對象 44
3.6 WebAssembly.Table對象 50
3.7 小結及錯誤類型 61
第4章 WebAssembly匯編語言 65
4.1 S-表達式 65
4.2 數(shù)據(jù)類型 66
4.3 函數(shù)定義 67
4.4 變量 69
4.5 棧式虛擬機 72
4.6 函數(shù)調用 75
4.7 內存讀寫 79
4.8 控制流 83
4.9 導入和導出 91
4.10 start()函數(shù)及指令折疊 96
第5章 WebAssembly二進制格式 99
5.1 LEB128編碼 99
5.2 頭部和段數(shù)據(jù) 101
5.3 內存段和數(shù)據(jù)段 104
5.4 表格段和元素段 106
5.5 開始段和函數(shù)索引 108
5.6 全局段 111
5.7 函數(shù)段、代碼段和類型段 113
5.8 導入段和導出段 118
5.9 自定義段 121
5.10 補充說明 126
第6章 Emscripten和WebAssembly 127
6.1 安裝環(huán)境 127
6.2 你好,Emscripten! 129
6.3 C/C++內聯(lián)JavaScript代碼 133
6.4 C/C++調用JavaScript函數(shù) 139
6.5 JavaScript調用C導出函數(shù) 149
6.6 運行時和消息循環(huán) 155
6.7 補充說明 162
第7章 Go語言和WebAssembly 163
7.1 你好,Go語言 163
7.2 瀏覽器中的Go語言 166
7.3 使用JavaScript函數(shù) 168
7.4 回調Go函數(shù) 170
7.5 syscall/js包 172
7.6 WebAssembly模塊的導入函數(shù) 175
7.7 WebAssembly虛擬機 178
7.8 補充說明 180
附錄 指令參考 181