Crate lc3_ensemble

Source
Expand description

A LC-3 parser, assembler, and simulator.

This is meant to be a general suite to use LC-3 assembly (meant as a backend for Georgia Tech’s CS 2110 LC3Tools).

§Usage

To convert LC-3 source code to an object file, it must be parsed and assembled:

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();

Once an object file has been created, it can be executed with the simulator:

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

If more granularity is needed for simulation, there are also step-in and step-out functions. See the sim module for more details.

Modules§

asm
Assembling assembly source ASTs into object files.
ast
Components relating to the abstract syntax trees (ASTs) used in representing assembly instructions.
err
Error interface for this crate.
parse
Parsing assembly source code into an AST.
sim
Simulating and execution for LC-3 assembly.