Fixed a few old bugs
- Fixed a where the VM excuted one loop regardless of instructions. - Use the full 32 bits if an instruction is less.
This commit is contained in:
parent
b825931ce5
commit
13069b7ebd
2 changed files with 8 additions and 4 deletions
|
@ -35,6 +35,10 @@ impl AssemblerInstruction {
|
|||
}
|
||||
}
|
||||
|
||||
while results.len() < 4 {
|
||||
results.push(0);
|
||||
}
|
||||
|
||||
results
|
||||
}
|
||||
|
||||
|
|
|
@ -74,7 +74,7 @@ impl VM {
|
|||
/// various public functions.
|
||||
fn execute_instruction(&mut self) -> bool {
|
||||
if self.pc >= self.program.len() {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
match self.decode_opcode() {
|
||||
Opcode::LOAD => {
|
||||
|
@ -84,11 +84,11 @@ impl VM {
|
|||
}
|
||||
Opcode::HLT => {
|
||||
println!("HLT encountered");
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
Opcode::IGL => {
|
||||
println!("Unrecognized opcode found! Terminating!");
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
Opcode::ADD => {
|
||||
let reg1 = self.registers[self.next_8_bits() as usize];
|
||||
|
@ -214,7 +214,7 @@ impl VM {
|
|||
self.heap.resize(new_end as usize, 0);
|
||||
}
|
||||
}
|
||||
true
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue