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
15 lines
355 B
Plaintext
15 lines
355 B
Plaintext
0000nnnn11000011
|
|
r0 ← SignExtend32(R0);
|
|
op1 ← SignExtend32(Rn);
|
|
IF (AddressUnavailable(op1))
|
|
THROW WADDERR, op1;
|
|
IF (MMU() AND DataAccessMiss(op1))
|
|
THROW WTLBMISS, op1;
|
|
IF (MMU() AND WriteProhibited(op1))
|
|
THROW WRITEPROT, op1;
|
|
IF (MMU() AND NOT DirtyBit(op1))
|
|
THROW FIRSTWRITE, op1;
|
|
ALLOCO(op1);
|
|
address ← ZeroExtend32(op1);
|
|
WriteMemory32(op1, r0);
|