深入淺齣WebAssembly

深入淺齣WebAssembly pdf epub mobi txt 電子書 下載2025

出版者:電子工業齣版社
作者:於航
出品人:
頁數:548
译者:
出版時間:2018-11
價格:128.00元
裝幀:平裝
isbn號碼:9787121352171
叢書系列:
圖書標籤:
  • WebAssembly
  • 前端開發
  • 前端
  • C++
  • 計算機
  • 計算機科學
  • 編程
  • 前端技術
  • WebAssembly
  • Wasm
  • 前端開發
  • 編譯原理
  • 底層原理
  • 性能優化
  • 瀏覽器技術
  • 技術棧
  • 新興技術
  • 代碼優化
想要找書就要到 小美書屋
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

具體描述

WebAssembly是一種新的二進製格式,它可以方便地將C/C++等靜態語言的代碼快速地“運行”在瀏覽器中,這一特性為前端密集計算場景提供瞭無限可能。不僅如此,通過WebAssembly技術,我們還可以將基於Unity等遊戲引擎開發的大型遊戲快速地移植到Web端。WebAssembly技術現在已經被計劃設計成W3C的標準,眾多瀏覽器廠商已經提供瞭對其MVP版本標準的支持。在Google I/O 2017大會上,Google首次針對WebAssembly技術進行瞭公開演講和推廣,其Post-MVP版本標準更是對諸如DOM操作、多綫程和GC等特性提供瞭支持。WebAssembly所帶來的Web技術變革勢不可擋。

《深入淺齣WebAssembly》力求從一些簡單的實踐入手,深入理論,到復雜的具有實際業務價值的綜閤實踐,深入淺齣地介紹Wasm技術發展至今,其背後所涉及的各種底層設計原理與實現、相關工具鏈以及未來發展方嚮等多方麵內容。本書內容包括:WebAssembly技術的發展曆程,從PNaCl到ASM.js再到WebAssembly,以及這些技術的基本應用方法與性能對比;WebAssembly的標準上層API、底層堆棧機的設計原理,以及對MVP標準理論的深入解讀;與WebAssembly標準相關的進階內容,如單指令多數據流(SIMD)、動態鏈接(DL)等;LLVM工具鏈與WAT可讀文本格式的相關內容;基於Emscripten工具鏈開發WebAssembly應用的基本流程,以及工具鏈的一些基本常用功能和特性;基於Emscripten工具鏈實現C/C++語言動態關係綁定技術;Emscripten工具鏈所提供的一些如WebGL支持、虛擬文件係統、應用優化以及HTML 5事件係統等高級應用特性;構建一個具有實際業務價值的WebAssembly應用,現階段Wasm生態的發展情況,以及在Post-MVP標準中製訂的一些WebAssembly未來發展規劃。

《深入淺齣WebAssembly》的目標讀者為Web前端開發人員、C/C++開發人員和對WebAssembly技術感興趣的人員。

著者簡介

於航,現就職於阿裏巴巴 / 餓瞭麼事業部(BU),資深前端工程師,FreeCodeCamp(FCC) China 上海社區負責人,QCon(2017)上海前端專場講師。2016 年開始研究 WebAssembly 技術,2017 年加入 WebAssembly 中國社區,同年加入官方WCG(W3C Community Group),定期參與 WCG組織的各種綫上視頻研討會議,在跟進 WebAssembly 新發展的同時,也為 WebAssembly 的標準化提齣自己的建議和意見。生活中喜歡彈鋼琴、演講與分享。主要技術研究方嚮為Web前端與基礎設施架構、WebAssembly、LLVM以及編譯器等相關領域。

圖書目錄

