commit e21c64cc08ce94a1db7d95d59cd5ae15986f0091 Author: vik <> Date: Mon Dec 30 16:49:29 2024 -0600 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..5800d08 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "lc3-rs" +version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..f76aa9d --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "lc3-rs" +version = "0.1.0" +edition = "2021" + +[dependencies] diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..0489ac7 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,47 @@ +#[allow(dead_code)] +enum Registers { + R0 = 0, + R1, + R2, + R3, + R4, + R5, + R6, + R7, + PC, + COND, + COUNT +} + +#[allow(dead_code)] +enum Opcodes { + // https://www.cs.utexas.edu/~fussell/courses/cs310h/lectures/Lecture_10-310h.pdf + ADD = 0, // add + AND, // and + NOT, // not (bitwise) + LD, // load (pc relative) + LDI, // load indirect + LDR, // load base + offset + LEA, // load immediate + ST, // store pc relative + STR, // store base + offset + STI, // store indirect + BR, // branch + JSR, // jump register + JMP, // jump + RTI, // return from interrupt (unused) + TRAP, // trap +} + +#[allow(dead_code)] +enum ConditionFlags { + POS = 1 << 0, + ZERO = 1 << 1, + NEG = 1 << 2, +} + +fn main() { + let _memory:[u16; 1 << 16]; + let _registers:[u16; Registers::COUNT as usize]; + +}