Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

深入浅出WebAssembly PDF 下载


分享到:
时间:2022-09-17 08:39来源:未知 作者:小锋  侵权举报
WebAssembly是一种新的二进制格式,它可以方便地将C/C 等静态语言的代码快速地“运行”在浏览器中,这一特性为前端密集计算场景提供了无限可能。不仅如此,通过WebAssembly技术,我们还
失效链接处理
深入浅出WebAssembly  PDF 下载


下载地址:
版权归出版社和原作者所有,链接已删除,请购买正版

用户下载说明:

电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
http://product.dangdang.com/11237091044.html
 

相关截图:



资料简介:
WebAssembly是一种新的二进制格式,它可以方便地将C/C 等静态语言的代码快速地“运行”在浏览器中,这一特性为前端密集计算场景提供了无限可能。不仅如此,通过WebAssembly技术,我们还可以将基于Unity等游戏引擎开发的大型游戏快速地移植到Web端。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技术感兴趣的人员。


资料目录:

章漫谈WebAssembly发展史1
 
1.1JavaScript的发展和弊端1
 
1.1.1快速发展与基准测试1
 
1.1.2Web新时代与不断挑战8
 
1.1.3无法跨越的“阻碍”11
 
1.1.4ChromeV8引擎链路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.3Shunting-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动态链接(DynamicLinking)204
 
3.1.1ELF206
 
3.1.2符号重定向(SymbolRelocation)212
 
3.1.3GOT(GlobalOffsetTable,全局偏移表)225
 
3.1.4PLT(ProcedureLookupTable,过程查询表)229
 
3.1.5基于表的Wasm模块动态链接233
 
3.2单指令多数据流(SIMD)237
 
3.2.1SIMD应用239
 
3.2.2并行与并发243
 
3.2.3费林分类法244
 
3.2.4SIMD.js&TC39246
 
3.2.5WebAssembly上的SIMD扩展248
 
第4章深入LLVM与WAT250
 
4.1LLVM——底层虚拟机250
 
4.1.1传统的编译器架构251
 
4.1.2LLVM中间表示层252
 
4.1.3基于LLVM的编译器架构254
 
4.1.4LLVM优化策略256
 
4.1.5LLVM命令行工具261
 
4.1.6WebAssembly与LLVM268
 
4.2基于LLVM定义新的编程语言272
 
4.2.1图灵完备与DSL276
 
4.2.2简易词法分析器280
 
4.2.3RDP与OPP算法287
 
4.2.4AST(抽象语法树)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.3WAT315
 
4.3.1S-表达式316
 
4.3.2WAT/Wasm与Binary-AST318
 
4.3.3其他与设计原则320
 
第5章Emscripten基础应用321
 
5.1利器——Emscripten工具链321
 
5.1.1Emscripten发展历史321
 
5.1.2Emscripten组成结构323
 
5.1.3Emscripten下载、安装与配置325
 
5.1.4运行测试套件329
 
5.1.5编译到ASM.js330
 
5.2连接C/C++与WebAssembly332
 
5.2.1构建类型333
 
5.2.2Emscripten运行时环境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.6FetchAPI473
 
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.1DIP综合实践应用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.2WebAssembly常用工具集521
 
8.2.1Cheerp521
 
8.2.2Webpack4523
 
8.2.3Go和Rust的WebAssembly实践525
 
8.2.4Binaryen528
 
8.2.5WasmFiddle529
 
8.2.6Wabt530
 
8.2.7AssemblyScript530
 
8.3WebAssembly未来草案530
 
8.3.1GC(垃圾回收)531
 
8.3.2Multi-Thread(多线程)与原子操作531
 
8.3.3异常处理531
 
8.3.4多返回值扩展531
 
8.3.5ES模块531
 
8.3.6尾递归532
 
8.3.7BigInts的双向支持532
 
8.3.8自定义注释语法532
 
------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