> For the complete documentation index, see [llms.txt](https://luishsu.gitbook.io/wasmvm-tutorial/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://luishsu.gitbook.io/wasmvm-tutorial/wasmvm-structure.md).

# 虛擬機架構

![](https://2957338232-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOgDUpUHY3kAm86Z3rz%2F-LOgDkeS2P_JfyJegaqb%2F-LOgDmbiVT6C3fKA6icW%2FStructure.png?generation=1539414120674600\&alt=media)

## 部件

* 載入器 (Loader)
  * 讀取檔案，將內容轉換成物件後載入儲存空間和模組
  * 載入完之後就會被釋出，不會繼續留在程式裡
* 核心 (Core)
  * 讀取檔案，將內容轉換成物件後載入儲存空間和模組
  * 執行程式的主要部件
* 解碼器 (Decoder)
  * 從儲存空間取得下一個指令，按照位元格式解碼後執行指令
* 系統呼叫 (System call)
  * WasmVM 特有，用來執行輸出/輸入等等作業系統的功能

## 運行步驟

1. 準備儲存空間和模組空間，並檢查系統的位元組順序 (Endians)
2. 準備載入器，載入 wasm 檔案
3. 釋放載入器
4. 準備核心
5. 取得主要模組名稱和起始函式
6. 呼叫起始函式，開始執行

   A. 解碼器取得下一個指令

   B. 解碼器解析指令

   C. 執行指令

   D. 重複 A 到 C 的動作，直到程式結束
7. 釋放所有物件，結束程式
