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
张小明
前端开发工程师
31、服务器数据备份与恢复全攻略
服务器数据备份与恢复全攻略 在服务器管理中,数据备份和恢复是至关重要的环节。它不仅能防止因各种意外情况导致的数据丢失,还能确保在出现问题时能够快速恢复系统,减少业务中断的时间。下面将详细介绍服务器数据备份与恢复的具体方法和步骤。 数据恢复操作 在进行数据恢…
7、Linux文本编辑器:vi与vim使用指南
Linux文本编辑器:vi与vim使用指南 1. 趣味体验与基础回顾 在Linux的世界里,有一个有趣的小活动。输入以下命令,准备好爆米花尽情享受: telnet towel.blinkenlights.nl若想停止这个“电影”体验,按住Ctrl键并按下]键,然后在 telnet> 提示符下输入 quit 并回车即…
9、Linux 软件管理与编程语言入门指南
Linux 软件管理与编程语言入门指南 在 Linux 系统的使用过程中,软件管理和编程是两个重要的方面。下面将详细介绍如何在不同 Linux 发行版中进行软件的查找、安装、移除,以及用户账户和组的管理,同时还会对 Linux 编程语言进行概述。 1. 软件查找 有时候,安装软件的一个…
PM2 WebUI:让Node.js应用管理更简单更高效的可视化解决方案
在Node.js应用开发与运维过程中,进程管理一直是开发者的痛点。传统命令行操作不仅学习成本高,多服务监控更是分散且效率低下。PM2 WebUI应运而生,这款开源Web管理界面彻底改变了Node.js应用的管理方式,让复杂的技术操作变得简单直…
Vue-Element-Plus-Admin 企业级后台系统深度开发指南
Vue-Element-Plus-Admin 企业级后台系统深度开发指南 【免费下载链接】vue-element-plus-admin A backend management system based on vue3, typescript, element-plus, and vite 项目地址: https://gitcode.com/gh_mirrors/vu/vue-element-plus-admin Vue-Element-Plu…
XDM浏览器插件终极指南:快速解锁高速下载新体验
你是否曾经为视频下载速度慢、操作繁琐而烦恼?🤔 今天我要向你介绍一个下载神器——XDM浏览器插件,它能彻底改变你的下载体验!无论你是Chrome还是Firefox用户,这个插件都能让你轻松实现高速下载、视频捕获和批量管理。…