|
|
|
@ -223,27 +223,21 @@ void MacroInterpreter::ProcessResult(ResultOperation operation, u32 reg, u32 res
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
u32 MacroInterpreter::FetchParameter() {
|
|
|
|
|
ASSERT(next_parameter_index < parameters.size());
|
|
|
|
|
return parameters[next_parameter_index++];
|
|
|
|
|
return parameters.at(next_parameter_index++);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
u32 MacroInterpreter::GetRegister(u32 register_id) const {
|
|
|
|
|
// Register 0 is supposed to always return 0.
|
|
|
|
|
if (register_id == 0)
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
ASSERT(register_id < registers.size());
|
|
|
|
|
return registers[register_id];
|
|
|
|
|
return registers.at(register_id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MacroInterpreter::SetRegister(u32 register_id, u32 value) {
|
|
|
|
|
// Register 0 is supposed to always return 0. NOP is implemented as a store to the zero
|
|
|
|
|
// register.
|
|
|
|
|
if (register_id == 0)
|
|
|
|
|
// Register 0 is hardwired as the zero register.
|
|
|
|
|
// Ensure no writes to it actually occur.
|
|
|
|
|
if (register_id == 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ASSERT(register_id < registers.size());
|
|
|
|
|
registers[register_id] = value;
|
|
|
|
|
registers.at(register_id) = value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MacroInterpreter::SetMethodAddress(u32 address) {
|
|
|
|
|