资讯专栏INFORMATION COLUMN

WebAssembly基础

The question / 3180人阅读

摘要:具有非常高安全性,它在一个沙箱环境中执行,同时遵守浏览器的同源策略和权限规则。的关键部分概览表示由浏览器编译为可执行机器代码的二进制文件。一种引用类型的可变素组例如函数,无法将其作为原始字节存储在存储器中。

WebAssembly定义

WebAssembly是一种的语言,可以在现代浏览器环境中运行,并提供了功能和性能上的优势。可以将其它语言,如C/C++等,编译成Assembly格式的代码,然后在浏览器中运行。

WebAssembly的目标

WebAssembly代码可以获得非常快的运行速度。

增加可读性,WebAssembly还有可读的文本格式,易于编写,调试和阅读。

WebAssembly具有非常高安全性,它在一个沙箱环境中执行,同时遵守浏览器的同源策略和权限规则。

和其它Web语言有很好的兼容性

WebAssembly工作原理

Web平台有两不分组成组成:a)执行应用程序的虚拟机,b)Web API,例如(DOM,WebGL等)。为了让浏览器支持Assembly,虚拟机实现了加载两种语言(javascript,Assembly)的功能,javascript可以同过Web API引入WebAssembly代码,WebAssembly可以导入和异步执行javascript的模块。

WebAssembly的关键部分概览

module:表示由浏览器编译为可执行机器代码的WebAssembly二进制文件。 对于一个模块是无状态的,因此,像Blob一样,可以显式缓存在IndexedDB中,也可以在windows和worker之间共享(通过postMessage())。 A模块像ES2015模块一样声明导入和导出。

Memory:一个可调整大小的ArrayBuffer,它包含可以被WebAssembly的低级内存访问指令读取和写入的线性字节数组。

Table:一种引用类型的可变素组(例如函数),无法将其作为原始字节存储在存储器中。

Instance:module,Memory,Table等得运行实例

一个C++程序转化为Assembly的例子

安装Emscripten

编写c++程序,例如:

#include 

int main() {
  printf("hello, world!
");
  return 0;
}

将C++命名,此处命名为hello.c,然后编译输出html代码,编译命令如下:

emcc hello.c -s WASM=1 -o hello.html

编译输出文件如下:

`hello.html
hello.js
hello.js.temp.js`

用浏览器打开hello.html,即可查看效果

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/83233.html

相关文章

  • WebAssembly 为什么比 asm.js 快?

    摘要:并且于年月日,四个主要的浏览器一致同意宣布的版本已经完成,即将推出一个浏览器可以搭载的稳定版本。因此本文着重介绍为什么比更快。本文主要表达的是为什么应该是更快的。则不同,它是由几大主要的浏览器厂商共同设计的。 作者:Alon Zakai 编译:胡子大哈 翻译原文:http://huziketang.com/blog/posts/detail?postId=58ce80d2a6d8a0...

    Binguner 评论0 收藏0
  • 前端每周清单半年盘点之 WebAssembly

    摘要:前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点分为新闻热点开发教程工程实践深度阅读开源项目巅峰人生等栏目。利用降低三倍加载速度自推出之后,很多开发者都开始尝试在小型项目中实践,不过尚缺大型真实案例比较。 前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目...

    Alan 评论0 收藏0
  • 图说 WebAssembly(四):快速入门

    摘要:本文是图说系列文章的第四篇。它们表示一种可以在普遍流行机器上高效使用的指令集合。这是因为是一种称为堆栈机器。尽管是根据堆栈机器来设计的,但是这并不是它在真实物理机器上工作的方式。这些内容称为段。 本文是图说 WebAssembly 系列文章的第四篇。如果您还未阅读之前的文章,建议您从第一篇入手。 WebAssembly 是一种使得除 JavaScript 以外的编程语言也能运行在网页上...

    BoYang 评论0 收藏0
  • WebAssembly介绍

    摘要:工作原理分点介绍官方解读它可以从各类现有的其他高级语言写的业务库编译而来,比如下文提到的库,就是一种语言编写的刚体动力学与碰撞检测计算的库。 1、WebAssembly工作原理 分点介绍 官方解读 它可以从各类现有的其他高级语言写的业务库编译而来,比如下文提到的bullet库,就是一种C++语言编写的刚体动力学与碰撞检测计算的库。根据调研,还有Haskell、Go、C#的语言的一些We...

    appetizerio 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<