C/C++とかで書かれたコードを Javascriptのエンジン上で動かすために Emscripten っている変換ツールがあるらしい。
ってことで試してみました。
Emscripten を使うと、C/C++のコードをコンパイラに通して、それを中間コードに分解し、その命令をJavascriptのコードに変換してくれる。
実行環境は以下のとおり。
OS : ubuntu 12.04
llvmはここからダウンロードして展開する。
展開の場所はどこでもいいでので。今回はホームディレクリに展開しました。
展開が終わったら、ファイル名をcalc.cとして次のコードで試してみる。
int add(int a, int b) { int c; c = a + b; return c; }
これをEmscriptenでビルドする。
emscripten/emcc calc.c -o calc.js
calc.jsファイルができる。中身を見てみるとCで書いたメソッドの前にアンダーバーが付いた「_add」が出来ている。
function _add($a, $b) { ; var __label__; var $1; var $2; var $c; $1=$a; $2=$b; var $3=$1; var $4=$2; var $5=((($3)+($4))|0); $c=$5; var $6=$c; ; return $6; }
このメソッドを実際にjavascriptからコールしてみる。
var ret_add = _add(5, 10); console.log(ret_add);
ちゃんとログで15ってログを吐き出している!
C言語で書かれたコードをライブラリとして使いたい場合に使いたい場合には使えるかも。