takashiki 发表于 2021-5-21 19:17:09

魔改了移植到STM32的ubasic脚本解释器,占用不到3k ROM

ubasic是一个很小的BASIC脚本解释器,而且很古老,功能很简陋,语法死板得很,没有编译过程直接翻译指令执行的,几乎可以肯定会被生成字节码的脚本效率低。但MCU上配置下还是很好的。
Adam Dunkels大神的原版几乎都不用移植,直接放到STM32上就能跑。为什么说几乎呢,是因为exit这个函数MDK中C微库没有实现,而且为了Debug Viewer要实现fputc。我的编译结果:Program Size: Code=3408 RO-data=724 RW-data=60 ZI-data=412

然后就魔改,优化代码,增加一些功能,修正一些没有的特性。降低代码的printf自己实现了,函数按ROM优化替代,增加的特性:取消了行号,当然goto和gosub还是要行号;增加了'和rem的注释,原本的空白只能是空格现在增加了TAB和\r。修改之后结果:Program Size: Code=2168 RO-data=728 RW-data=24 ZI-data=344
另外这个代码可以直接用作Cortex M0,放到STM32F030上编译ROM大约多出100字节。
然后实现了一个简单的调度器,暂时只实现了延时,大约增加250字节ROM。

源代码在这里,里面x86是PC上编译的,编译命令行在批处理文件中。另外好几种情况都做了一份,用MDK打开执行,打开Debug Viewer就能看到结果:

阿豪博士 发表于 2021-5-21 19:32:54

basic脚本

是不是可以运行B语法的指令了

dellric 发表于 2021-5-21 20:35:42

很不错啊,这个可以作为用户的可执行脚本来运行一些变态的要求,比如哪个配置参数要按用户自己的函数进行改变,用户不愿意告诉你,你又不愿意把源代码给用户改。

rootxie 发表于 2022-3-10 20:49:26

楼主透露一下这个东西怎么使用?看起来很高级的样子
页: [1]
查看完整版本: 魔改了移植到STM32的ubasic脚本解释器,占用不到3k ROM