WebAssembly原理与核心技术

WebAssembly原理与核心技术

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

资深Wasm技术和虚拟机技术专家撰写,从原理、技术、规范3维度带你全面解读Wasm。

内容简介

WebAssembly是栈式虚拟机和字节码技术的最新应用,在Web开发、后端开发、区块链等领域大显身手,越来越受欢迎。

本书是WebAssembly入门和进阶的必读书,它不仅对WebAssembly的工作原理、核心技术和规范进行了全面的剖析和解读,而且给出了实现WebAssembly解释器和AOT编译器的思路和代码。

通过阅读本书,你不仅可以理解WebAssembly核心原理,还可以学习如何实现WebAssembly解释器和AOT编译器。即收获了“鱼”,又学会了“渔”。

作者简介

作者张秀宏,服务器开发工程师,有多年的Java和游戏服务器开发和架构经验,对高级语言虚拟机有非常深入的研究。曾在EA、乐元素等游戏公司担任高级服务器工程师,现任某创业公司架构师。

章节目录

版权信息

前言

第一部分 概述

第1章 Wasm介绍

1.1 Wasm简史

1.2 Wasm简介

1.3 准备工作

1.4 你好Wasm

1.5 本章小结

第二部分 二进制和文本格式

第2章 二进制格式

2.1 二进制格式介绍

2.1.1 Wasm二进制格式总体结构

2.1.2 索引空间

2.1.3 实体类型

2.2 二进制格式分析

2.2.0 魔数和版本号

2.2.1 类型段

2.2.2 导入段

2.2.3 函数段

2.2.4 表段

2.2.5 内存段

2.2.6 全局段

2.2.7 导出段

2.2.8 起始段

2.2.9 元素段

2.2.10 代码段

2.2.11 数据段

2.2.12 自定义段

2.3 二进制格式解码

2.3.1 LEB128介绍

2.3.2 解码基本类型

2.3.3 解码向量类型

2.3.4 处理tag

2.3.5 解码代码项和表达式

2.3.6 解码整体结构

2.3.7 处理错误情况

2.4 实现dump命令

2.5 本章小结

第3章 指令集

3.1 指令集介绍

3.1.1 操作码

3.1.2 助记符

3.1.3 立即数

3.1.4 操作数

3.2 指令分析

3.2.1 数值指令

3.2.2 变量指令

3.2.3 内存指令

3.2.4 结构化控制指令

3.2.5 跳转指令

3.2.6 函数调用指令

3.3 指令解码

3.4 完善dump命令

3.5 本章小结

第4章 文本格式

4.1 基本结构

4.1.1 类型域

4.1.2 导入和导出域

4.1.3 函数域

4.1.4 表域和元素域

4.1.5 内存域和数据域

4.1.6 全局域

4.1.7 起始域

4.2 指令

4.2.1 普通形式

4.2.2 折叠形式

4.3 本章小结

第三部分 虚拟机和解释器

第5章 操作数栈

5.1 操作数栈

5.2 虚拟机

5.2.1 指令循环

5.2.2 指令分派

5.3 参数指令

5.3.1 drop指令

5.3.2 select指令

5.4 数值指令

5.4.1 常量指令

5.4.2 测试指令

5.4.3 比较指令

5.4.4 一元算术指令

5.4.5 二元算术指令

5.4.6 类型转换指令

5.5 本章效果

5.6 本章小结

第6章 内存

6.1 内存介绍

6.2 内存实现

6.3 内存指令

6.3.1 size和grow指令

6.3.2 加载指令

6.3.3 存储指令

6.4 本章效果

6.5 本章小结

第7章 函数调用(上)

7.1 函数调用介绍

7.2 函数调用实现

7.2.1 增强操作数栈

7.2.2 添加调用栈

7.2.3 增强虚拟机

7.2.4 call指令

7.3 局部变量指令

7.3.1 local.get指令

7.3.2 local.set指令

7.3.3 local.tee指令

7.4 全局变量指令

7.4.1 global.get指令

7.4.2 global.set指令

7.5 本章效果

