您当前的位置:首页 > 计算机 > 编程开发 > WebAssembly

智能合约WASM语言 概述

时间:09-28来源:作者:点击数:

1 . 定义

WASM(WebAssembly)是一种运行在 Web 平台上的 汇编代码Assembly。一种小体积,高加载速度的基于堆栈的虚拟机的二进制指令格式。

Web 平台好比虚拟机环境, WebAssembly 可以看做是 Web 平台的 x86 硬件通用指令集,作为一层中间语言,上层对接 Java、Python、Rust、Cpp,让这些语言都能编译成统一的格式,用于 Web 平台运行。

为诸如C、C++等低级源语言提供一个高效的编译目标,使得以各种语言编写的代码都可以以接近原生的速度在web中运行。(所有由传统语言编写的客户端app都可以在web上高效运行)

  • Wasm 被设计为编程语言的可移植编译目标,从而可以在 Web 上为客户端和服务器应用程序进行部署。
  • 四大浏览器厂商(Chrome, Firefox, Edge, Safari)全部默认支持WebAssembly 。
在这里插入图片描述

1.1 Assembly汇编代码

虚拟机层会同时加载和运行两种类型的代码——JavaScript和WebAssembly。一个典型的编译执行链路是 C++、Rust 等编译型语言编译成汇编指令,再转换成二进制机器码由 CPU 读取。其他例如 Java、Python 等语言是使用运行在 x86 一类的通用硬件指令集的虚拟机,再执行自己的“汇编语言”(例如 Java Bytecode)

eg. 中间的十六进制的Binary Code就是WebAssembly

在这里插入图片描述

1.2 与JavaScript

  • WebAssembly模块将能够调用和退出JavaScript上下文,并通过可从JavaScript访问的相同Web API来访问浏览器功能。WebAssembly还支持非Web嵌入。
  • 和JavaScript互补协同工作,作为一个“高性能的JS函数”,提供js api实现互相调用。
  • 可以取代部分 JavaScript 代码执行更高效的 CPU 计算程序。

2. WebAssembly优势

  • 开放且可调试
    WebAssembly设计为以文本格式精美打印,用于手工调试,测试,实验,优化,学习,教学和编写程序。每一条指令有对应的二进制值。在Web上查看Wasm模块的来源时,将使用文本格式。
  • 高效,跨平台
    Wasm stack machine 设计为以节省大小和加载时间的二进制格式进行编码,可以直接在WebAssembly虚拟机上运行。
  • 安全的沙箱化执行环境
    WebAssembly被限制运行在一个虚拟的的沙箱执行环境中,运行时产生的变化可以随后删除,不会对系统产生永久性影响。该环境甚至可以在现有JavaScript虚拟机内部实现,可以严格遵循浏览器的同源策略和授权策略。
  • 无版本,标准化
    无版本,向后兼容。
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
上一篇:很抱歉没有了 下一篇:WASM 初体验: Hello, World
推荐内容
相关内容
栏目更新
栏目热门