diff --git a/src/main.rs b/src/main.rs index 7c10ac2..6b57935 100644 --- a/src/main.rs +++ b/src/main.rs @@ -100,11 +100,14 @@ fn process( fn main() -> io::Result<()> { let file = File::open("code.asm")?; let reader = BufReader::new(file); + let mut accumulator: i64 = 0; let mut memory: HashMap = HashMap::new(); let mut labels: HashMap = HashMap::new(); let mut code: Vec = Vec::new(); + let valid: [&str; 3] = ["BRA", "BRZ", "BRP"]; + for (index, line) in reader.lines().enumerate() { let line = line?; if line.trim().is_empty() { @@ -113,8 +116,8 @@ fn main() -> io::Result<()> { let ops: Vec = line.split_whitespace().map(String::from).collect(); if ops.len() > 1 && ops[1] == "DAT" { labels.insert(ops[0].clone(), ops[2].clone().parse::().unwrap()); - } else if ops.len() > 1 { - labels.insert(ops[1].clone(), index); + } else if ops.len() > 1 && !valid.contains(&&*ops[0].clone()) { + labels.insert(ops[0].clone(), index); } code.push(line); }