Make sure unsupported/illegal instructions are caught
This commit is contained in:
@@ -47,6 +47,8 @@ impl Core {
|
||||
}
|
||||
};
|
||||
|
||||
assert_eq!(instr & 3, 3, "Compressed instructions not supported");
|
||||
|
||||
let instr = Instruction(instr);
|
||||
|
||||
let runner = find_runner(instr);
|
||||
@@ -65,6 +67,9 @@ impl Core {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
eprintln!("Invalid Instruction");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ impl Instruction {
|
||||
|
||||
/// Returns the opcode of the instruction, with the last 2 bits stripped away, as they are always 0b11 in a non-compressed instruction
|
||||
pub fn opcode_noncompressed(&self) -> u8 {
|
||||
debug_assert_eq!(self.0 & 0b11, 0b11);
|
||||
debug_assert_eq!(self.0 & 0b11, 0b11, "Compressed (or invalid) opcode");
|
||||
(self.0 >> 2 & 0x1f) as u8
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user