7.6 本章小结

第8章 控制指令

8.1 控制指令介绍

8.1.1 跳转标签

8.1.2 跳转标签索引

8.1.3 块类型

8.2 控制指令实现

8.2.1 block和loop指令

8.2.2 if指令

8.2.3 br指令

8.2.4 br_if指令

8.2.5 br_table指令

8.2.6 return指令

8.2.7 unreachable和nop指令

8.3 本章效果

8.4 本章小结

第9章 函数调用(下)

9.1 本地函数调用

9.1.1 本地函数介绍

9.1.2 统一两种函数

9.1.3 调用本地函数

9.1.4 链接本地函数

9.1.5 测试本节代码

9.2 间接函数调用

9.2.1 间接函数调用介绍

9.2.2 实现表

9.2.3 初始化表

9.2.4 call_indirect指令

9.2.5 测试本节代码

9.3 本章小结

第10章 链接和实例化

10.1 定义实例接口

10.2 实现实例接口

10.2.1 函数

10.2.2 表

10.2.3 全局变量

10.2.4 虚拟机

10.3 实例化模块

10.4 本章效果

10.5 本章小结

第11章 错误处理和验证

11.1 各种错误

11.1.1 解码错误

11.1.2 结构错误

11.1.3 实例化错误

11.1.4 运行时错误

11.2 验证整体结构

11.3 验证函数字节码

11.3.1 数据结构

11.3.2 操作数栈

11.3.3 控制栈

11.3.4 验证指令

11.4 本章效果

11.5 本章小结

第四部分 进阶

第12章 编译为Wasm

12.1 控制指令

12.2 参数指令

12.3 变量指令

12.4 内存指令

12.5 数值指令

12.6 本章小结

第13章 AOT编译器

13.1 AOT介绍

13.2 编译模块

13.3 编译函数

13.3.1 内部函数

13.3.2 外部函数

13.3.3 导出函数

13.3.4 辅助方法

13.4 编译指令

13.4.1 参数指令

13.4.2 变量指令

13.4.3 内存指令

13.4.4 数值指令

13.4.5 结构化控制指令

13.4.6 跳转指令

13.4.7 函数调用指令

13.5 本章效果

13.6 本章小结

第14章 提案和前景

14.1 提案

14.1.1 多块内存

14.1.2 内存块操作

14.1.3 引用类型

14.1.4 尾递归调用

14.1.5 异常处理

14.1.6 多线程支持

14.1.7 其他提案

14.2 前景

附录A Wasm指令表

附录B 二进制格式

附录C WAT语法

WebAssembly原理与核心技术是2020年由机械工业出版社华章分社出版,作者张秀宏。

得书感谢您对《WebAssembly原理与核心技术》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
Flink核心技术:源码剖析与特性开发 电子书
本书从设计思想和特性开发两个视角,对Flink框架进行介绍。
RFID原理与应用 电子书
本书讲解了射频识别(RFID)系统的概念、工作原理与应用实例。内容包括:RFID技术概述、RFID系统的构成及工作原理、RFID使用频率和电磁波的工作特性、RFID天线技术、RFID射频前端、RFID编码与调制、RFID防碰撞技术、RFID系统数据传输的安全性、RFID的标准体系、物联网的典型架构(EPC系统)、RFID的应用实例。
Flink原理与实践 电子书
本书围绕大数据流处理领域,介绍FlinkDataStreamAPI、时间和窗口、状态和检查点、TableAPI&SQL等知识。书中以实践为导向,使用大量真实业务场景案例来演示如何基于Flink进行流处理。
ERP原理与应用 电子书
本书是以易飞ERP软件为平台,以一虚拟企业的ERP项目实施与应用过程为主线,对课程内容进行整合、序化,在充分考虑ERP工程师职业能力认证考核内容的基础上,将课程内容序化为认识ERP、ERP供应链管理、ERP生产制造管理、ERP财务管理四个模块。
SpringSecurity原理与实战 电子书
本书主要介绍基于Spring Security构建系统安全性的技术体系和工程实践。