第1章 漫談WebAssembly發展史 1
1.1 JavaScript的發展和弊端 1
1.1.1 快速發展與基準測試 1
1.1.2 Web新時代與不斷挑戰 8
1.1.3 無法跨越的“阻礙” 11
1.1.4 Chrome V8引擎鏈路 17
1.2 曾經嘗試——ASM.js與PNaCl 28
1.2.1 失落的ASM.js 28
1.2.2 古老的NaCl與PNaCl 42
1.3 新的可能——WebAssembly 57
1.3.1 改變與顛覆 57
1.3.2 一路嚮前,WCG與WWG 85
第2章 WebAssembly核心原理(基於MVP標準) 90
2.1 應用與標準Web接口 90
2.1.1 編譯與初始化 90
2.1.2 驗證模塊 106
2.1.3 遇到錯誤 106
2.1.4 內存分配 108
2.1.5 錶 112
2.2 深入設計模型——堆棧機 118
2.2.1 堆棧式虛擬機 119
2.2.2 逆波蘭錶達式 125
2.2.3 Shunting-yard算法 126
2.2.4 標簽與跳轉 130
2.2.5 條件語句 135
2.2.6 子程序調用 137
2.2.7 變量 138
2.2.8 棧幀 139
2.2.9 堆 140
2.3 類型檢查 141
2.3.1 數據指令類型 142
2.3.2 基本流程控製 144
2.3.3 基於錶達式的控製流 149
2.3.4 類型堆棧的一緻性 151
2.3.5 不可達代碼 155
2.4 二進製編碼 156
2.4.1 字節序——大端模式與小端模式 157
2.4.2 基於LEB-128的整數編碼 161
2.4.3 基於IEEE-754—2008的浮點數編碼 164
2.4.4 基於UTF-8的字符串編碼 167
2.4.5 模塊數據類型 168
2.4.6 虛擬指令與編碼 169
2.4.7 類型構造符 174
2.5 模塊 175
2.5.1 段 175
2.5.2 索引空間 185
2.5.3 二進製原型結構 186
2.6 內存結構 196
2.6.1 操作運算符 197
2.6.2 尋址 197
2.6.3 對齊 198
2.6.4 溢齣與調整 202
第3章 動態鏈接與SIMD(基於MVP標準) 204
3.1 動態鏈接(Dynamic Linking) 204
3.1.1 ELF 206
3.1.2 重定嚮(Relocation) 212
3.1.3 GOT(Global Offset Table,全局偏移錶) 225
3.1.4 PLT(Procedure Lookup Table,過程查詢錶) 229
3.1.5 基於錶的Wasm模塊動態鏈接 233
3.2 單指令多數據流(SIMD) 236
3.2.1 SIMD應用 238
3.2.2 並行與並發 243
3.2.3 費林分類法 244
3.2.4 SIMD.js & TC39 246
3.2.5 WebAssembly上的SIMD擴展 248
第4章 深入LLVM與WAT 250
4.1 LLVM——底層虛擬機 250
4.1.1 傳統的編譯器架構 251
4.1.2 LLVM中間錶示層 252
4.1.3 基於LLVM的編譯器架構 254
4.1.4 LLVM優化策略 256
4.1.5 LLVM命令行工具 261
4.1.6 WebAssembly與LLVM 267
4.2 基於LLVM開發編程語言 272
4.2.1 圖靈完備與DSL 276
4.2.2 簡易詞法分析器 280
4.2.3 RDP與OPP算法 287
4.2.4 AST 295
4.2.5 簡易語法分析器 296
4.2.6 生成LLVM-IR代碼 303
4.2.7 鏈接優化器 307
4.2.8 編譯到目標代碼 308
4.2.9 整閤I/O交互層 312
4.3 WAT 315
4.3.1 S-錶達式 317
4.3.2 WAT/Wasm與Binary-AST 319
4.3.3 其他與設計原則 320
第5章 Emscripten基礎應用 322
5.1 利器——Emscripten工具鏈 322
5.1.1 Emscripten發展曆史 322
5.1.2 Emscripten組成結構 324
5.1.3 Emscripten下載、安裝與配置 326
5.1.4 運行測試套件 330
5.1.5 編譯到ASM.js 331
5.2 連接C/C++與WebAssembly 333
5.2.1 構建類型 333
5.2.2 Emscripten運行時環境 342
5.2.3 在JavaScript代碼中調用C/C++函數 351
5.2.4 在C/C++代碼中調用JavaScript函數 362
第6章 基於Emscripten的語言關係綁定 382
6.1 基於Embind實現關係綁定 384
6.1.1 簡單類 389
6.1.2 數組與對象類型 391
6.1.3 高級類元素 393
6.1.4 重載函數 407
6.1.5 枚舉類型 408
6.1.6 基本類型 409
6.1.7 容器類型 411
6.1.8 轉譯JavaScript代碼 413
6.1.9 內存視圖 416
6.2 基於WebIDL實現關係綁定 417
6.2.1 指針、引用和值類型 420
6.2.2 類成員變量 422
6.2.3 常量“const”關鍵字 423
6.2.4 命名空間 424
6.2.5 運算符重載 425
6.2.6 枚舉類型 426
6.2.7 接口類 429
6.2.8 原始指針、空指針與void指針 430
6.2.9 默認類型轉換 433
第7章 探索Emscripten高級特性 436
7.1 加入優化流程 436
7.1.1 使用編譯器代碼優化策略 441
7.1.2 使用GCC壓縮代碼 443
7.1.3 使用IndexedDB緩存模塊對象 445
7.1.4 其他優化參數 452
7.2 使用標準庫與文件係統 453
7.2.1 使用基於musl和libc++的標準庫 454
7.2.2 虛擬文件係統結構 457
7.2.3 打包初始化文件 458
7.2.4 基本文件係統操作 460
7.2.5 懶加載 469
7.2.6 Fetch API 472
7.3 處理瀏覽器事件 477
7.3.1 事件注冊函數 479
7.3.2 事件迴調函數 479
7.3.3 通用類型與返迴值類型 481
7.3.4 常用事件 482
7.4 基於EGL、OpenGL、SDL和OpenAL的多媒體處理 485
7.4.1 使用EGL與OpenGL處理圖形 486
7.4.2 使用SDL處理圖形 492
7.4.3 使用OpenAL處理音頻 495
7.5 調試WebAssembly應用 497
7.5.1 編譯器的調試信息 498
7.5.2 使用調試模式 500
7.5.3 手動跟蹤 501
7.5.4 其他常用編譯器調試選項 503
第8章 WebAssembly綜閤實踐、發展與未來 504
8.1 DIP綜閤實踐應用 504
8.1.1 應用描述 504
8.1.2 濾鏡與捲積 505
8.1.3 基本組件類型與架構 509
8.1.4 編寫基本頁麵骨架(HTML與CSS) 510
8.1.5 編寫核心捲積函數(C++) 511
8.1.6 編寫主渲染循環與“膠水”代碼(JavaScript) 513
8.1.7 使用Emscripten編譯並運行應用 518
8.1.8 性能對比 519
8.2 WebAssembly常用工具集 520
8.2.1 Cheerp 520
8.2.2 Webpack 4 522
8.2.3 Go和Rust的WebAssembly實踐 525
8.2.4 Binaryen 527
8.2.5 WasmFiddle 528
8.2.6 Wabt 529
8.2.7 AssemblyScript 529
8.3 WebAssembly未來草案 529
8.3.1 GC(垃圾迴收) 530
8.3.2 Multi-Thread(多綫程)與原子操作 530
8.3.3 異常處理 530
8.3.4 多返迴值擴展 530
8.3.5 ES模塊 530
8.3.6 尾遞歸 531
8.3.7 BigInts的雙嚮支持 531
8.3.8 自定義注釋語法 531
· · · · · · (收起)

