use c-like struct for JumpWithOffset instruction

This commit is contained in:
Denis-Cosmin Nutiu 2024-12-11 00:05:35 +02:00
parent 517628ced6
commit 2842c55cf8
2 changed files with 6 additions and 4 deletions

View file

@ -335,7 +335,7 @@ where
self.registers[0xF] = self.registers[vx as usize] & 0x1;
self.registers[vx as usize] >>= 1;
}
ProcessorInstruction::JumpWithOffset(address) => {
ProcessorInstruction::JumpWithOffset { address } => {
let offset = self.registers[0x0];
trace!("Jump With offset Address={address:04x} Offset={offset:04x}");

View file

@ -51,7 +51,7 @@ pub enum ProcessorInstruction {
/// This instruction has different behaviour on CHIP-48 and SUPER-CHIP.
ShiftLeft { vx: u8, vy: u8 },
/// Jumps to the address and adds V0 offset.
JumpWithOffset(u16),
JumpWithOffset { address: u16 },
/// Generates a random number ANDed with the data and stores it in VX.
GenerateRandomNumber(u8, u8),
/// Skips the next instruction if VX is equal to data.
@ -198,7 +198,9 @@ impl Instruction {
vx: Self::grab_first_nibble(data),
vy: Self::grab_middle_nibble(data),
},
(0xB, _, _, _) => ProcessorInstruction::JumpWithOffset(Self::grab_inner_data(data)),
(0xB, _, _, _) => ProcessorInstruction::JumpWithOffset {
address: Self::grab_inner_data(data),
},
(0xC, _, _, _) => ProcessorInstruction::GenerateRandomNumber(
Self::grab_first_nibble(data),
Self::grab_last_byte(data),
@ -513,7 +515,7 @@ mod tests {
let instruction = Instruction::new([0xBA, 0xBC]);
assert_eq!(
instruction.processor_instruction,
ProcessorInstruction::JumpWithOffset(0xABC)
ProcessorInstruction::JumpWithOffset { address: 0xABC }
)
}