WebAssembly基础
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 <stdio.h>int main() {printf("hello, world!\n");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,即可查看效果
WebAssembly基础相关推荐
- WebAssembly 基础
WebAssembly 介绍 官网介绍: WebAssembly 或者 wasm 是一个可移植.体积小.加载快并且兼容 Web 的全新格式.分析一下 WebAssembly 这个词由 Web 和 As ...
- 基于WebAssembly的前端视频编辑器设计与实现(个人毕设论文删改)
前言: 本来想通过一篇更精简通俗易懂的博文讲述的,但是写到一半发现要讲的东西太多,于是太监了,因此我把个人毕设做了一些删改,把工程源码放在了末尾,发出来供各位参考. (2021年10月8日更新了图片, ...
- 走近 WebAssembly 之调试大法
(点击上方公众号,可快速关注) 作者:周志鹏博客 blog.zhouzhipeng.com/debug-webassembly.html 前言 WebAssembly是什么? 下面是来自官方的定义: ...
- java web运行的快慢_WebAssembly执行速度真的很强悍吗?对微软Edge很无语
原标题:WebAssembly执行速度真的很强悍吗?对微软Edge很无语 Firefox一直在WebAssembly上耕耘,在macOS与Windows上表现的都很好,Chrome 67在WebAss ...
- 基于Thinkphp5+phpQuery 网络爬虫抓取数据接口,统一输出接口数据api
TP5_Splider 一个基于Thinkphp5+phpQuery 网络爬虫抓取数据接口 统一输出接口数据api.适合正在学习Vue,AngularJs框架学习 开发demo,需要接口并保证接口不跨 ...
- Unity3D学习日记3
1.Unity资源商店 解析:Unity资源商店中提供了多种游戏媒体资源供下载和购买,例如人物模型.动画.粒子特效.纹理.游戏创作工具.音乐特效.功能脚本和其他类拓展插件等. 2.Unity3D脚本中 ...
- 基础为零?如何将 C++ 编译成 WebAssembly
作者| 张翰(门柳) 出品|阿里巴巴新零售淘系技术部 本文知识点提炼: 1.如何使用 Emscripten 把 C++ 编译成 wasm. 2.如何使用 wasi-sdk 把 C++ 编译成 wasm ...
- WebAssembly上手:基础指南
只需 Web 开发的一般知识就能通过本文轻松上手 WebAssembly.要通过本文的可运行代码示例尝试 WebAssembly,你只需要一个编辑器.任意现代浏览器和本文随附的,带有 C 和 Rust ...
- WebAssembly的基础使用方法
什么是WebAssembly(wasm)? WebAssembly或wasm是一种新的,便携式的,大小和加载时间效率高的格式,适合编译到Web上.-WebAssembly设计 一种二进位表示的新语言, ...
最新文章
- Video Player调研
- 通用权限管理系统组件 (GPM - General Permissions Manager) - 支持请求
- 《Python深度学习》第四章的实验结果图汇总
- Linux I/O 模型(待修改)
- 入职新公司,如何快速上手公司业务?
- (学习笔记)Oracle约束
- iOS-关于iOS开发架构的搭建
- 新视野大学英语(第三版)读写教程4答案
- SIFT(Scale Invariant Feature Transform) 算法小结及实验
- 抖音视频什么时候投放dou+最好,dou+投放实战总结:国仁网络资讯
- Excel 合并当前工作簿全部工作表的VBA代码
- INVECAS发布全球首创的HDMI(R)2.1,搭载HDCP2.3芯片和IP解决方案,适用于电视、AVR、条形音响和机顶盒
- 2021年CKA考试真题(一)CKA考试介绍
- Java8使用jdeps —— Java类依赖性分析器
- Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划
- 关于Mysql服务无法启动的问题
- PyPDF2--如何使用python操作你的PDF文档
- 从系统托盘中删除Synaptics触摸板图标
- 29【定时器和延时器】
- Excel TEXT函数怎么把数值转换成文本