以前、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 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。