展开全部

主编推荐语

WebAssembly是一种新的二进制格式,它可以方便地将C/C++等静态语言的代码快速地“运行”在浏览器中,这一特性为前端密集计算场景提供了无限可能。

内容简介

WebAssembly技术现在已经被计划设计成W3C的标准,众多浏览器厂商已经提供了对其MVP版本标准的支持。在Google I/O 2017大会上,Google首次针对WebAssembly技术进行了公开演讲和推广,其Post-MVP版本标准更是对诸如DOM操作、多线程和GC等特性提供了支持。WebAssembly所带来的Web技术变革势不可挡。本书力求从一些简单的实践入手,深入理论,到复杂的具有实际业务价值的综合实践,深入浅出地介绍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未来发展规划。本书的目标读者为Web前端开发人员、C/C++开发人员和对WebAssembly技术感兴趣的人员。

目录

  • 版权信息
  • 作者简介
  • 序言(一)
  • 序言(二)
  • 前言
  • 第1章 漫谈WebAssembly发展史
  • 1.1 JavaScript的发展和弊端
  • 1.1.1 快速发展与基准测试
  • 1.1.2 Web新时代与不断挑战
  • 1.1.3 无法跨越的“阻碍”
  • 1.1.4 Chrome V8引擎链路
  • 1.2 曾经尝试——ASM.js与PNaCl
  • 1.2.1 失落的ASM.js
  • 1.2.2 古老的NaCl与PNaCl
  • 1.3 新的可能——WebAssembly
  • 1.3.1 改变与颠覆
  • 1.3.2 一路向前,WCG与WWG
  • 第2章 WebAssembly核心原理(基于MVP标准)
  • 2.1 应用与标准Web接口
  • 2.1.1 编译与初始化
  • 2.1.2 验证模块
  • 2.1.3 遇到错误
  • 2.1.4 内存分配
  • 2.1.5 表
  • 2.2 深入设计模型——堆栈机
  • 2.2.1 堆栈式虚拟机
  • 2.2.2 逆波兰表达式
  • 2.2.3 Shunting-yard算法
  • 2.2.4 标签与跳转
  • 2.2.5 条件语句
  • 2.2.6 子程序调用
  • 2.2.7 变量
  • 2.2.8 栈帧
  • 2.2.9 堆
  • 2.3 类型检查
  • 2.3.1 数据指令类型
  • 2.3.2 基本流程控制
  • 2.3.3 基于表达式的控制流
  • 2.3.4 类型堆栈的一致性
  • 2.3.5 不可达代码
  • 2.4 二进制编码
  • 2.4.1 字节序——大端模式与小端模式
  • 2.4.2 基于LEB-128的整数编码
  • 2.4.3 基于IEEE-754—2008的浮点数编码
  • 2.4.4 基于UTF-8的字符串编码
  • 2.4.5 模块数据类型
  • 2.4.6 虚拟指令与编码
  • 2.4.7 类型构造符
  • 2.5 模块
  • 2.5.1 段
  • 2.5.2 索引空间
  • 2.5.3 二进制原型结构
  • 2.6 内存结构
  • 2.6.1 操作运算符
  • 2.6.2 寻址
  • 2.6.3 对齐
  • 2.6.4 溢出与调整
  • 第3章 动态链接与SIMD(基于MVP标准)
  • 3.1 动态链接(Dynamic Linking)
  • 3.1.1 ELF
  • 3.1.2 符号重定向(Symbol Relocation)
  • 3.1.3 GOT(Global Offset Table,全局偏移表)
  • 3.1.4 PLT(Procedure Lookup Table,过程查询表)
  • 3.1.5 基于表的Wasm模块动态链接
  • 3.2 单指令多数据流(SIMD)
  • 3.2.1 SIMD应用
  • 3.2.2 并行与并发
  • 3.2.3 费林分类法
  • 3.2.4 SIMD.js & TC39
  • 3.2.5 WebAssembly上的SIMD扩展
  • 第4章 深入LLVM与WAT
  • 4.1 LLVM——底层虚拟机
  • 4.1.1 传统的编译器架构
  • 4.1.2 LLVM中间表示层
  • 4.1.3 基于LLVM的编译器架构
  • 4.1.4 LLVM优化策略
  • 4.1.5 LLVM命令行工具
  • 4.1.6 WebAssembly与LLVM
  • 4.2 基于LLVM定义新的编程语言
  • 4.2.1 图灵完备与DSL
  • 4.2.2 简易词法分析器
  • 4.2.3 RDP与OPP算法
  • 4.2.4 AST(抽象语法树)
  • 4.2.5 简易语法分析器
  • 4.2.6 生成LLVM-IR代码
  • 4.2.7 链接优化器
  • 4.2.8 编译到目标代码
  • 4.2.9 整合I/O交互层
  • 4.3 WAT
  • 4.3.1 S-表达式
  • 4.3.2 WAT/Wasm与Binary-AST
  • 4.3.3 其他与设计原则
  • 第5章 Emscripten基础应用
  • 5.1 利器——Emscripten工具链
  • 5.1.1 Emscripten发展历史
  • 5.1.2 Emscripten组成结构
  • 5.1.3 Emscripten下载、安装与配置
  • 5.1.4 运行测试套件
  • 5.1.5 编译到ASM.js
  • 5.2 连接C/C++与WebAssembly
  • 5.2.1 构建类型
  • 5.2.2 Emscripten运行时环境
  • 5.2.3 在JavaScript代码中调用C/C++函数
  • 5.2.4 在C/C++代码中调用JavaScript函数
  • 第6章 基于Emscripten的语言关系绑定
  • 6.1 基于Embind实现关系绑定
  • 6.1.1 简单类
  • 6.1.2 数组与对象类型
  • 6.1.3 高级类元素
  • 6.1.4 重载函数
  • 6.1.5 枚举类型
  • 6.1.6 基本类型
  • 6.1.7 容器类型
  • 6.1.8 转译JavaScript代码
  • 6.1.9 内存视图
  • 6.2 基于WebIDL实现关系绑定
  • 6.2.1 指针、引用和值类型
  • 6.2.2 类成员变量
  • 6.2.3 常量“const”关键字
  • 6.2.4 命名空间
  • 6.2.5 运算符重载
  • 6.2.6 枚举类型
  • 6.2.7 接口类
  • 6.2.8 原始指针、空指针与void指针
  • 6.2.9 默认类型转换
  • 第7章 探索Emscripten高级特性
  • 7.1 加入优化流程
  • 7.1.1 使用编译器代码优化策略
  • 7.1.2 使用GCC压缩代码
  • 7.1.3 使用IndexedDB缓存模块对象
  • 7.1.4 其他优化参数
  • 7.2 使用标准库与文件系统
  • 7.2.1 使用基于musl和libc++的标准库
  • 7.2.2 虚拟文件系统结构
  • 7.2.3 打包初始化文件
  • 7.2.4 基本文件系统操作
  • 7.2.5 懒加载
  • 7.2.6 Fetch API
  • 7.3 处理浏览器事件
  • 7.3.1 事件注册函数
  • 7.3.2 事件回调函数
  • 7.3.3 通用类型与返回值类型
  • 7.3.4 常用事件
  • 7.4 基于EGL、OpenGL、SDL和OpenAL的多媒体处理
  • 7.4.1 使用EGL与OpenGL处理图形
  • 7.4.2 使用SDL处理图形
  • 7.4.3 使用OpenAL处理音频
  • 7.5 调试WebAssembly应用
  • 7.5.1 编译器的调试信息
  • 7.5.2 使用调试模式
  • 7.5.3 手动跟踪
  • 7.5.4 其他常用编译器调试选项
  • 第8章 WebAssembly综合实践、发展与未来
  • 8.1 DIP综合实践应用
  • 8.1.1 应用描述
  • 8.1.2 滤镜与卷积
  • 8.1.3 基本组件类型与架构
  • 8.1.4 编写基本页面骨架(HTML与CSS)
  • 8.1.5 编写核心卷积函数(C++)
  • 8.1.6 编写主渲染循环与“胶水”代码(JavaScript)
  • 8.1.7 使用Emscripten编译并运行应用
  • 8.1.8 性能对比
  • 8.2 WebAssembly常用工具集
  • 8.2.1 Cheerp
  • 8.2.2 Webpack 4
  • 8.2.3 Go和Rust的WebAssembly实践
  • 8.2.4 Binaryen
  • 8.2.5 WasmFiddle
  • 8.2.6 Wabt
  • 8.2.7 AssemblyScript
  • 8.3 WebAssembly未来草案
  • 8.3.1 GC(垃圾回收)
  • 8.3.2 Multi-Thread(多线程)与原子操作
  • 8.3.3 异常处理
  • 8.3.4 多返回值扩展
  • 8.3.5 ES模块
  • 8.3.6 尾递归
  • 8.3.7 BigInts的双向支持
  • 8.3.8 自定义注释语法
展开全部

评分及书评

评分不足
1个评分

出版方

电子工业出版社

电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。