Expand description
mlem-asm is an assembler library for MLeM, the Machine Learning Machine. This is a Harvard architecture machine with immutable programs, 8 general purpouse registers, and a hardware-supported stack with stack and base pointers.
§Assembly Language
mlem-asm assembles the mlasm language into CBOR-encoded data that can be read and executed by MLeM. The mlasm language looks like so:
; Anything following a semicolon is a comment.
; Lines can be terminated with a semicolon, or not. The following two lines are equivalent:
noop
noop;
; Instructions that require arguments look like so:
move R:R0 R:R1 ; Set R1 equal to R0
§Examples
Here is an example of parsing a program and converting it into CBOR.
use mlem_asm::*;
use std::io::Cursor;
let valid_program = "
noop
move R:R0 R:SP;
input R:R0;
; comment only
";
let mut buffer = Cursor::new(Vec::<u8>::new());
let program = parse_program(valid_program).unwrap();
program_to_writer(&program, &mut buffer).unwrap();
assert_eq!(buffer.get_ref(),
&[217, 217, 247, 131, 0, 131, 2, 130,
0, 0, 130, 0, 8, 130, 4, 130, 0, 0])
Re-exports§
pub use parse::parse_program;
Modules§
Enums§
- Address
- Represents a place a value can come from: a register, a memory address, a pointer to memory stored in a register, or a literal value.
- Instruction
- Possible instructions for the machine to execute. For each instruction, the first operand is a, second is b, et cetera
- Register
- Specifies a register in the machine.
Functions§
- program_
to_ writer - Writes an assembled program to a writer in packed, self-describing CBOR (a format MLeM can natively consume.)
Type Aliases§
- Program
- Represents a program; a list of instructions, to be executed in order.