0%

Introduction to Emscripten, asm.js, WebAssembly

安裝 Emscripten SDK

首先必須先安裝以下package

1
$ apt-get install wget python git g++ cmake nodejs

從[網站(http://kripken.github.io/emscripten-site/docs/getting_started/downloads.html)下載Portable SDK進行編譯安裝。安裝過程如下

1
2
3
4
5
6
7
$ tar zxvf emsdk-portable.tar.gz
$ cd emsdk_portable
$ ./emsdk update
$ ./emsdk install clang-tag-e1.34.1-64bit
$ ./emsdk install emscripten-tag-1.34.1-64bit
$ ./emsdk activate
$ ./emsdk_env.sh

修改~/.emscripten`

NODE_JS = nodejs

寫個程式測試

1
2
3
4
5
#include <stdio.h>
int main( )
{
printf("Hello World!\n");
}

將奇編譯成Javascript

1
$ ./emcc hello.c -o hello.out.js

用nodejs執行它

1
$ nodejs hello.out.js

Asm.js

Asm.js是Javascript的一個子集合,限制Javascript的特性,使其能夠對應體作最佳化。在編譯時加上-s ASM_JS=1即可。

1
$ ./emcc -s ASM_JS=1 hello.c -o hello.out.js

如果有需要的話可以參考

WebAssembly

最近新推出來的玩意,在2016年各家Browsers終於推出preview版本,而Emscripten更能直接輸出WebAssembly
請參考WebAssembly
另外一個方式就是使用自定義的clang來輸出WebAssembly

其他的參考連結
A Look at Web Assembly and Molecular Analysis
Webassembly initial steps tutorial or how to start with wasm

Reference