Berry是一款一款为32位单片机设计的脚本语言。Berry解释器使用C89标准实现,该语言可以在RAM或ROM很小的设备上运行。

尽管Berry的体积很小,但是它也支持class以及闭包等功能,使得单片机可以具有较好的二次开发能力。Berry没有将数值和字符串等简单类型设计为对象,这样不仅节省了RAM还可以防止频繁的malloc()调用。此外该脚本语言还有一些减少内存使用的优化。

Berry非常容易和C语言进行交互,您可以使用C API调用Berry代码,也可以在Berry代码中调用C语言实现的原生函数或者类。

以下是Berry支持的基本类型:

  • nil:空类型

  • 数值型:integer、real

  • boolean:布尔型

  • string:字符串类型

  • class:类,用于提供面向对象支持

  • list:可变长度数组

  • map:哈希表

  • range:存储一个整数区间

  • function:所有的函数都是function类型

其中list、map和range是class类型。nil、integer、real和boolean型的数据不需要使用动态内存分配。

运算符和控制语句与C语言相似,具体语法信息可以参考README文件和项目文档。

为 32 位单片机设计的脚本语言 Berry的更多相关文章

  1. 8位、16位、32位单片机中的“XX位”指什么?

    32位单片机的32位是指单片机的“字长”,也就是一次运算中参与运算的数据长度,这个位是指二进制位. 如果总线宽度与CPU一次处理的数据宽度相同,则这个宽度就是所说的单片机位数. 如果总线宽度与CPU一 ...

  2. 适合学习C语言开源项目——嵌入式脚本语言 Berry

    嵌入式脚本语言 Berry github网址 :https://github.com/Skiars/berry Berry 是一款面向小型嵌入式系统的脚本语言,目前发布了 0.1.0 版本.相比于其他 ...

  3. 30天自制操作系统(三)进入32位模式并导入C语言

    1 制作真正的IPL IPL(Initial Program Loader),启动程序装载器,但是之前并没有实质性的装载任何程序,这次作者要开始装载程序了. 虽然现在开发的操作系统啥功能也没有,作者说 ...

  4. 挑战30天写操作系统-day3-进入32位模式并导入C语言

    目录 1.制作真正的IPL IPL:启动区,启动程序装载器完整代码: ; haribote-ipl ; TAB=4 CYLS EQU 10 ; 声明CYLS=10 ORG 0x7c00 ; 指明程序装 ...

  5. 微信小程序wxml页面toFixed保留两位小数,wxs脚本语言

    在wxml页面执行toFixed函数的时候发现失效,在微信小程序的js页面是生效的,但是我不希望在data中保留这些额外的数据,于是找到了下面这种解决方案wxs脚本语言. <wxs module ...

  6. 为 STM32 移植 Berry 脚本语言

    Berry 是我为单片机设计的一款脚本语言,该语言具有资源占用小.平台无关.执行速度快和易于掌握等优点.在单片机上使用脚本语言可以提高单片机的二次开发能力以及调试效率,同时也是一种比较新颖的玩法.本教 ...

  7. 32位系统和x86的关系?

    32位操作系统针对32位CPU设计,cpu的位是指一次性可处理的数据量是多少,也等于寻址空间的大小或是通用寄存器的大小,一般数据总线的宽度也和cpu位数相同,但也有例外(如8088数据总线宽度为8然而 ...

  8. 【转】win7旗舰版英文版下载(64位|32位)|Windows7英文版ISO镜像

    Win7旗舰版SP1 64位ISO镜像下载地址:文件名:en_windows_7_enterprise_with_sp1_x64_dvd_u_677651.isoSHA1:A491F985DCCFB5 ...

  9. 单片机脚本语言-移植lua到stm32-MDK

    Lua简单介绍 Lua[1]  是一个小巧的脚本语言.作者是巴西人.该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. Lua脚本能够非常easy的被C/C++ 代码调用, ...

随机推荐

  1. js原生导出excel和csv

    ​ 严格意义来说并不是真正的excel文件,只是可以用excel打开查看而已,实际上的格式是逗号分隔文件即csv文件. 这里有几个坑要说一下: 不加Unicode的utf8头部标识excel打开文件会 ...

  2. 011 Android AutoCompleteTextView(自动完成文本框)的基本使用

    1.XML布局 android:completionThreshold="1":这里我们设置了输入一个字就显示提示 (1)主界面布局 <?xml version=" ...

  3. [SourceTree] - 使用内置 PuTTY 克隆项目出现 fatal: early EOF 问题之解决

    背景 使用 PuTTY 克隆 Asp.Net Core 项目失败. 错误 git -c filter.lfs.smudge= -c filter.lfs.required=false -c diff. ...

  4. springboot2.x日志配置记录

    springboot日志管理: springboot2.x默认使用commons-logging作为内部日志的输出,日志的实现可以选择Java Util Logging,Log4J2和logback如 ...

  5. Swing的基本操作

    package GUI_experience; import java.awt.*; import java.awt.Container; import java.awt.FlowLayout; im ...

  6. python 之 并发编程(线程Event、协程)

    9.14 线程Event connect线程执行到event.wait()时开始等待,直到check线程执行event.set()后立即继续线程connect from threading impor ...

  7. dotnet Core学习之旅(三):创建项目

    [重要:文中所有外链不能确保永久有效]>创建解决方案 在VSCode上,可以使用来自开源力量的vscode扩展vscode-solution-explorer来增强VSCode对.NET项目的支 ...

  8. idea的项目结构

    idea项目结构: 一般是创建一个empty project,然后再创建一个个的Module.

  9. Ubuntu 利用 mtd-utils 制作ubifs.img

    确保已经安装了有关的工具 sudo apt-get install mtd-utils mkfs.ubifs -d fs -m -o rootfslink.ubiimg -e -c -F -v syn ...

  10. IDEA使用技巧--将本地项目和git远程项目关联

    之前开发没有从头儿搭建过新项目,都是从IDEA配置下项目的git地址,pull代码之后进行开发,提交.这次需要将本地新建的项目push到在git上同样是新建的空项目上去(git上的项目只有工程名和re ...