https://github.com/ringtailsoftware/uvm32
uvm32是一款极简、无依赖的虚拟机沙箱,专为微控制器及其他资源受限设备设计。采用单文件C语言实现,无动态内存分配,采用异步架构,完全兼容C99标准。在STM32L0(ARM Cortex-M0+)平台上,其存储占用低于3KB闪存/1KB RAM。
uvm32本质上是封装了管理接口的RISC-V模拟器,并提供配套工具链以构建可在其中运行的高效代码。
应用场景
1、作为嵌入式脚本引擎(Lua、Duktape、MicroPython等)的轻量替代方案
2、作为隔离系统中不可信或不稳定组件的安全沙箱
3、在目标平台缺乏编译器的场景下,支持使用现代系统编程语言开发(如Rust示例)
4、实现"一次编写,随处运行",避免维护多版本软件
核心特性
1、提供C、Zig、Rust及汇编语言的字节码示例程序
2、非阻塞设计,防止异常字节码阻塞主机系统
3、不预设主机IO能力(无标准IO依赖)
4、简洁而明确执行模型
5、安全的最小化类型FFI接口
6、既可满足简单脚本/插件需求,亦能支持复杂场景
安全性优先于速度,确保虚拟机内的异常代码永远不会导致主机崩溃,虽基于完整CPU模拟器实现,但专注于执行自定义脚本逻辑,而非硬件模拟
与同类方案的比较
现有许多适用于小型系统的脚本语言与虚拟机都在不同维度做出了权衡取舍。
uvm32致力于:
1、极小资源占用(适配嵌入式设备、游戏及应用)
2、支持使用成熟编程语言开发虚拟机代码(配备高质量开发工具)
3、易于集成至现有软件体系
4、支持多种编程范式(事件驱动、轮询、多处理器)
对异常虚拟机代码具备强容错性
uvm32不追求:
1、零摩擦FFI(主机与虚拟机代码间无直接函数调用)
2、极限运行效率
3、最简单的脚本开发体验(需要完整的开发-编译-运行周期)
"开箱即用"的标准IO、网络等功能库
项目结构说明
uvm32是微型虚拟机的核心实现,所有代码均位于uvm32目录中。
host-mini展示了运行虚拟机代码的最简主机示例。
其余目录均为进阶主机示例,或可供主机运行的示例应用程序。
uvm32一款极简、无依赖的虚拟机沙盒,支持动态加载APP,仅需3KB Flash/1KB RAM
张小明
前端开发工程师
EmotiVoice是否支持语音情感强度曲线编辑?
EmotiVoice是否支持语音情感强度曲线编辑? 在虚拟偶像的直播中,一句台词从轻声细语逐渐升华为情绪爆发;在有声读物里,叙述者的声音随着情节推进悄然染上紧张或哀伤——这些细腻的情感变化,早已超越了“开心”或“生气”…
12、Perl与Python编程基础及特性解析
Perl与Python编程基础及特性解析 1. Perl语言的流程控制 Perl支持多种传统的流程控制语句,以下是一些常见的流程控制结构及其示例。 - if语句 : $name=<STDIN>; chomp $name; if ($name eq "Tim") {print "Welcome, Tim!"; } elsif ($name …
观远数据BI工具:多链路复杂数据处理与任务调度能力深度解析
引言:企业数据处理的挑战与现代化BI的崛起在数字化转型浪潮中,企业每天面临海量数据源——从销售交易、供应链物流到用户行为轨迹,多链路数据处理已成为核心竞争力。传统BI工具往往难以应对以下痛点:数据孤岛问题:平均…
基于Java的合同实施智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
1. 为什么这个毕设项目值得你 pick ? 基于Java的合同实施智慧管理系统的设计与实现旨在提供一种创新且实用的企业级解决方案,区别于传统选题。本系统涵盖了会员管理、合同管理、项目管理等多个功能模块,并针对普通员工和部门领导角色进行定制化设计&am…
基于Java的司库智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
1. 为什么这个毕设项目值得你 pick ? 毕设从0到1!基于Java的司库智慧管理系统的设计与实现全方位解析:附源代码毕设论文。该系统主要功能模块包括银行账户管理、现金流量记录管理、银行贷款管理、资产证券化项目管理、收支计划管理和现金预测管理&…
Figma-Context-MCP:让AI编码助手真正看懂你的设计稿
Figma-Context-MCP:让AI编码助手真正看懂你的设计稿 【免费下载链接】Figma-Context-MCP MCP server to provide Figma layout information to AI coding agents like Cursor 项目地址: https://gitcode.com/gh_mirrors/fi/Figma-Context-MCP 还在为AI生成的…