智能合约WASM语言 (1)概述
1 . 定義
WASM(WebAssembly)是一種運行在 Web 平臺上的 匯編代碼Assembly。一種小體積,高加載速度的基于堆棧的虛擬機(jī)的二進(jìn)制指令格式。
Web 平臺好比虛擬機(jī)環(huán)境, WebAssembly 可以看做是 Web 平臺的 x86 硬件通用指令集,作為一層中間語言,上層對接 Java、Python、Rust、Cpp,讓這些語言都能編譯成統(tǒng)一的格式,用于 Web 平臺運行。
為諸如C、C++等低級源語言提供一個高效的編譯目標(biāo),使得以各種語言編寫的代碼都可以以接近原生的速度在web中運行。(所有由傳統(tǒng)語言編寫的客戶端app都可以在web上高效運行)
- Wasm 被設(shè)計為編程語言的可移植編譯目標(biāo),從而可以在 Web 上為客戶端和服務(wù)器應(yīng)用程序進(jìn)行部署。
- 四大瀏覽器廠商(Chrome, Firefox, Edge, Safari)全部默認(rèn)支持WebAssembly 。
1.1 Assembly匯編代碼
虛擬機(jī)層會同時加載和運行兩種類型的代碼——JavaScript和WebAssembly。一個典型的編譯執(zhí)行鏈路是 C++、Rust 等編譯型語言編譯成匯編指令,再轉(zhuǎn)換成二進(jìn)制機(jī)器碼由 CPU 讀取。其他例如 Java、Python 等語言是使用運行在 x86 一類的通用硬件指令集的虛擬機(jī),再執(zhí)行自己的“匯編語言”(例如 Java Bytecode)
eg. 中間的十六進(jìn)制的Binary Code就是WebAssembly
1.2 與JavaScript
-
WebAssembly模塊將能夠調(diào)用和退出JavaScript上下文,并通過可從JavaScript訪問的相同Web API來訪問瀏覽器功能。WebAssembly還支持非Web嵌入。
-
和JavaScript互補(bǔ)協(xié)同工作,作為一個“高性能的JS函數(shù)”,提供js api實現(xiàn)互相調(diào)用。
-
可以取代部分 JavaScript 代碼執(zhí)行更高效的 CPU 計算程序。
2. WebAssembly優(yōu)勢
-
開放且可調(diào)試
WebAssembly設(shè)計為以文本格式精美打印,用于手工調(diào)試,測試,實驗,優(yōu)化,學(xué)習(xí),教學(xué)和編寫程序。每一條指令有對應(yīng)的二進(jìn)制值。在Web上查看Wasm模塊的來源時,將使用文本格式。 -
高效,跨平臺
Wasm stack machine 設(shè)計為以節(jié)省大小和加載時間的二進(jìn)制格式進(jìn)行編碼,可以直接在WebAssembly虛擬機(jī)上運行。 -
安全的沙箱化執(zhí)行環(huán)境
WebAssembly被限制運行在一個虛擬的的沙箱執(zhí)行環(huán)境中,運行時產(chǎn)生的變化可以隨后刪除,不會對系統(tǒng)產(chǎn)生永久性影響。該環(huán)境甚至可以在現(xiàn)有JavaScript虛擬機(jī)內(nèi)部實現(xiàn),可以嚴(yán)格遵循瀏覽器的同源策略和授權(quán)策略。 -
無版本,標(biāo)準(zhǔn)化
無版本,向后兼容。
總結(jié)
以上是生活随笔為你收集整理的智能合约WASM语言 (1)概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Html 教程 (5) “表格”三要素
- 下一篇: 编译原理 之 解释器