diff options
Diffstat (limited to 'src/devices/math.rs')
-rw-r--r-- | src/devices/math.rs | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/src/devices/math.rs b/src/devices/math.rs index c8d2194..cefb572 100644 --- a/src/devices/math.rs +++ b/src/devices/math.rs @@ -1,10 +1,6 @@ pub struct MathDevice { pub operand_1: u16, pub operand_2: u16, - pub product_high: u16, - pub product_low: u16, - pub quotient: u16, - pub remainder: u16, } impl MathDevice { @@ -12,24 +8,24 @@ impl MathDevice { Self { operand_1: 0x0000, operand_2: 0x0000, - product_high: 0x0000, - product_low: 0x0000, - quotient: 0x0000, - remainder: 0x0000, } } - pub fn multiply(&mut self) { - let (low, high) = self.operand_1.widening_mul(self.operand_2); - self.product_high = high; - self.product_low = low; + pub fn multiply_high(&mut self) -> u16 { + let (_, high) = self.operand_1.widening_mul(self.operand_2); + return high; } - pub fn divide(&mut self) { - self.quotient = self.operand_1.checked_div(self.operand_2).unwrap_or(0); + pub fn multiply_low(&mut self) -> u16 { + let (low, _) = self.operand_1.widening_mul(self.operand_2); + return low; } - pub fn modulo(&mut self) { - self.remainder = self.operand_1.checked_rem(self.operand_2).unwrap_or(0); + pub fn divide(&mut self) -> u16 { + self.operand_1.checked_div(self.operand_2).unwrap_or(0) + } + + pub fn modulo(&mut self) -> u16 { + self.operand_1.checked_rem(self.operand_2).unwrap_or(0) } } |