ADD instruction test

This commit is contained in:
2022-01-04 13:32:04 -05:00
parent 011ed5cb97
commit d5fa52f001
2 changed files with 34 additions and 1 deletions

View File

@@ -3,3 +3,36 @@ use crate::registers::{CPURegisters};
pub struct CPU {
registers: CPURegisters,
}
impl CPU {
pub fn new() -> Self {
Self {
registers: CPURegisters::new(),
}
}
pub fn add(&mut self, destination: usize, reg_s: usize, reg_t: usize) {
let s = self.registers.get_by_number(reg_s);
let t = self.registers.get_by_number(reg_t);
let result = s.wrapping_add(t);
self.registers.set_by_number(destination, result);
}
}
#[cfg(test)]
mod cpu_instructions_tests {
use super::*;
#[test]
fn test_add() {
let mut cpu = CPU::new();
let reg_dest = 10;
let reg_s = 15;
let reg_t = 20;
cpu.registers.set_by_number(reg_s, 80);
cpu.registers.set_by_number(reg_t, 80);
cpu.add(reg_dest, reg_s, reg_t);
assert_eq!(cpu.registers.get_by_number(reg_dest), 160);
}
}

View File

@@ -65,7 +65,7 @@ impl CPURegisters {
Box::new(Generic(0_i64)),
Box::new(Generic(0_i64)),
],
program_counter: Generic(0_i64),
program_counter: Generic(0xBFC00000),
}
}