MDN wants to talk to developers like you: https://qsurvey.mozilla.com/s3/a3e7b5301fea

WebAssembly テキストフォーマットから wasm に変換する

WebAssembly にはS式ベースのテキスト表現があります。これはテキストエディタ、ブラウザの開発者ツールなどで見せるために設計された中間表現です。この記事では、これがどのように動作するか、テキスト形式のファイルを .wasm アセンブリ形式に変換するのに利用可能なツールの使用方法について少し説明します。

: テキスト形式のファイルは通常 .wat という拡張子で保存されます。場合によっては .wast も使われます。これはアサーションなどの変換時に .wasm に含まれない特別なテストコマンドを含むファイルを指します。

はじめてのテキストフォーマット

簡単な例を見てみましょう。次のプログラムは imports というモジュールから imported_func という名前の関数をインポートし、exported_func という名前の関数をエクスポートしています:

(module
  (func $i (import "imports" "imported_func") (param i32))
  (func (export "exported_func")
    i32.const 42
    call $i
  )
)

WebAssembly 関数 exported_func は私達の環境 (WebAssembly モジュールを使用しているウェブアプリケーションなど) で使用するためにエクスポートされます。この関数が呼び出されたとき、インポートされた JavaScript 関数 imported_func パラメータとして値 (42) を渡して実行されます。

テキスト .wat ファイルからバイナリ .wasm ファイルに変換する

上の wat テキスト表現の例を wasm アセンブリ形式に変換してみましょう。

  1. はじめに、上のコードをテキストファイルにコピーして simple.wat という名前のファイルを作成します。
  2. このテキスト表現をブラウザが実際に読み込んで利用可能なアセンブリ言語にアセンブルする必要があります。 このために wabt ツールを使用することができます。これは WebAssembly のテキスト表現から wasm 変換する、または逆に変換するコンパイラ(加えてもう少し別のツール)が含まれます。https://github.com/webassembly/wabt に行って、今ページに従ってツールの設定をします。
  3. ツールをビルドしたら、システム PATH に /wabt/out ディレクトリを追加します。
  4. 次に、wast2wasm プログラムを実行します。入力ファイルパス、続いて -o  パラメータ、出力ファイルパスを指定します:
  5. wast2wasm simple.wat -o simple.wasm

これで simple.wasm という名前のファイルに wasm が出力されます。これには .wasm アセンブリのコードが含まれます。

: wasm2wast を使用して wasm から テキスト表現に戻すことができます。例: wasm2wast simple.wasm -o text.wat.

アセンブリの出力を見る

出力されたファイルはアセンブリベースなので通常のテキストエディタで表示することができません。ただし、wast2wasm ツールの -v オプションを使用して見ることができます。以下を試してみてください:

wast2wasm simple.wat -v

ターミナルには次のように出力されるでしょう:

several strings of binary with textual descriptions beside them. For example: 0000008: 01 ; section code

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: syu_kato
 最終更新者: syu_kato,