以
以
以 WasmVM 向 WebAssembly 說哈囉!
Search…
封面 & 目錄
下載和編譯 WasmVM
第一個 WebAssembly 程式
堆疊
數值型別
算術、參數和控制指令
儲存空間
模組
位元格式
虛擬機架構
系統呼叫
參考資料
Powered By
GitBook
第一個 WebAssembly 程式
Wabt 工具
WebAssembly (之後都簡稱 Wasm) 程式主要是儲存成位元格式 (Binary format),對人類來說比較不方便閱讀。
然而 Wasm 也有制定比較方便閱讀的文字格式 (Text format)
但是文字格式需要轉成位元格式,WasmVM才有辦法執行
WebAssembly官方有提供 Wabt 工具可以轉換格式,以下有幾種使用方式:
直接在網站上使用 Wabt
網址:
https://webassembly.github.io/wabt/demo/wat2wasm/
下載 Wabt 的離線版網站
在終端機執行
git clone https://github.com/WebAssembly/wabt
用瀏覽器打開資料夾裡的 demo/index.html
下載並編譯、執行 wat2wasm 程式
從 GitHub 下載 Wabt
git clone https://github.com/WebAssembly/wabt
建立 build 資料夾並執行 CMake
cd wabt && mkdir build && cd build && cmake -DBUILD_TESTS=OFF ..
執行 Make
make
你會得到 wat2wasm 程式,在你用文字編輯器編輯完文字格式的檔案後,執行
./wat2wasm 文字檔名 -o 要輸出的位元格式檔名 -v
這邊用 -v 是為了在教學中能方便查看位元檔內容,如果你已經不需要查看內容,可以不用打 -v
編寫 Wasm 程式
請把網頁版的左上角清空,輸入以下程式碼。 用 wat2wasm 的話請用文字編輯器編輯文字檔
(module
(func $main
i32.const 3
unreachable
)
(start $main)
)
成功的話會看到以下訊息
0000000: 0061 736d ; WASM_BINARY_MAGIC
0000004: 0100 0000 ; WASM_BINARY_VERSION
...以下省略
按 Download 下載檔案或使用 wat2wasm 產生檔案之後,用 WasmVM 執行
./WasmVM 檔案名稱
成功的話會看到以下訊息
Values in the stack:
Type: i32, Value: 3
如果看到以下訊息,表示之前編譯的時候系統呼叫功能關了,但是沒有用 Debug 模式
(func: 0, offset: 3) [unreachable] Trap without syscall provided.
如果看到以下訊息,表示之前編譯的時候系統呼叫功能沒有關
(func: 0, offset: 3) [syscall][sys_close] No enough value in the stack.
發生以上兩種狀況,請先執行
make clean
然後重新執行 CMake 和 Make 編譯程式
Previous
下載和編譯 WasmVM
Next
堆疊
Last modified
3yr ago
Copy link
Outline
Wabt 工具
編寫 Wasm 程式