2017年9月6日水曜日

CでLua

 マイコンでインタープリタつかいたいなーと思ってLuaを試してみた。
 公式ページのダウンロードからソースを落としてきてビルドするだけ。楽。



今回は全部まとめてビルドしてるので、ちょっと時間がかかる。4-6秒くらい。

 lua.c/luac.cはバイナリとして配布されてる実行ファイルのmainが入っている。当然、これを含めてmakeすると重複定義エラーになる。

 今回は動作確認だけなので簡単な処理だけ作ってみた。スタンドアロン動作だし。
 ちゃんと使うならちゃんと使い方を調べにゃ。でも結構簡単にいろいろできそう。

 STM32F4で動くLuaVMとかやりたいな。HALをもうちょっと抽象化してLuaで実行できるようにしたりして。

追記:2017/09/09
 l_hoge関数の戻り値が1だけど、これは0にしなきゃいけないみたい。
 C関数の戻り値は、関数の戻り値の数を渡す必要がある。今回は戻り値がないので0を返す。
 Luaは関数呼び出しの際にスタックが1個作られ、引数がスタックに積まれる。また戻り値もスタックに積まれる。引数が3個、戻り値が2個の場合、スタックは5段となり、Cの戻り値は2になる。この際、print(C関数())のようにするとスタックの上2個が表示される。Cの戻り値に6を指定すると、戻り値の2個、引数の3個、そして不定値の1個の変数が表示された。この不定値は何らかの定数かもしれないが、調べてない。

0 件のコメント:

コメントを投稿