讀後感

評分

@c623fc836f3be 1. 这位朋友说整本书讲了很多基础,各种基础。作为国内第一本介绍 Wasm 技术的书籍,我不能上来就讲 VM 的原理。堆栈机模型基础是理解 Wasm 字节码的基础,所以是必不可少的部分;从基础讲起也是为了降低读者阅读此书的难度。 2. 我并没有写 C++ 基础,如果你认...

評分

@c623fc836f3be 1. 这位朋友说整本书讲了很多基础,各种基础。作为国内第一本介绍 Wasm 技术的书籍,我不能上来就讲 VM 的原理。堆栈机模型基础是理解 Wasm 字节码的基础,所以是必不可少的部分;从基础讲起也是为了降低读者阅读此书的难度。 2. 我并没有写 C++ 基础,如果你认...

評分

@c623fc836f3be 1. 这位朋友说整本书讲了很多基础,各种基础。作为国内第一本介绍 Wasm 技术的书籍,我不能上来就讲 VM 的原理。堆栈机模型基础是理解 Wasm 字节码的基础,所以是必不可少的部分;从基础讲起也是为了降低读者阅读此书的难度。 2. 我并没有写 C++ 基础,如果你认...

評分

@c623fc836f3be 1. 这位朋友说整本书讲了很多基础,各种基础。作为国内第一本介绍 Wasm 技术的书籍,我不能上来就讲 VM 的原理。堆栈机模型基础是理解 Wasm 字节码的基础,所以是必不可少的部分;从基础讲起也是为了降低读者阅读此书的难度。 2. 我并没有写 C++ 基础,如果你认...

評分

@c623fc836f3be 1. 这位朋友说整本书讲了很多基础,各种基础。作为国内第一本介绍 Wasm 技术的书籍,我不能上来就讲 VM 的原理。堆栈机模型基础是理解 Wasm 字节码的基础,所以是必不可少的部分;从基础讲起也是为了降低读者阅读此书的难度。 2. 我并没有写 C++ 基础,如果你认...

用戶評價

评分

前麵寫的跟wa一點關係沒有,到wa的部分零零散散,對入門者極不友好

评分

作者很有誠意

评分

太泛,著重於wasm 本身的討論太少。

评分

適閤進階

评分

這是今年看過的最尷尬的一本書,這本書從指令分類的概念講到elf的基礎,C++的基礎,編譯器的基礎,解釋器的基礎,LLVM的基礎。。。基本上就是給大一新生在寫教材。WebAssembly標準隻有150頁,不知道作者在寫些什麼東西,浪費時間。

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.quotespace.org All Rights Reserved. 小美書屋 版权所有