読者です 読者をやめる 読者になる 読者になる

node.jsでバイナリデータを実行するアドオン作った。

node.jsって、Google V8 JavaScript Engine使ってるから、
中身では、javascriptコードをJITで実行しているんだよね。

でも、node.jsでJITして実行したい!
って、要望が(僕の中で)高まってきたので、作りました。

nodeで、バイナリデータを模したArrayを引数にして、
モジュールを呼び出すとC++のアドオンでバイナリが実行され、

バイナリ実行結果の戻り値がリターンされます。
ただそれだけですが。。。

にわかなC++コードをあげときました。
https://github.com/yutaka-m/node-cfunc

実行イメージ

$ node
> var a = require('./build/Release/cfunc');
undefined
> a.cfunc(new Array(0xb8,0x05,0x00,0x00,0x00,0xc3));
5

Arrayに以下のバイナリ列が入ってます。
戻り値が5で返るものです。

0xb8,0x05,0x00,0x00,0x00 // mov $0x5,%eax
0xc3 // retq

コンパイラ実装会用のネタとして、
関数定義の動的な変更(引数と戻り値)
外部ライブラリの読み込み(バイナリからのputchar呼び出し)
Brainf*ckの実装
をできればいいなぁ。