These changes fix logical consistency and correctness issues with the instruction definitions as printed in the SH4 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
17 lines
353 B
Plaintext
17 lines
353 B
Plaintext
10001001dddddddd
|
|
t ← ZeroExtend1(T);
|
|
pc ← SignExtend32(PC);
|
|
newpc ← SignExtend32(PC’);
|
|
delayedpc ← SignExtend32(PC’’);
|
|
label ← SignExtend8(d) << 1;
|
|
IF (IsDelaySlot())
|
|
THROW ILLSLOT;
|
|
IF (t = 1)
|
|
{
|
|
temp ← ZeroExtend32(pc + 4 + label);
|
|
newpc ← temp;
|
|
delayedpc ← temp + 2;
|
|
}
|
|
PC’ ← Register(newpc);
|
|
PC’’ ← Register(delayedpc);
|