智能合约WASM语言 (1)概述
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语言 (1)概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Html 教程 (5) “表格”三要素
- 下一篇: 编译原理 之 解释器