c-like struct for SetIndexRegister instruction

This commit is contained in:
Denis-Cosmin Nutiu 2024-12-10 19:02:31 +02:00
parent 7f07d3b184
commit a464c00836
2 changed files with 6 additions and 4 deletions

View file

@ -217,7 +217,7 @@ where
let (result, _) = self.registers[register as usize].overflowing_add(value); let (result, _) = self.registers[register as usize].overflowing_add(value);
self.registers[register as usize] = result; self.registers[register as usize] = result;
} }
ProcessorInstruction::SetIndexRegister(data) => { ProcessorInstruction::SetIndexRegister { data } => {
trace!("Set index register to data {:04x}", data); trace!("Set index register to data {:04x}", data);
self.index_register = data; self.index_register = data;
} }

View file

@ -23,7 +23,7 @@ pub enum ProcessorInstruction {
/// Adds the value to the register /// Adds the value to the register
AddValueToRegister { register: u8, value: u8 }, AddValueToRegister { register: u8, value: u8 },
/// Sets the index register /// Sets the index register
SetIndexRegister(u16), SetIndexRegister { data: u16 },
/// Draws to the screen. /// Draws to the screen.
Draw(u8, u8, u8), Draw(u8, u8, u8),
/// Call sets PC to the address and saves the return address on the stack /// Call sets PC to the address and saves the return address on the stack
@ -146,7 +146,9 @@ impl Instruction {
} }
} }
// Set index register // Set index register
(0xA, _, _, _) => ProcessorInstruction::SetIndexRegister(Self::grab_inner_data(data)), (0xA, _, _, _) => ProcessorInstruction::SetIndexRegister {
data: Self::grab_inner_data(data),
},
// Draw on screen // Draw on screen
(0xD, _, _, _) => { (0xD, _, _, _) => {
// DXYN // DXYN
@ -500,7 +502,7 @@ mod tests {
let instruction = Instruction::new([0xAA, 0xBC]); let instruction = Instruction::new([0xAA, 0xBC]);
assert_eq!( assert_eq!(
instruction.processor_instruction, instruction.processor_instruction,
ProcessorInstruction::SetIndexRegister(0xABC) ProcessorInstruction::SetIndexRegister { data: 0xABC }
) )
} }