尝试EmbedVM。
这里是一些代码,一个猜谜游戏的例子,编译器以C使用lex + yacc的:
global points;
function main()
{
local num, guess;
points = 0;
while (1)
{
// report points
$uf4();
// get next random number
num = $uf0();
do {
// read next guess
guess = $uf1();
if (guess < num) {
// hint to user: try larger numbers
$uf2(+1);
points = points - 1;
}
if (guess > num) {
// hint to user: try smaller numbers
$uf2(-1);
points = points - 1;
}
} while (guess != num);
// level up!
points = points + 10;
$uf3();
}
}
没有任何线程支持。但是虚拟机中没有全局状态,所以很容易在同一个进程中运行多个副本。
API很简单。 VM RAM通过回调访问。您的主循环反复调用embedvm_exec(vmdata),它执行单个操作并返回。
VM的占用空间很小,并已用于8位微控制器。