These changes fix logical consistency and correctness issues with the instruction definitions as printed in the manual. The most serious issues were: - div0u/div0s/div1 use `m` as a temporary variable which contradicts the existence of the `m` register number - missing semicolons - inconsistent references to immediate and displacement variable names
9 lines
230 B
Plaintext
9 lines
230 B
Plaintext
1101nnnndddddddd
|
|
pc ← SignExtend32(PC);
|
|
disp ← ZeroExtend8(d) << 2;
|
|
IF (IsDelaySlot())
|
|
THROW ILLSLOT;
|
|
address ← ZeroExtend32(disp + ((pc + 4) ∧ (~ 0x3)));
|
|
op2 ← SignExtend32(ReadMemory32(address));
|
|
Rn ← Register(op2);
|