Implemented correct behavior for lsl, asr, lsr (mask and correct for input = 32)
This commit is contained in:
@@ -449,15 +449,15 @@ impl Computer {
|
|||||||
self.pc += 1;
|
self.pc += 1;
|
||||||
}
|
}
|
||||||
Instruction::Lsl(reg, reg1, op2) => {
|
Instruction::Lsl(reg, reg1, op2) => {
|
||||||
self[reg] = self[reg1] << self.resolve(op2);
|
self[reg] = (self[reg1] as u64).wrapping_shl(self.resolve(op2)) as u32;
|
||||||
self.pc += 1;
|
self.pc += 1;
|
||||||
}
|
}
|
||||||
Instruction::Lsr(reg, reg1, op2) => {
|
Instruction::Lsr(reg, reg1, op2) => {
|
||||||
self[reg] = self[reg1] >> self.resolve(op2);
|
self[reg] = (self[reg1] as u64).wrapping_shr(self.resolve(op2)) as u32;
|
||||||
self.pc += 1;
|
self.pc += 1;
|
||||||
}
|
}
|
||||||
Instruction::Asr(reg, reg1, op2) => {
|
Instruction::Asr(reg, reg1, op2) => {
|
||||||
self[reg] = (self[reg1] as i32 >> self.resolve(op2)) as u32;
|
self[reg] = (self[reg1] as i64).wrapping_shr(self.resolve(op2)) as u32;
|
||||||
self.pc += 1;
|
self.pc += 1;
|
||||||
}
|
}
|
||||||
Instruction::Umull(reg, reg1, op2) => {
|
Instruction::Umull(reg, reg1, op2) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user