本项目是基于 subnetzero.io 的博客教程 开发的一个 Rust 虚拟机。该教程系列将指导我们如何从头开始构建一个完整的虚拟机。
- 实现高性能:创建一个相对高性能的虚拟机,与现代实现相比具有竞争力。
- 容错性设计:设计一个具有容错性的虚拟机。
- 命令和控制平台:使虚拟机成为一个用于运行应用程序的命令和控制平台。
- 集群支持:实现虚拟机在不同物理服务器上的集群。
- 虚拟机类型:本项目将实现一个基于寄存器的虚拟机。与树遍历和基于栈的虚拟机相比,寄存器虚拟机更接近实际硬件的工作方式,性能也更优。
- VM Type:This project will implement a register-based VM. Compared to tree-walking and stack-based VMs, register-based VMs are closer to actual hardware and offer better performance.
- 汇编语言:我们将创建一种汇编语言和相应的汇编器,使我们能够以更高级的方式编写程序,而不是直接在十六进制编辑器中编写。
- Assembly Language:We will create an assembly language and an assembler, allowing us to write programs in a more advanced way instead of directly in a hex editor.
- 项目结构:从创建一个新的 Rust 项目开始,逐步构建虚拟机的各个组件,包括虚拟 CPU、寄存器、指令集等。
- Project Structure:Starting with a new Rust project, we will gradually build the components of the VM, including the virtual CPU, registers, instruction set, etc.
要开始本项目,请确保您已安装最新的 Rust 版本和 cargo
工具。以下是创建项目的初始步骤:
To start this project, make sure you have the latest version of Rust and the cargo
tool installed. Here are the initial steps to create the project:
cargo run # run the project
cargo run -- -h # the cli commands of app
vm.rs 中为虚拟机的核心结构和功能。
The src/vm.rs
is the core structure and functionality of the VM.
- 实现虚拟机的基本结构 - Implement the basic structure of the VM
- 定义汇编语言和指令集 - Define the assembly language and instruction set
- 大部分支持:详情请查看:instruction
- 仍有些跳转逻辑等还未支持。
- 实现指令解码和执行 - Implement instruction decoding and execution
- 添加测试用例 - Add test cases
- 性能优化和集群支持 - Optimize performance and support clustering
欢迎任何形式的贡献,包括代码提交、问题报告和功能建议。
Contributions in any form are welcome, including code submissions, issue reports, and feature suggestions.
本项目使用 MIT 许可证。详细内容请查看 LICENSE 文件。
This project is licensed under the MIT License. Please refer to the LICENSE file for details.