init
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/target
|
7
Cargo.lock
generated
Normal file
7
Cargo.lock
generated
Normal file
@ -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"
|
6
Cargo.toml
Normal file
6
Cargo.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "lc3-rs"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
47
src/main.rs
Normal file
47
src/main.rs
Normal file
@ -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];
|
||||||
|
|
||||||
|
}
|
Reference in New Issue
Block a user