Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 

MLeM

Crates.io version badge Docs.rs version badge

The Machine Learning Machine is a 64-bit virtual Harvard-arch machine for evolutionary algorithms to program against.

The machine has eight GPRs (R0 through R7), a hardware stack with SP and BP, and hardware I/O with Input and Output.

These I/O instructions write out whole u64s in big endian using byteorder.

Features

The serialize feature imports serde and derives Serialize and Deserialize on all types. It is enabled by default.

Example

This example shows a simple program being executed by the MLeM managed execution routine.

use mlem::{execute, Instruction, Address, Register, Outcome};
let input = vec![2, 2, 2, 2];
let expected = vec![4, 0];
let program = vec![
    // Get all input values
    Instruction::Input(Address::RegAbs(Register::R0)),
    Instruction::Input(Address::RegAbs(Register::R1)),
    Instruction::Input(Address::RegAbs(Register::R2)),
    Instruction::Input(Address::RegAbs(Register::R3)),
    // Perform arithmetic
    Instruction::Add(Address::RegAbs(Register::R0), Address::RegAbs(Register::R1)),
    Instruction::Sub(Address::RegAbs(Register::R2), Address::RegAbs(Register::R3)),
    // Output computed values
    Instruction::Output(Address::RegAbs(Register::R0)),
    Instruction::Output(Address::RegAbs(Register::R2)),
    // Halt
    Instruction::Halt
];
//!
let (outcome, _, output) = execute(program, input);
assert!(outcome == Outcome::Halt, "Program did not successfully halt! {:?}", outcome);
assert!(output == expected, "Program did not produce {:?} as expected, but rather {:?}.", expected, output);

About

Machine Learning Machine - a VM for machine learning

Topics

Resources

Releases

No releases published

Packages

No packages published

Languages