mirror of
https://github.com/FranLMSP/rultra64.git
synced 2026-01-01 07:51:34 -05:00
ADD instruction test
This commit is contained in:
33
src/cpu.rs
33
src/cpu.rs
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user