返回首页
苏宁会员
购物车 0
易付宝
手机苏宁

服务体验

店铺评分与同行业相比

用户评价:----

物流时效:----

售后服务:----

  • 服务承诺: 正品保障
  • 公司名称:
  • 所 在 地:
本店所有商品

  • [正版]面向WebAssembly编程:应用开发方法与实践 丁尔男 柴树杉 使用C/C++/Rust等高级语言开发We
  • 正版图书!品质保证!默认发最新版本!收藏店铺可享优先发货!
    • 作者: 丁尔男,柴树杉著
    • 出版社: 机械工业出版社
    • 出版时间:2021-01
    送至
  • 由""直接销售和发货,并提供售后服务
  • 加入购物车 购买电子书
    服务

    看了又看

    商品预定流程:

    查看大图
    /
    ×

    苏宁商家

    商家:
    友一个文化制品专营店
    联系:
    • 商品

    • 服务

    • 物流

    搜索店内商品

    商品分类

    商品参数
    • 作者: 丁尔男,柴树杉著
    • 出版社:机械工业出版社
    • 出版时间:2021-01
    • 开本:16开
    • ISBN:9786560491533
    • 版权提供:机械工业出版社

            铺公告

      为保障消费者合理购买需求及公平交易机会,避免因非生活消费目的的购买货囤积商品,抬价转售等违法行为发生,店铺有权对异常订单不发货且不进行赔付。异常订单:包括但不限于相同用户ID批量下单,同一用户(指不同用户ID,存在相同/临近/虚构收货地址,或相同联系号码,收件人,同账户付款人等情形的)批量下单(一次性大于5本),以及其他非消费目的的交易订单。

    温馨提示:请务必当着快递员面开箱验货,如发现破损,请立即拍照拒收,如验货有问题请及时联系在线客服处理,(如开箱验货时发现破损,所产生运费由我司承担,一经签收即为货物完好,如果您未开箱验货,一切损失就需要由买家承担,所以请买家一定要仔细验货)。

      关于退货运费:对于下单后且物流已发货货品在途的状态下,原则上均不接受退货申请,如顾客原因退货需要承担来回运费,如因产品质量问题(非破损问题)可在签收后,联系在线客服。

     

     

    内容简介

    这是一部讲解如何用高级编程语言开发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

    1.1 WebAssembly的诞生背景2

    1.2 Web的第4种语言3

    1.3 本章小结4

    第2章 Emscripten快速入门5

    2.1 安装Emscripten5

    2.1.1 使用emsdk命令行工具安装Emscripten5

    2.1.2 在Docker环境中安装Emscripten7

    2.1.3 校验安装8

    2.2 你好,世界!8

    2.2.1 生成.wasm文件8

    2.2.2 运行9

    2.2.3 使用Emscripten生成测试页面11

    2.3 胶水代码初探12

    2.3.1 WebAssembly汇编模块载入12

    2.3.2 导出函数封装14

    2.3.3 异步加载16

    2.4 编译目标及编译流程17

    2.4.1 编译目标的选择17

    2.4.2 编译流程18

    2.5 示例:放大镜 19

    2.5.1 模板程序19

    2.5.2 静态的放大镜20

    2.5.3 动态的放大镜21

    2.6 本章小结24

    第3章 C与JavaScript互操作25

    3.1 JavaScript调用C函数25

    3.1.1 定义函数导出宏25

    3.1.2 在JavaScript中调用C导出函数27

    3.2 JavaScript函数注入C环境30

    3.2.1 C函数声明30

    3.2.2 JavaScript实现C函数30

    3.2.3 闭包限制及解决办法32

    3.2.4 JavaScript函数注入C环境的优缺点33

    3.3 单向透明的内存模型33

    3.3.1 Module.buffer34

    3.3.2 Module.HEAPX34

    3.3.3 在JavaScript中访问C/C++环境内存35

    3.4 JavaScript与C/C++交换数据37

    3.4.1 参数及返回值37

    3.4.2 通过内存交换数据39

    3.4.3 在JavaScript中分配内存42

    3.4.4 字符串43

    3.5 EM_ASM系列宏44

    3.5.1 EM_ASM44

    3.5.2 EM_ASM_/EM_ASM_DOUBLE45

    3.5.3 EM_ASM_INT_V/EM_ASM_DOUBLE_V46

    3.6 emscripten_run_script()系列函数47

    3.6.1 emscripten_run_script()47

    3.6.2 emscripten_run_script_int()48

    3.6.3 emscripten_run_script_string()49

    3.7 ccall()/cwrap()50

    3.7.1 ccall()51

    3.7.2 cwrap()53

    3.7.3 ccall()/cwrap()的潜在风险53

    3.8 本章小结56

    第二篇 方法篇

    第4章 Emscripten运行时58

    4.1 main()函数与生命周期58

    4.2 消息循环61

    4.2.1 emscripten_set_main_loop()61

    4.2.2 消息循环的暂停、继续及终止63

    4.3 文件系统65

    4.3.1 Emscripten虚拟文件系统架构66

    4.3.2 基于MEMFS的打包文件系统67

    4.3.3 NODEFS文件系统71

    4.3.4 IDBFS72

    4.4 内存管理73

    4.4.1 内存容量/栈容量73

    4.4.2 可变内存74

    4.4.3 内存分配器75

    4.5 Module定制75

    4.6 示例:人脸检测78

    4.6.1 facedetect_cnn()函数78

    4.6.2 facedetect_cnn()函数再封装79

    4.6.3 读取图像并检测人脸81

    4.6.4 基于SDL显示IplImage图像82

    4.7 本章小结84

    第5章 WebAssembly友好的一般性方法85

    5.1 消息循环分离85

    5.1.1 emscripten_set_main_loop()的不足85

    5.1.2 在JavaScript中创建定时循环86

    5.2 内存对齐88

    5.2.1 asm.js88

    5.2.2 wasm91

    5.2.3 避免及检测未对齐的内存操作92

    5.3 使用C接口导出C++对象93

    5.4 C++对象生命周期管理97

    5.4.1 引用计数97

    5.4.2 AddRef()/Release()使用规则98

    5.4.3 导出AddRef()/Release()100

    5.5 使用C接口注入JavaScript对象103

    5.5.1 创建JavaScript对象/ID表103

    5.5.2 注入JavaScript对象的生命周期管理104

    5.6 小心64位整型数107

    5.6.1 WebAssembly原生支持int64108

    5.6.2 导出函数包含int64108

    5.6.3 注入函数包含int64110

    5.7 文件系统的缺陷111

    5.8 本章小结112

    第6章 网络I/O113

    6.1 XMLHttpRequest113

    6.1.1 XMLHttpRequest对象使用简介113

    6.1.2 XMLHttpRequest对象的C接口封装115

    6.1.3 扩展回调处理116

    6.2 WebSocket119

    6.2.1 创建WebSocket测试服务120

    6.2.2 在JavaScript中使用WebSocket121

    6.2.3 WebSocket对象的C接口封装122

    6.3 本章小结126

    第7章 并发执行127

    7.1 JavaScript中的并发模型127

    7.2 在Worker中使用Emscripten129

    7.3 pthread线程132

    7.3.1 原子操作132

    7.3.2 pthread示例134

    7.3.3 在浏览器环境运行pthread示例136

    7.4 本章小结137

    第8章 GUI及交互138

    8.1 Canvas138

    8.2 鼠标事件141

    8.3 键盘事件144

    8.4 Life游戏145

    8.4.1 Life简介146

    8.4.2 设计要求146

    8.4.3 Life游戏C代码146

    8.4.4 Life游戏网页代码150

    8.4.5 运行Life151

    8.5 本章小结152

    第三篇 前沿篇

    第9章 Rust和WebAssembly154

    9.1 Rust入门154

    9.1.1 安装Rust开发环境154

    9.1.2 你好,世界155

    9.1.3 Cargo管理工程155

    9.1.4 本地文档156

    9.2 你好,WebAssembly157

    9.2.1 安装WebAssembly开发环境157

    9.2.2 打印“你好,WebAssembly”159

    9.3 导入和导出函数159

    9.3.1 导出main()函数159

    9.3.2 导入宿主打印函数161

    9.3.3 导出自定义函数162

    9.4 打印命令行参数163

    9.4.1 打印字符串163

    9.4.2 准备导入env_print_str()函数164

    9.4.3 向Rust传入字符串165

    9.4.4 命令行参数封装168

    9.4.5 传入命令行参数170

    9.5 no_std171

    9.5.1 输出文件的大小171

    9.5.2 通过no_std裁剪标准172

    9.5.3 库173

    9.6 嵌入C代码174

    1
    • 商品详情
    • 内容简介

    售后保障

    最近浏览

    猜你喜欢

    该商品在当前城市正在进行 促销

    注:参加抢购将不再享受其他优惠活动

    x
    您已成功将商品加入收藏夹

    查看我的收藏夹

    确定

    非常抱歉,您前期未参加预订活动,
    无法支付尾款哦!

    关闭

    抱歉,您暂无任性付资格

    此时为正式期SUPER会员专享抢购期,普通会员暂不可抢购