uvm32 一个极简、无依赖的虚拟机,可用于嵌入式执行bin文件

UVM32 是一个极简、无依赖的虚拟机沙盒,专为微控制器及其他资源受限设备设计。单 C 文件,无动态内存分配,异步设计,纯 C99。

uvm32 是一个 RISC-V 模拟器,采用管理接口,并配备了构建高效代码的工具。

这是干什么用的?

  • 作为嵌入式脚本引擎(Lua、Duktape、MicroPython 等)的简洁替代方案
  • 作为一个沙盒 ,用于隔离系统中不可信或不可靠的元素
  • 作为一种允许在现代系统编程语言中开发的方式,比如在可能没有目标编译器的情况下(rust-hello)
  • 作为一种写入一次、随处运行 、避免维护多个软件变体的方法

特色

  • 用 C、Zig、Rust 和汇编编写的字节码示例应用
  • 非阻塞设计,防止不良的字节码导致主机停顿
  • 没有对主机 IO 能力的假设(没有标准配置)
  • 简单、带有主见的执行模型
  • 安全的最小类型 FFI
  • 体积小到能用“如果这样那个”的脚本/插件,也能支持更多
  • 安全优先于速度,虚拟机中运行的糟糕代码绝不应该导致主机崩溃

https://github.com/TutuBinary/uvm32

C4:4个函数实现的C语言编译器 (C语言脚本解释器)

它是一个C语言编译器项目,整个实现只有:

  • 一个C语言源码文件

  • 528行C语言代码

  • 4个函数

仅此而已。

它简洁,却不简单。

https://github.com/TutuBinary/c4.git

PicoC :PicoC 是一款非常小的 C 脚本解释器

PicoC是一个轻量级的C语言编译器,它可以将C语言源代码编译成可执行文件。

核心 C 源代码大约有 3500 行。它并非 ISO C 的完整实现,但它具备所有基本功能。编译后,它仅占用几 k 的代码空间,并且非常节省数据空间。这意味着它可以在小型嵌入式设备中很好地工作。它也是一个有趣的示例,展示了如何创建非常小的语言实现,同时仍保持代码的可读性。

https://github.com/jpoirier/picoc

QuickJS

QuickJS是一个小型并且可嵌入的Javascript引擎,它支持ES2020规范,包括模块,异步生成器和代理器。

它可选支持数学扩展,例如大整数 (BigInt),大浮点数 (BigFloat) 以及运算符重载。

https://github.com/TutuBinary/QuickJS

Lua

Lua 是一种强大、高效、轻量级、可嵌入的脚本语言。它支持过程式编程、面向对象编程、函数式编程、数据驱动编程和数据描述。

https://www.lua.org/

panda

panda是脚本语言解释器,它基于javascript,但裁剪了部分语法特性;

panda是轻量级语言,它被设计用来作为嵌入式硬件的解释器;

panda很容易学习。

https://github.com/TutuBinary/panda

Moddable SDK

Moddable SDK 是脚本语言解释器,它基于javascript

https://github.com/TutuBinary/moddable

lpython

LPython 是一个Python 编译器

https://github.com/TutuBinary/lpython

PikaPython

PikaPython 是一个完全重写的超轻量级 python 引擎,零依赖,零配置,可以在 Flash ≤ 64KB,RAM≤ 4KB 的平台下运行(如 stm32g030c8 和 stm32f103c8),极易部署和扩展,具有大量的中文文档和视频资料。

https://github.com/TutuBinary/PikaPython