githubから最新版を取得

リポジトリはhttps://github.com/mruby/mrubyにある。

$ git clone https://github.com/mruby/mruby.git

Make

makeを実行すると、./bin/ 以下に実行ファイル、./build/host/lib/ 以下にライブラリができる。

Rubyのソースをコンパイル

$ bin/mrbc foo.rb

入力ソース例:foo.rb

(0...5).each do |i|
  puts i
end

出力されたファイル:foo.mrb

0000000: 5249 5445 3030 3039 3030 3030 3030 3039  RITE000900000009
0000010: 3030 3030 4d41 545a 2020 2020 3030 3039  0000MATZ    0009
0000020: 3030 3030 3030 3030 3030 4434 3030 3032  0000000000D40002
0000030: 3030 3030 2020 2020 2020 2020 4136 4339  0000        A6C9
0000040: 3030 3030 3030 3645 5343 3030 3031 3030  0000006ESC000100
0000050: 3033 3030 3034 3436 3946 3030 3030 3030  030004469F000000
0000060: 3036 3030 4246 4646 3833 3031 3430 3032  0600BFFF83014002
0000070: 3033 3030 3830 3430 4331 3031 3030 3033  03008040C1010003
0000080: 3430 3030 3830 3030 3231 3030 3030 3030  4000800021000000
0000090: 3441 3344 3632 3030 3030 3030 3030 3030  4A3D620000000000
00000a0: 3030 3030 3030 3030 3031 3030 3034 6561  00000000010004ea
00000b0: 6368 3944 4131 3030 3030 3030 3636 5343  ch9DA100000066SC
00000c0: 3030 3033 3030 3035 3030 3034 3438 3339  0003000500044839
00000d0: 3030 3030 3030 3035 3032 3030 3030 3236  0000000502000026
00000e0: 3031 3830 3030 3036 3032 3030 3430 3031  0180000602004001
00000f0: 3031 3830 3030 4130 3031 3830 3030 3239  018000A001800029
0000100: 4641 3445 3030 3030 3030 3030 3030 3030  FA4E000000000000
0000110: 3030 3030 3030 3031 3030 3034 7075 7473  000000010004puts
0000120: 3234 3839 3030 3030 3030 3030            248900000000

バイトコードを16進文字列化したものになるっぽい。eachとかputsとか、ところどころシンボルがそのまま埋め込まれている。

-Bオプションで、C言語のソースコード形式で出力される。

バイトコード実行

$ bin/mruby -b foo.mrb
0
1
2
3
4