RAVEN — RISC-V 模拟器与集成开发环境
RAVEN 是一个免费开源的 RISC-V 模拟器和终端 IDE,专为学生和汇编学习者设计。它支持 RV32IMAF 指令集(基础整数集、乘除法、原子操作和单精度浮点运算),并在程序运行时可视化机器的每个部分。
核心功能
编辑器(标签页 1)
- 语法高亮显示指令、寄存器、标签、指令和字符串
- 输入时显示操作数提示
- Ctrl+R 快速汇编,错误提示显示行号和原因
- 支持撤销/重做(50级)、注释切换、行复制
- 转到定义(F12)、标签高亮、地址边栏(F2)
调试器(运行标签页 2)
- 自由运行、暂停(Space/F5)或单步执行(n/F10)
- 断点设置(b/F9)、跳转到地址(g)、执行跟踪(t)
- 显示全部32个整数寄存器和浮点寄存器(带ABI名称)
- RAM视图、栈视图、断点列表
- 指令内存面板显示指令类型、执行热度和分支结果
- 指令解码器:完整字段分解
缓存模拟器(标签页 3)
- 独立的指令缓存和数据缓存,支持多级缓存(L2、L3等)
- 可配置:组数、路数、块大小、写策略、包含策略
- 六种替换策略:LRU、FIFO、LFU、Clock、MRU、随机
- 实时统计:命中率、MPKI、RAM流量、热点未命中地址
- 学术指标:AMAT、IPC、每类指令的CPI
- 可视化矩阵视图,支持导出结果为CSV格式
文档标签页(标签页 4)
- 支持指令的完整参考文档
- 运行标签页快捷键指南
ISA 覆盖范围
- RV32I: 基础整数指令集(算术、逻辑、加载/存储、分支、跳转等)
- RV32M: 乘法和除法扩展
- RV32A: 原子操作扩展
- RV32F: 单精度浮点扩展
- 支持伪指令和系统调用(ecall)
ELF 二进制文件加载
完全兼容 riscv32im/ima-unknown-none-elf 目标编译的 ELF32 LE RISC-V 二进制文件。可以直接加载并执行由标准工具链(如Rust)编译的程序。
汇编器特性
- 支持 .text、.data、.bss 段
- 多种汇编指令:.byte、.word、.float、.string 等
- 支持块注释和内联注释
- 清晰的错误提示信息
快速开始
从 Releases 下载最新二进制文件,或使用源码构建(需要 Rust 1.75+):
git clone https://github.com/Gaok1/Raven
cd Raven
cargo run
主要快捷键
- Ctrl+R: 汇编并加载
- F5/Space: 运行/暂停
- F10/n: 单步执行
- F9/b: 切换断点
- 1-4: 切换标签页
https://github.com/Gaok1/Raven
Alakit - 混合桌面应用框架
Alakit 是一个将 Rust 的强大功能与 Web 技术的灵活性相结合的混合桌面应用程序框架。该项目旨在提供一个环境,让开发者可以使用 HTML 和 CSS 构建界面,而无需为应用程序逻辑编写 JavaScript。
项目优势
- 平衡性:在快速原型开发的简便性和二进制文件大小之间找到平衡点
- 技术组合:Rust 提供安全性和性能,Webview 处理渲染,声明式属性系统管理两者之间的桥接
核心特性
- 无 JS 方法:按钮事件、表单提交和 UI 值更新通过 HTML 属性直接与 Rust 代码绑定
- 受保护的后端存储:敏感数据在 Rust 端使用 AES-256-GCM 加密存储在内存中(注意:由于 JS 运行时限制,Webview 中显示的数据在 RAM 中以明文形式存在)
- 低资源占用:专注于保持二进制文件小巧并优化运行时内存使用
- 灵活的控制器系统:通过宏自动添加新功能(控制器),无需手动注册
工作原理
界面使用特殊属性与后端通信:
- alakit-cmd:指定要执行的 Rust 函数
- alakit-bind:将 HTML 元素连接到加密存储中的键
- alakit-form:以 JSON 格式为 Rust 端收集整个容器的数据
后台的 Rust 控制器处理消息并更新状态,立即反映在 UI 中。
安装和使用
- 项目目前处于开发阶段
- 需要 Rust 环境进行构建
- 可通过导航到相应文件夹并运行 'cargo run' 来启动示例应用程序
- 详细文档和示例位于 'doc' 文件夹中
https://github.com/fejestibi/alakit
--
From 日报小组 Mike
社区学习交流平台订阅:
评论区
写评论还没有评论