📜  WebAssembly-简介

📅  最后修改于: 2020-11-02 05:08:49             🧑  作者: Mango


WebAssembly也称为WASM,于2017年首次推出。WebAssembly背后的主要技术公司是Google,Apple,Microsoft,Mozilla和W3C。

嗡嗡声是WebAssembly由于执行速度更快而将替换Javascript,但事实并非如此。 WebAssembly和Javascript旨在共同解决复杂问题。

需要WebAssembly

到目前为止,我们只有能够在浏览器中成功运行的Javascript。有非常繁重的任务,很难使用javascript在浏览器中执行。

仅举几例,它们是图像识别,计算机辅助设计(CAD)应用程序,实时视频增强,VR和增强现实,音乐应用程序,科学可视化和模拟,游戏,图像/视频编辑等。

WebAssembly是一种带有二进制指令的新语言,可以更快地加载和执行。上面提到的任务可以轻松地用高级语言(例如C,C++,Rust等)完成。我们需要一种方法,可以编译C,C++,Rust中的代码并将其在Web浏览器中使用。使用WebAssembly可以实现相同的目的。

在浏览器中加载WebAssembly代码时。然后,浏览器负责转换为处理器可以理解的机器格式。

对于javascript,必须下载,解析代码并将其转换为机器格式。很多时间投入其中,对于诸如此类的繁重任务,我们前面提到的时间可能很慢。

WebAssembly的工作

C,C++和Rust等高级语言被编译成二进制格式,即.wasm和文本格式.wat

WebAssembly的工作

用C,C++和Rust编写的源代码使用编译器编译为.wasm 。您可以利用Emscripten SDK将C / C++编译为.wasm

流程如下-

瓦斯姆

可以使用Emscripten SDK将C / C++代码编译为.wasm 。稍后, .wasm代码可以在html文件中的javascript的帮助下使用以显示输出。

WebAssembly的关键概念

关键概念如下-

模组

模块是由浏览器编译为可执行机器代码的对象。据说模块是无状态的,可以在Windows和Web Worker之间共享。

记忆

WebAssembly中的内存是一个数组缓冲区,用于保存数据。您可以使用Javascript api WebAssembly.memory()分配内存。

WebAssembly中的表是一个类型化的数组,位于WebAssembly内存之外,并且大多数具有对函数的引用。它存储功能的内存地址。

实例

实例是一个具有所有导出功能的对象,可以从javascript调用这些导出功能以在浏览器中执行。