giacomo-folli/asmlings
GitHub: giacomo-folli/asmlings
一个基于 Rust 模拟器的轻量级交互式教学工具,通过渐进式练习帮助用户学习 Intel 8086 汇编编程。
Stars: 32 | Forks: 1
# ⚙️ ASMLings
**一个用于 Intel 8086 汇编编程的轻量级、交互式教育沙盒。**
[](https://crates.io/crates/asmlings)
[](https://opensource.org/licenses/MIT)

ASMLings 提供了一个由基于 Rust 的 16 位 x86 模拟器驱动的沙盒反馈循环。你只需编写代码,保存文件,然后立即查看结果。
## 安装
### 使用 cargo-binstall(快速,无需编译)
```
cargo install cargo-binstall
cargo binstall asmlings
```
### 使用 Cargo(包含编译步骤)
```
cargo install asmlings
```
### 手动下载
从 [GitHub Releases 页面](https://github.com/giacomo-folli/asmlings/releases) 下载二进制文件
### 系统依赖
你还必须安装 **NASM** 汇编器,因为 Asmlings 在底层使用它在模拟之前编译你的代码。
* **macOS:** `brew install nasm`
* **Ubuntu/Debian:** `sudo apt install nasm`
* **Arch Linux:** `sudo pacman -S nasm`
* **Windows:** `winget install NASM`
### 安装故障排除 (Linux)
如果 `cargo install asmlings` 失败并出现提及 `__atomic_compare_exchange_16` 或 `undefined symbol` 的链接器错误,则你的系统需要 `libatomic` 库来编译底层的 CPU 模拟器。
要解决此问题,请使用 atomic 链接器标志运行安装:
```
RUSTFLAGS="-Clink-arg=-latomic" cargo install asmlings
```
*如果编译器提示找不到 `-latomic`,请通过你的包管理器安装它:*
* **Ubuntu/Debian:** `sudo apt install libatomic1`
* **Arch Linux:** `sudo pacman -S gcc-libs`
* **Fedora/RHEL:** `sudo dnf install libatomic`
## 快速开始
入门就像运行两个命令一样简单。导航到你想要存储课程作业的文件夹,然后运行:
### 1. 初始化工作区
提取练习文件并设置你的进度跟踪器。
```
asmlings init
```
* **更新练习:** 如果你已经有了 `exercises/` 目录,并且想要从新版本中拉取新的练习而不丢失你的进度或覆盖你的更改,运行 `asmlings init` 将仅自动复制缺少的练习。
* **重置进度:** 如果你想用全新的模板覆盖所有练习并将进度重置回起点,请运行:
asmlings init --force
### 2. 启动监听模式
这将启动一个持久的监听循环。让它在你的终端中保持运行!
```
asmlings start
```
### 3. 解决练习
每次你保存时,Asmlings 都会自动重新汇编并验证你的代码,提供即时的终端反馈。
*(注意:如果你只想运行当前练习一次而不监听文件更改,你可以使用 `asmlings run`)。*
## 如何使用
`exercises/` 目录中的每个练习都是一个独立的 `.asm` 文件,演示了标准的 8086 指令(例如 `mov`、`add`、`push`、`pop`、`lodsb`)。
要完成一个练习,你必须做两件事:
1. **满足断言 / 测试用例:** 练习会通过在底层定义的具有多种输入/设置变体的动态、程序化测试套件进行验证。CLI 将输出测试用例中每个断言的结果。
2. **移除标记:** 每个文件都包含一个 `; I AM NOT DONE` 注释。即使你的代码编译通过并满足所有断言和测试用例,Asmlings 也不会进入下一个练习,直到你手动删除此行。这确保你是经过深思熟虑地完成练习并理解了解决方案。标签:可视化界面, 通知系统