(EDIT: 末尾呼び出しVMって何だ.. direct-threading VMを末尾呼び出しで実現しているのが面白いと思ったもんで...) WebAssemblyの インタプリタ であるWASM3( https://github.com/wasm3/wasm3 )が良いデザインをしていると思うメモ。 (WASM3はM3と呼ばれていたインタプリタプロジェクトが移動してきたもの。というわけでWASMのバージョン番号ではない。) かしこい所 基本的にはリポジトリの README.md に述べられている。 コンパイラの末尾呼び出し最適化を期待してシンプルに記述 WASM3のVM命令は以下のようなC言語関数で実装される: d_m3OpDef (GetGlobal) // ★ これはマクロで次節のようなプロトタイプに展開される { // ★ 次の2行が実際の処理 i64 * global = im