图书介绍

深入浅出WebAssembly2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

深入浅出WebAssembly
  • 于航著 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121352171
  • 出版时间:2018
  • 标注页数:532页
  • 文件大小:164MB
  • 文件页数:550页
  • 主题词:编译软件

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

深入浅出WebAssemblyPDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 漫谈WebAssembly发展史1

1.1 JavaScrtpt的发展和弊端1

1.1.1 快速发展与基准测试1

1.1.2 Web新时代与不断挑战8

1.1.3 无法跨越的“阻碍”11

1.1.4 Chrome V8引擎链路17

1.2 曾经尝试——ASM.js与PNaCl28

1.2.1 失落的ASM.js28

1.2.2 古老的NaCl与PNaCl42

1.3 新的可能——WebAssembly57

1.3.1 改变与颠覆57

1.3.2 一路向前,WCG与WWG85

第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的浮点数编码163

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 溢出与调整203

第3章 动态链接与SIMD(基于MVP标准)204

3.1 动态链接(Dynamic Linking)204

3.1.1 ELF206

3.1.2 符号重定向(Symbol 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)237

3.2.1 SIMD应用239

3.2.2 并行与并发243

3.2.3 费林分类法244

3.2.4 SIMD.js&TC39246

3.2.5 WebAssembly上的SIMD扩展248

第4章 深入LLVM与WAT250

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与LLVM268

4.2 基于LLVM定义新的编程语言272

4.2.1 图灵完备与DSL276

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 WAT315

4.3.1 S-表达式316

4.3.2 WAT/Wasm与Binary-AST318

4.3.3 其他与设计原则320

第5章 Emscripten基础应用321

5.1 利器——Emscripten工具链321

5.1.1 Emscripten发展历史321

5.1.2 Emscripten组成结构323

5.1.3 Emscripten下载、安装与配置325

5.1.4 运行测试套件329

5.1.5 编译到ASM.js330

5.2 连接C/C++与WebAssembly332

5.2.1 构建类型333

5.2.2 Emscripten运行时环境341

5.2.3 在JavaScript代码中调用C/C++函数350

5.2.4 在C/C++代码中调用JavaScript函数362

第6章 基于Emscripten的语言关系绑定381

6.1 基于Embind实现关系绑定383

6.1.1 简单类388

6.1.2 数组与对象类型390

6.1.3 高级类元素392

6.1.4 重载函数406

6.1.5 枚举类型407

6.1.6 基本类型408

6.1.7 容器类型410

6.1.8 转译JavaScript代码412

6.1.9 内存视图415

6.2 基于WebIDL实现关系绑定416

6.2.1 指针、引用和值类型419

6.2.2 类成员变量421

6.2.3 常量“const”关键字422

6.2.4 命名空间423

6.2.5 运算符重载424

6.2.6 枚举类型425

6.2.7 接口类428

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 打包初始化文件459

7.2.4 基本文件系统操作460

7.2.5 懒加载469

7.2.6 Fetch API473

7.3 处理浏览器事件478

7.3.1 事件注册函数479

7.3.2 事件回调函数480

7.3.3 通用类型与返回值类型481

7.3.4 常用事件483

7.4 基于EGL、OpenGL、SDL和OpenAL的多媒体处理486

7.4.1 使用EGL与OpenGL处理图形487

7.4.2 使用SDL处理图形493

7.4.3 使用OpenAL处理音频496

7.5 调试WebAssembly应用499

7.5.1 编译器的调试信息499

7.5.2 使用调试模式501

7.5.3 手动跟踪502

7.5.4 其他常用编译器调试选项504

第8章 WebAssembly综合实践、发展与未来505

8.1 DIP综合实践应用505

8.1.1 应用描述505

8.1.2 滤镜与卷积506

8.1.3 基本组件类型与架构510

8.1.4 编写基本页面骨架(HTML与CSS)511

8.1.5 编写核心卷积函数(C++)512

8.1.6 编写主渲染循环与“胶水”代码(JavaScript)514

8.1.7 使用Emscripten编译并运行应用519

8.1.8 性能对比520

8.2 WebAssembly常用工具集521

8.2.1 Cheerp521

8.2.2 Webpack 4523

8.2.3 Go和Rust的WebAssembly实践525

8.2.4 Binaryen528

8.2.5 WasmFiddle529

8.2.6 Wabt530

8.2.7 AssemblyScript530

8.3 WebAssembly未来草案530

8.3.1 GC(垃圾回收)531

8.3.2 Multi-Thread(多线程)与原子操作531

8.3.3 异常处理531

8.3.4 多返回值扩展531

8.3.5 ES模块531

8.3.6 尾递归532

8.3.7 BigInts的双向支持532

8.3.8 自定义注释语法532

热门推荐