2016/07/22

[mrubyc]mruby/cをcygwinで動かしてみよう

以前、mruby/cのことを書いてから何もしていない。
Ruby自体、記憶からなくなってしまったが、mruby/cだけでも動かしてみよう。

cygwin上で動かす。


https://github.com/mrubyc/mrubyc/releases

今のところ、beta2がリリースされているので、それを取ってきた。
解凍して、make。
うん、ビルドできた。

よくわからんが、sample_cにできたmrubyc_sampleは動かせるようだ。
動かすと、「30」と出てきた。
うん、30だ。

これは、
https://github.com/mrubyc/mrubyc/blob/master/sample_ruby/basic_sample01.rb
で、10と20を足した結果をputするサンプルだった。
だから、30だ。

 

ただ、このbasic_sample01.rbはsample01.cになっていて、中は配列だ。
コンパイルしたバイトコードらしい。
それをloca_mrb_array()に通して、vm_boot()すると実行されるようだ。


他のサンプルも作ってみようとしたが、それにはmrubyに入っているコンパイラがいるようだ。

https://github.com/mruby/mruby/releases

今のところ、1.2.0が最新なので、それを取ってきた。
解凍して、make。
bisonがなかったので、取ってきてmake。
うん、ビルドできた。

binの中にmrbcがあるので、それだけ持ってきた。

$ ./mrbc.exe sample_ruby/basic_sample02.rb

これで、sample_ruby/basic_sample02.mrbができる。

$ cd sample_c
$ ./mrubyc ../sample_ruby/basic_sample02.mrb

うん、100~199までコンソールに出力された。


mrbファイルとsample01.cを見比べたが、単にmrbファイルを配列にしただけだった。

変換は何かツールがあるんだろうか?
と思ったら、mrbcのオプションで-Bに配列名を付けると生成してくれた。

$ ./mrbc.exe -Bany sample_ruby/basic_sample02.rb

これで、any[]という配列ができる。
これをmain_sample.cのまねをしてやれば実行できるのだろう。


さて、これを組み込みに使うのかどうか。。。

とりあえずは、RAMが最低でどのくらいいるのか、ですかね。
sizeで見てみた。

$ size sample_c/mrubyc_sample.exe
   text    data     bss     dec     hex filename
  27697    2500   33968   64165    faa5 sample_c/mrubyc_sample.exe

うん、よくわからん。
BSSは初期値を持たない変数のセクションということは、RAMということよね。
32KBくらいあるけど、大きすぎやしないかい?
cygwinでやっているからかなぁ。
余分に確保してあって、アプリを書いてもあまり増えないタイプもあるからな。

しかし16bitマイコンで使うのだったら、16KBもRAMがあるんだろうか?
RL78を使ったことがあるけど、あれの16KBはけっこう上位の方だったような。
その辺も、セミナーに行けば聞けるかもね。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。