WebAssembly基础
来源:互联网 发布:必读书 知乎 编辑:程序博客网 时间:2024/06/06 01:08
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,即可查看效果
阅读全文
0 0
- WebAssembly基础
- WebAssembly
- Emscripten-WebAssembly
- WebAssembly入门介绍书目录
- WebAssembly,开发者赢了
- PNaCl 再见,WebAssembly 你好!
- WebAssembly,Web的新时代
- WebAssembly,Web的新时代
- WebAssembly,Web的新时代
- WebAssembly 实践:如何写代码
- WebAssembly,Web的新时代
- WebAssembly,Web的新时代
- WebAssembly:随风潜入夜
- 探究webassembly(1):初认识
- WebAssembly,Web的新时代
- WebAssembly 实践:如何写代码
- Courser FOR .NET2005 WebAssembly开发计划
- 如何在浏览器中使用WebAssembly特性
- 【BZOJ】2152 聪聪可可 点分治
- 俄罗斯方块 java小游戏
- hdu-4501-小明系列故事——买年货-dp-java
- poj 1328 Radar Installation
- 功能测试基础知识
- WebAssembly基础
- 两个队列实现一个栈
- Redis 图形化监控方案 RedisLive 介绍
- STL算法
- CSP 火车购票 2016 09 2
- EntityFramework 系列
- 根据输入时间间隔判断EditText是否输入完成
- Python多线程鸡年不鸡肋
- 找到一本不错的Linux电子书,附《Linux就该这么学》章节目录。