深入浅出WebAssembly (于航) (z-library.sk, 1lib.sk, z-lib.sk)

Author: 于航

代码

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技术感兴趣的人员。

📄 File Format: PDF
💾 File Size: 16.5 MB
8
Views
0
Downloads
0.00
Total Donations

📄 Text Preview (First 20 pages)

ℹ️

Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

📄 Page 1
(This page has no text content)
📄 Page 2
作者简介 于航(曜彤) 现就职于阿里巴巴/饿了么事业部(BU),资深前端工程师;上海 交通大学软件工程硕士;FreeCodeCamp(FCC)China上海社区负责人; QCon(2017)上海前端专场讲师。 2016年开始研究WebAssembly技术,2017年加入WebAssembly中国 社区。同年加入官方WCG(W3C Community Group),定期参与WCG组织 的各种线上视频研讨会议,在跟进WebAssembly最新发展的同时,也为 WebAssembly的标准化提出自己的建议和意见。生活中喜欢弹钢琴、演 讲与分享。主要技术研究方向为Web前端与基础设施架构、 WebAssembly、LLVM以及编译器设计等相关领域。 个人GitHub(https://github.com/Becavalier/)上开放了一些 WebAssembly相关的开源项目,欢迎参与和贡献。
📄 Page 3
深入浅出WebAssembly 于航 著 电子工业出版社 Publishing House of Electronics Industry 北京·BEIJING
📄 Page 4
内容简介 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技术感兴趣的人员。
📄 Page 5
未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。 版权所有,侵权必究。 图书在版编目(CIP)数据 深入浅出WebAssembly/于航著.—北京:电子工业出版社, 2018.12 ISBN 978-7-121-35217-1 Ⅰ.①深… Ⅱ.①于… Ⅲ.①编译软件 Ⅳ.①TP314 中国版本图书馆CIP数据核字(2018)第238873号 策划编辑:张春雨 责任编辑:葛娜 印刷: 装订: 出版发行:电子工业出版社 北京市海淀区万寿路173信箱 邮编:100036 开本:787×980 1/16 印张:34.25 字数:741千字 版次:2018年12月第1版 印次:2018年12月第1次印刷 定价:128.00元 凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。 若书店售缺,请与本社发行部联系,联系及邮购电话:(010) 88254888,88258888。 质量投诉请发邮件至zlts@phei.com.cn,盗版侵权举报请发邮件 至dbqq@phei.com.cn。 本书咨询联系方式:(010)51260888-819,faq@phei.com.cn。
📄 Page 6
序言(一) I'm very excited to see this book, which covers in great detail a wide range of topics regarding WebAssembly. At this point in time WebAssembly is around one year old-if we count from when it shipped in all major browsers-so it's still fairly young, and the industry is just starting to figure out how revolutionary it is going to be. The potential is there for huge impact, and good documentation is necessary for that. Why is WebAssembly's potential impact so large? For several reasons: WebAssembly helps make the Web fast: WebAssembly is designed for small download size, fast startup, and predictably fast execution. The improvement compared to JavaScript can be very significant, over 2x in many cases, and especially in startup, where the speedup can be 10x. WebAssembly makes the Web competitive with native: WebAssembly is designed as a compiler target for multiple languages. That includes C and C++, and in many areas of software the best implementations are in those languages, for example, game engines like Unity and Unreal, design software like AutoCAD, etc. It would take many years to write
📄 Page 7
comparable products in JavaScript; instead, by compiling them to WebAssembly, the Web can be on par with native platforms today. WebAssembly also fills an industry need outside the Web: WebAssembly is fast, portable, sandboxed, has multiple excellent open source implementations, and just like the Web itself it is an industry standard expected to be supported for the long term. As a result, it's not surprising that WebAssembly is starting to be used outside of browsers, for example in the blockchain and content delivery network (CDN)spaces. Looking back, it's remarkable that our industry has gotten to this point. Just a few years ago, there was no cross-browser collaboration on getting native code to run on the Web. Instead, there were multiple options, including Native Client, Adobe Alchemy, and ASM.js, each with its own advantages and disadvantages. I believe it was the momentum of ASM.js that got the industry to focus on fixing things: ASM.js started out in Firefox, and by virtue of being a subset of JavaScript it immediately ran in all browsers-just not as efficiently. That led top companies in the video game industry and elsewhere to adopt ASM.js, together with Emscripten, the open source compiler to JavaScript that I started in 2010, and which could emit ASM.js. That adoption led to ASM.js support in Edge and later Chrome, at which point there was consensus that the industry should produce a proper standard in this space, which turned into WebAssembly.
📄 Page 8
As the spec was designed and implementations started to appear, we added WebAssembly support to Emscripten, which allowed people to compile to both ASM.js and WebAssembly by just flipping a switch, making it easy for people to use the new technology. Finally, as of May 2018 Emscripten emits WebAssembly by default, and today WebAssembly has robust and stable support both in all major browsers and in the toolchain projects that emit it. It's been a complicated path to get here, but the future looks bright. It is especially worth noting that WebAssembly is expected to add features like multithreading, SIMD, GC, and others, which will open up even more interesting opportunities. Alon Zakai Alon is a researcher at Mozilla, where he works on compile-to-Web technologies. Alon co-created WebAssembly and ASM.js, and created the Emscripten and Binaryen open source projects which are part of the primary WebAssembly compiler toolchain. 译文: 我很高兴能够看到这本书的出版,作者在书中详细地介绍了有关 WebAssembly的各种主题。在这本书即将出版之际,WebAssembly差不 多一岁了——如果从所有主流的Web浏览器开始支持WebAssembly算 起,那么这项技术仍然相当年轻,业界也才刚刚开始意识到它将多么 具有革命性。WebAssembly所拥有的潜力将会在未来对IT行业产生巨大 的影响,但在此之前,我们需要有优秀的文档。 为什么WebAssembly的潜在影响力会如此之大?有以下几个原因。
📄 Page 9
WebAssembly让Web应用运行更快。WebAssembly是一种新的格式, 文件体积更小,启动速度更快,运行速度也更快。与使用JavaScript 构建的Web应用相比,性能提升非常明显。在大部分情况下,运行速度 提升两倍以上,特别是在启动速度方面,速度提升可以达到10倍。 WebAssembly让Web应用能够与原生应用展开竞争。WebAssembly是 多种编程语言的编译器目标,包括C和C++。基于这些编程语言实现的 优秀软件,如游戏引擎Unity、Unreal,设计软件AutoCAD等,如果使 用JavaScript开发在功能上与这些软件旗鼓相当的产品可能需要很多 年时间。但如果将它们编译成WebAssembly,这些原生应用就可以直接 运行在Web平台上。因此,Web能够与原生平台相提并论。 WebAssembly还在Web领域之外为行业带来了其他可能性。 WebAssembly运行速度快、可移植,提供了沙箱机制,并拥有众多优秀 的开源实现,就像 Web 本身一样,它将会是一个被长期支持的行业标 准。因此,WebAssembly开始被应用在Web浏览器之外的领域也就不足 为奇了,例如区块链和内容分发网络(CDN)。 回首过去,我们的行业能够取得如此的成就已经很了不起了。几 年前,还没有人去进行这种跨浏览器协作,以便让原生代码运行在Web 平台上。不过有很多不同的项目,如Native Client、Adobe Alchemy 和ASM.js,它们都在尝试做同样的事情,只是每个项目都有各自的优 缺点。而我认为,是ASM.js的出现让业界开始专注于解决这个问题 ——ASM.js最初出现在Firefox中,由于它是 JavaScript 的一个子 集,因此可以无缝地运行在所有浏览器中,但运行效率不高。视频游 戏等行业的一些顶级的公司开始尝试使用ASM.js和Emscripten(我在 2010年开源的编译器工具链,可以将代码编译成ASM.js)。由于在这 些领域的广泛应用,Edge以及后来的Chrome均开始支持ASM.js。此 时,人们一致认为这个领域需要一个行业标准,于是WebAssembly出现 了。
📄 Page 10
随着规范设计和实现的不断演进,我们在Emscripten中加入了 WebAssembly支持——只需要在编译命令中加入一个“开关”,便可选 择性地将编译目标设置为ASM.js或WebAssembly,从而可以更轻松地使 用这项新技术。截至2018年5月,Emscripten已经将默认的编译目标类 型改为WebAssembly。今天,WebAssembly已经在所有主流浏览器和工 具链项目中得到了强大而稳定的支持。 一路走来历经坎坷,但未来是光明的。特别值得注意的是, WebAssembly将会在未来添加多线程、SIMD、GC等功能,而这些新特性 将会为我们带来更多有趣的可能性。 Alon Zakai Alon是Mozilla的研究员,从事与“编译到Web平台”相关的研究 工作。Alon参与制定了WebAssembly和 ASM.js 标准,并创建了 Emscripten和Binaryen等开源项目,这些项目都是WebAssembly编译器 工具链的重要组成部分。
📄 Page 11
序言(二) 前端的可玩性变得越来越高,也越来越开放了。现如今,我们不 仅仅能够使用HTML、CSS及Javascript来编写各种跨端的应用程序, WebAssembly的出现还让我们能够以极小的成本来复用其他领域已存在 的成果,以此来弥补JavaScript在其性能与功能上的不足。 我第一次了解到WebAssembly是在2017年年初,当时沉迷于想自己 制作一个基于Node.js环境和树莓派的语音助手。可惜对于语音处理这 个领域来说,JavaScript 还是一个“新人”,大量成熟的实现成果主 要集中在C/C++领域。因此,对于当时对Node.js扩展及C/C++了解甚少 的我来说,这是难度颇大的一个门槛。后来通过Twitter我了解到 WebAssembly的前身是ASM.js,于是我立即尝试使用Emscripten将 Google Assistant的Linux SDK编译为ASM.js,并顺利地在Node.js环 境中进行了调用,那份喜悦我记忆犹新,同时这也极大地提升了我对 这项技术的信心和好感。之后在全民直播的技术提升项目中,我与另 一位研发人员有幸一起对最核心的播放器组件编解码和弹幕协议加密 部分进行WebAssembly化,并成功上线且获得了极大的性能提升。在此 之后,我坚信WebAseembly在未来一定会大有可为。 由于 WebAssembly 是一项极新的技术,因此在最初学习 WebAssembly 的过程中常常觉得知识零碎且不成体系,经常会出现浮 沙驻高塔的情形,感觉入门十分困难。好在本书的出版,让这种情形 不再复现。这本书的好处就是它系统详细地讲述了WebAssembly的方方 面面,由浅入深地构建了整个 WebAssembly 的知识体系。不管你是刚
📄 Page 12
接触 WebAssembly 的新人,还是已经在工作场景中使用WebAssembly 的“老鸟”,通过阅读这本书都能够得到极大的提升。总之,如果你 想了解WebAssembly,或者想补足相关的知识体系,它都是一本不可多 得的案头好书。风雨欲来,如果现在还不进行WebAssembly的技术储 备,更待何时? 最后,我要感谢于航让我第一时间读到如此精彩的作品,同时也 感谢他对WebAssembly在国内的布道普及所做的工作,我相信 WebAssembly的未来一定会更加美好,Web的未来也会更加开放和美 好。 赵洋 赵洋是“全民直播”的前端研发经理,曾经主导全民直播播放器 编解码核心模块及弹幕协议加密过程WebAssembly化。
📄 Page 13
前言 为什么要写这本书 自从JavaScript(后面简称JS)脚本语言于1995年诞生以来,人 们便一直在使用该语言以及HTML与CSS来编写和开发以浏览器为主的 Web应用。近年来,随着JS的不断流行,以及Node.js的出现,JS也开 始逐渐向除Web前端之外的其他领域发力,比如开发后端应用、机器学 习应用乃至硬件编程等领域。但就JS本身而言,所不能无视的是它是 一种弱类型语言,因此,相比于C/C++等强类型语言,尽管Chrome V8、SpiderMonkey等JS引擎已经通过诸如JIT等多种技术手段来优化JS 脚本代码的整体执行效率,但引擎每一次版本优化的迭代速度(所花 费的时间)却远远跟不上当今各类Web应用的复杂程度变化。因此,发 明一种能够从根本上解决该问题的技术便显得迫在眉睫。 曾昙花一现的ASM.js、NaCl与PNaCl等技术都尝试以其各自的方式 来优化Web应用的执行效率,但由于其所存在的诸如“浏览器兼容性不 佳”以及“性能优化不彻底”等问题,导致它们最终并没有被广泛推 广。而在2015年出现的WebAssembly(简称Wasm)技术,便是在吸取了 前者经验教训的基础上而被设计和发明出来的。现在,我们可以看到 该项技术所具有的潜力——W3C成立了专门的WWG工作组来负责Wasm技 术的标准迭代与实现,四大主流浏览器(Google Chrome、FireFox、 Edge和Safari)已经全部实现WebAssembly技术在其MVP标准中制定的 所有特性,C/C++、Go和Rust等高级语言已经逐渐开始支持编译到Wasm
📄 Page 14
格式。这一系列的发展和变化都说明了人们对该项技术所寄予的厚 望。 如今世间百态,万物的发展速度越来越快,而前端技术领域也同 样如此,正在转向技术融合的道路——从2000年专门指代PC网页技术 的Web前端,到2010年左右包含有H5技术的前端,再到融合了移动端甚 至部分后端技术的“大前端”。“前端”一词所指代的技术实体正变 得越来越模糊,已经不单单是指我们所熟知的JS、HTML与CSS了,正如 大学里生物学专业与化学专业两者融合后所形成的“生物化学专业” 一样。技术本身并无好坏之分,只有能否适用于某些业务场景。而技 术的融合则正好能够发挥各项技术本身所具备的优势,达到“1+1> 2”的效果。WebAssembly技术便正是如此。 在写作本书的过程中,笔者曾与WWG的核心成员Alon、Ben和JF等 专家进行了多次交流,以力求保证书中各个技术细节的正确性。但 Wasm技术发展非常之快,比如Emscripten工具链每天都会有众多的 “commit”被提交到主分支中,新版本的发布也是以“周”甚至 “天”为单位进行的。因此,书中所述内容并不保证会在今后的半年 甚至一年时间里都具有时效性。而对于相关内容的时效性变化,笔者 也会在对应于本书的Github仓库(详见“勘误和支持”部分)中及时 进行标注。作为国内第一本介绍WebAssembly的技术书籍,希望本书的 内容能够为国内互联网基础技术的发展做出微小的贡献。虽然现阶段 我们还无法完全地自主创新,或者参与到各项国际技术标准的制定过 程中,但唯有紧跟其脚步,才能够伺机超越。 本书特色 作为市面上第一本深入介绍WebAssembly技术的相关书籍,笔者尝 试由浅入深地来介绍与Wasm 技术相关的各种底层理论知识,以及相关 编译器工具链的内部实现结构与使用方法。WebAssembly 技术从其第 一版 MVP 标准诞生至今,时间过去并不久,但抽象的英文官方文档并
📄 Page 15
不适合各类Web前端开发工程师直接进行阅读。从另一个方面来看,虽 然我们可以在国内如“百度”等中文搜索引擎上找到部分与Wasm实践 相关的介绍文章,但它们大都不会深入该技术标准的背后,探寻该技 术的底层设计本质。因此,本书力求从一些简单的实践入手,深入理 论,再到复杂的具有实际业务价值的综合实践,深入浅出地介绍Wasm 技术发展至今,其背后所涉及的各种底层设计原理与实现、相关工具 链以及未来发展方向等多方面内容。 由于WebAssembly并不是一种单方面的前端或后端技术,因此在本 书中,我们将会随着内容的深入逐渐接触到除Web前端技术之外的诸如 编译原理、V8引擎、LLVM以及Linux动态链接等多方面内容。笔者将会 用最简单和直观的方式,由浅入深地介绍这些平日里可能很少接触到 的技术与特性。 另外,作为市面上首本与WebAssembly相关的纯技术类书籍,笔者 只能从自己所接触到的Wasm相关技术中,按照各个知识点的相关性与 重要性来编排内容。相信读者在读完整本书后,一定会对Wasm技术背 后的实现原理以及相关技术有进一步的理解。 读者对象 Web前端开发人员。 C/C++开发人员。 对WebAssembly技术感兴趣的人员。 本书内容 本书分为8章。 第1章:本书的开篇,主要介绍WebAssembly技术的发展历程,从 PNaCl到ASM.js再到WebAssembly,以及这些技术的基本应用方法与性 能对比。 第2章:介绍WebAssembly的标准上层API、底层堆栈机的设计原 理,以及对MVP标准理论的深入解读。
📄 Page 16
第3章:介绍与WebAssembly标准相关的进阶内容,如单指令多数 据流(SIMD)、动态链接技术等。 第4章:由浅入深地介绍LLVM工具链与WAT可读文本格式的相关内 容。 第5章:从理论走向实践,从本章开始介绍基于Emscripten工具链 开发WebAssembly应用的基本流程,以及工具链的一些基本常用功能和 特性。 第6章:介绍基于Emscripten工具链实现的C/C++语言动态关系绑 定技术。 第7章:从基础走向深入,继续介绍Emscripten工具链所提供的一 些如WebGL支持、虚拟文件系统、应用优化以及事件系统等高级应用特 性。 第8章:构建一个具有实际业务价值的WebAssembly应用,并介绍 现阶段Wasm生态的发展情况,以及在Post-MVP标准中制订的一些 WebAssembly未来发展规划。 勘误和支持 作为市面上首本介绍WebAssembly相关技术的书籍,本书在内容组 织与编排上全部由笔者一人完成。由于笔者的知识水平有限,以及编 写时间仓促,书中难免会出现一些错误或不准确的地方,恳请读者批 评指正。如果你有更多的宝贵意见,欢迎在笔者的 Github 仓库 “Book-DISO-WebAssembly”下创建“issue”,留下你的问题、意见 或建议,笔者会在第一时间给予答复。 致谢 首先要感谢 的是 Emscripten 工具链的作者 Alon ,在编写 Emscripten实践部分时,通过邮件与他沟通了很多技术细节上的内 容。Alon 是 Mozilla 的技术研究员,他主要负责维护和开发 Emscripten与Binaryen两个重要的WebAssembly工具链。Alon平日工作
📄 Page 17
繁忙,非常感谢他能够抽出时间为我指导技术,以及本书内容组织方 面的事情,并为本书写了序言。 其次要感谢的是我的女朋友,工作本已十分繁忙,而写书路漫 漫,这期间曾遇到过无数次难以下笔、不知所措的时刻,而她却总是 能在关键时刻鼓励我陪我共渡难关。在写书的半年多时间里,基本上 所有的双休日都是在家中或咖啡馆度过的,没有时间陪伴,希望能够 和你一同见证本书出版的时刻。 还要感谢的是我的好友以及家人。早早地立下写书的誓言,正是 因为有了你们每天的监督,我才能督促自己完成每天规定的任务,最 终完成本书所有章节的编写。 最后要感谢的是本书的策划编辑张春雨,2017年上海QCon全球软 件开发大会之后,他通过微信找到了作为讲师的我,并给予我这次写 书的机会。但十分抱歉的是,由于我的日程和时间安排不当,导致本 书的出版比预定时间晚了近三个月。但张老师并没有放弃我,这里真 的要说一声:“感谢您对我的信任”。 关于源码 关于本书第3章、第4章和第5章中所涉及的相关源代码示例,读者 可以在笔者Github账号(https://github.com/Becavalier)下的 “Cinderella”和“Book-DISO-WebAssembly”仓库中找到完整的代码 文件。其他章节中所涉及的部分源代码文件,也会被同时整理并放置 到上面的“Book-DISO-WebAssembly”仓库中。 轻松注册成为博文视点社区用户(www.broadview.com.cn),扫 码直达本书页面。 ○提交勘误: 您对书中内容的修改意见可在 提交勘误 处提 交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分 可用来抵扣相应金额)。
📄 Page 18
○交流互动: 在页面下方 读者评论 处留下您的疑问或观点, 与我们和其他读者一同学习交流。 页面入口:http://www.broadview.com.cn/35217
📄 Page 19
目 录 封面 作者简介 扉页 版权信息 序言(一) 序言(二) 前言 第1章 漫谈WebAssembly发展史 1.1 JavaScript的发展和弊端 1.1.1 快速发展与基准测试 1.1.2 Web新时代与不断挑战 1.1.3 无法跨越的“阻碍” 1.1.4 Chrome V8引擎链路 1.2 曾经尝试——ASM.js与PNaCl 1.2.1 失落的ASM.js 1.2.2 古老的NaCl与PNaCl 1.3 新的可能——WebAssembly 1.3.1 改变与颠覆 1.3.2 一路向前,WCG与WWG 第2章 WebAssembly核心原理(基于MVP标准) 2.1 应用与标准Web接口 2.1.1 编译与初始化 2.1.2 验证模块 2.1.3 遇到错误 2.1.4 内存分配 2.1.5 表
📄 Page 20
2.2 深入设计模型——堆栈机 2.2.1 堆栈式虚拟机 2.2.2 逆波兰表达式 2.2.3 Shunting-yard算法 2.2.4 标签与跳转 2.2.5 条件语句 2.2.6 子程序调用 2.2.7 变量 2.2.8 栈帧 2.2.9 堆 2.3 类型检查 2.3.1 数据指令类型 2.3.2 基本流程控制 2.3.3 基于表达式的控制流 2.3.4 类型堆栈的一致性 2.3.5 不可达代码 2.4 二进制编码 2.4.1 字节序——大端模式与小端模式 2.4.2 基于LEB-128的整数编码 2.4.3 基于IEEE-754—2008的浮点数编码 2.4.4 基于UTF-8的字符串编码 2.4.5 模块数据类型 2.4.6 虚拟指令与编码 2.4.7 类型构造符 2.5 模块 2.5.1 段 2.5.2 索引空间 2.5.3 二进制原型结构
The above is a preview of the first 20 pages. Register to read the complete e-book.

💝 Support Author

0.00
Total Amount (¥)
0
Donation Count

Login to support the author

Login Now

Recommended for You

Loading recommended books...
Failed to load, please try again later
Back to List