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§

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