#assembly #simulator #object-file #lc3 #parser #ast-parser #isa

lc3-ensemble

LC-3 解析器、汇编器和模拟器,旨在用于乔治亚理工学院的 CS 2110 课程

9 个版本 (5 个重大变更)

0.6.0 2024 年 8 月 13 日
0.5.0 2024 年 6 月 29 日
0.4.2 2024 年 5 月 15 日
0.3.0 2024 年 5 月 3 日
0.1.0 2024 年 4 月 6 日

#72模拟

Download history 309/week @ 2024-05-05 119/week @ 2024-05-12 19/week @ 2024-05-19 1/week @ 2024-06-09 87/week @ 2024-06-23 145/week @ 2024-06-30 130/week @ 2024-08-11 36/week @ 2024-08-18

每月 166 次下载

MIT 许可证

265KB
4K SLoC

Rust 3.5K SLoC // 0.0% comments Assembly 623 SLoC // 0.0% comments

ensemble (LC-3 解析器、汇编器和模拟器)

欢迎!

这是一个用 Rust 编写的 LC-3 ISA 解析器、汇编器和模拟器库!

它还内置了一个基本的 CLI,具有汇编和模拟的能力。


lib.rs:

LC-3 解析器、汇编器和模拟器。

这是一个旨在用于 LC-3 汇编的通用套件(作为乔治亚理工学院 CS 2110 LC3Tools 后端)。

使用方法

要将 LC-3 源代码转换为对象文件,必须进行解析和汇编

use lc3_ensemble::parse::parse_ast;
use lc3_ensemble::asm::{assemble, assemble_debug, ObjectFile};

let code = "
    .orig x3000
    AND R0, R0, #0
    AND R0, R0, #7
    HALT
    .end
";
let ast = parse_ast(code).unwrap();

// Assemble AST into object file:
let obj_file: ObjectFile = assemble(ast).unwrap();
// OR:
let obj_file: ObjectFile = assemble_debug(ast, code).unwrap();

创建对象文件后,可以用模拟器执行

use lc3_ensemble::sim::Simulator;

let mut simulator = Simulator::new(Default::default());
simulator.load_obj_file(&obj_file);
simulator.run().unwrap(); // <-- Result can be handled accordingly

如果需要更细粒度的模拟,还有步进和步退函数。有关更多详细信息,请参阅 [sim] 模块。

依赖项

~2MB
~11K SLoC