| 失效链接处理 | 
| 面向WebAssembly编程:应用开发方法与实践 PDF 下载 
	下载地址: 
		版权归出版社和原作者所有,链接已删除,请购买正版 用户下载说明: 
			电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍: 
			http://product.dangdang.com/29168336.html 相关截图:  资料简介: 
	这是一部讲解如何用高级编程语言开发WebAssembly应用的著作,由国内WebAssembly领域的先驱者和布道者撰写。 
	【全书一共10章,分为三个部分】 
	第壹部分 基础篇(第1~3章) 
	首先介绍了WebAssembly的基础和工具链Emscripten的用法,然后详细讲解了使用 C/C 语言和Emscripten开发WebAssembly模块的方法。 
	第二部分 方法篇(第4~8章) 
	对 Emscripten 运行时、WebAssembly 友好的一般性方法、网络 I/O、并发执行、GUI 及交互等知识点展开了深入的讨论。 
	第三部分 前沿篇(第9~10章) 
	详细讲解了WASI以及如何使用 Rust 语言开发 WebAssembly模块和 WASI 应用。 资料目录: 
	第1章 认识WebAssembly2 
	11 WebAssembly的诞生背景2 
	12 Web的第4种语言3 
	13 本章小结4 
	第2章 Emscripten快速入门5 
	21 安装Emscripten5 
	211 使用emsdk命令行工具安装Emscripten5 
	212 在Docker环境中安装Emscripten7 
	213 校验安装8 
	22 你好,世界!8 
	221 生成wasm文件8 
	222 运行9 
	223 使用Emscripten生成测试页面11 
	23 胶水代码初探12 
	231 WebAssembly汇编模块载入12 
	232 导出函数封装14 
	233 异步加载16 
	24 编译目标及编译流程17 
	241 编译目标的选择17 
	242 编译流程18 
	25 示例:放大镜特效19 
	251 模板程序19 
	252 静态的放大镜20 
	253 动态的放大镜21 
	26 本章小结24 
	第3章 C与JavaScript互操作25 
	31 JavaScript调用C函数25 
	311 定义函数导出宏25 
	312 在JavaScript中调用C导出函数27 
	32 JavaScript函数注入C环境30 
	321 C函数声明30 
	322 JavaScript实现C函数30 
	323 闭包限制及解决办法32 
	324 JavaScript函数注入C环境的优缺点33 
	33 单向透明的内存模型33 
	331 Modulebuffer34 
	332 ModuleHEAPX34 
	333 在JavaScript中访问C/C 环境内存35 
	34 JavaScript与C/C 交换数据37 
	341 参数及返回值37 
	342 通过内存交换数据39 
	343 在JavaScript中分配内存42 
	344 字符串43 
	35 EM_ASM系列宏44 
	351 EM_ASM44 
	352 EM_ASM_/EM_ASM_DOUBLE45 
	353 EM_ASM_INT_V/EM_ASM_DOUBLE_V46 
	36 emscripten_run_script()系列函数47 
	361 emscripten_run_script()47 
	362 emscripten_run_script_int()48 
	363 emscripten_run_script_string()49 
	37 ccall()/cwrap()50 
	371 ccall()51 
	372 cwrap()53 
	373 ccall()/cwrap()的潜在风险53 
	38 本章小结56 
	【第二篇 方法篇】 
	第4章 Emscripten运行时58 
	41 main()函数与生命周期58 
	42 消息循环61 
	421 emscripten_set_main_loop()61 
	422 消息循环的暂停、继续及终止63 
	43 文件系统65 
	431 Emscripten虚拟文件系统架构66 
	432 基于MEMFS的打包文件系统67 
	433 NODEFS文件系统71 
	434 IDBFS72 
	44 内存管理73 
	441 内存容量/栈容量73 
	442 可变内存74 
	443 内存分配器75 
	45 Module定制75 
	46 示例:人脸检测78 
	461 facedetect_cnn()函数78 
	462 facedetect_cnn()函数再封装79 
	463 读取图像并检测人脸81 
	464 基于SDL显示IplImage图像82 
	47 本章小结84 
	第5章 WebAssembly友好的一般性方法85 
	51 消息循环分离85 
	511 emscripten_set_main_loop()的不足85 
	512 在JavaScript中创建定时循环86 
	52 内存对齐88 
	521 asmjs88 
	522 wasm91 
	523 避免及检测未对齐的内存操作92 
	53 使用C接口导出C 对象93 
	54 C 对象生命周期管理97 
	541 引用计数97 
	542 AddRef()/Release()使用规则98 
	543 导出AddRef()/Release()100 
	55 使用C接口注入JavaScript对象103 
	551 创建JavaScript对象/ID表103 
	552 注入JavaScript对象的生命周期管理104 
	56 小心64位整型数107 
	561 WebAssembly原生支持int64108 
	562 导出函数包含int64108 
	563 注入函数包含int64110 
	57 文件系统的缺陷111 
	58 本章小结112 
	第6章 网络I/O113 
	61 XMLHttpRequest113 
	611 XMLHttpRequest对象使用简介113 
	612 XMLHttpRequest对象的C接口封装115 
	613 扩展回调处理116 
	62 WebSocket119 
	621 创建WebSocket测试服务120 
	622 在JavaScript中使用WebSocket121 
	623 WebSocket对象的C接口封装122 
	63 本章小结126 
	第7章 并发执行127 
	71 JavaScript中的并发模型127 
	72 在Worker中使用Emscripten129 
	73 pthread线程132 
	731 原子操作132 
	732 pthread示例134 
	733 在浏览器环境运行pthread示例136 
	74 本章小结137 
	第8章 GUI及交互138 
	81 Canvas138 
	82 鼠标事件141 
	83 键盘事件144 
	84 Life游戏145 
	841 Life简介146 
	842 设计要求146 
	843 Life游戏C代码146 
	844 Life游戏网页代码150 
	845 运行Life151 
	85 本章小结152 
	【第三篇 前沿篇】 
	第9章 Rust和WebAssembly154 
	91 Rust入门154 
	911 安装Rust开发环境154 
	912 你好,世界155 
	913 Cargo管理工程155 
	914 本地文档156 
	92 你好,WebAssembly157 
	921 安装WebAssembly开发环境157 
	922 打印“你好,WebAssembly”159 
	93 导入和导出函数159 
	931 导出main()函数159 
	932 导入宿主打印函数161 
	933 导出自定义函数162 
	94 打印命令行参数163 
	941 打印字符串163 
	942 准备导入env_print_str()函数164 
	943 向Rust传入字符串165 
	944 命令行参数封装168 
	945 传入命令行参数170 
	95 no_std171 
	951 输出文件的大小171 
	952 通过no_std裁剪标准172 
	953 库173 
	96 嵌入C代码174 | 



 
     苏公网安备 32061202001004号
苏公网安备 32061202001004号


 
    