1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

BinaryenがEmscriptenからどう使われているのかわからない

Last updated at Posted at 2020-05-24

動機

Emscriptenを使っていると、ところどころでBinaryenが出てくるので、どういう風につかわれているのか気になり調べた。

結果

どう使われているのかわからない。

Binaryenとはどういうものか

wasmをパースして、最適化して、wasmを出力してくれるツール群の総称。

EmscriptenのdocでのBinaryenについての説明

Emscripten’s WebAssembly support depends on Binaryen, which is provided by the emsdk

とある。emsdkがwasmサポートをBinaryenを使って提供しているとだけいっていて、どんな場面で使われているかについての説明はない。

asm2wasm

Binaryenにはasm2wasmというツールが入っていて、これはasm.jsをwasmに変換してくれる。

An asm.js-to-WebAssembly compiler, using Emscripten's asm optimizer infrastructure. This is used by Emscripten in Binaryen mode when it uses Emscripten's fastcomp asm.js backend.

1.38の以前のfastcompバックエンドベースのemscriptenでは、上の説明にあるように、このツールを使って、emscriptenの出力したasm.jsをwasmに変換していたらしい。

Emscripten emits WebAssembly using the upstream LLVM wasm backend, since version 1.39.0 (October 2019)

とあって、現行の1.39以降はLLVMのwasmを出力するバックエンドを使っているので、Binaryenはこの形では使われていない。

もしかして?

Binaryenは、wasmを最適化してくれるツールなので、一度LLVMが出力したwasmを、さらに最適化するために使われてるのかもしれない。もしくはwasmバックエンドでは全く使われていないのか。うーんわからない。emsdkのソースを読む機会があれば、調べてみる。

参考にしたページ

https://kripken.github.io/talks/binaryen.html#/
https://github.com/WebAssembly/binaryen
https://www.oreilly.com/library/view/learn-webassembly/9781788997379/780259f3-ab01-4bad-b218-37e07e11c41d.xhtml
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Emscripten

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?