はじめに 趣味の自作言語で WebAssembly を吐いてみようかなと思いました。が、WebAssembly の仕様書を読むだけで理解するのは困難です。そこで手を動かしながら仕様書を少しずつ追いかけていくことで理解しようと思いました。せっかくなので誰か(主に数週間後の自分)の役に立てばなあ、と思い思考の記録を取った次第です。 参考文献 WebAssembly Specification 仕様書です WASM のバイナリの構造 WASM のバイナリは module です(これは正確な言い回しではないかもしれません。Overview の Modulesをよんで)。module の binary encoding はModulesに書いてあります。 ごちゃっとしていて圧倒されますが、以下の3点を押さえると読みやすくなると思います。 module は magic -- version -- se