展开全部

主编推荐语

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

内容简介

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

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

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

目录

  • 版权信息
  • 前言
  • 第一部分 概述
  • 第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语法
展开全部

评分及书评

评分不足
1个评分

出版方

机械工业出版社有限公司

机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。