sh-dis/sh4/SHAD Rm,Rn

14 lines
282 B
Plaintext

0100nnnnmmmm1100
op1 ← SignExtend32(Rm);
op2 ← SignExtend32(Rn);
shift_amount ← ZeroExtend5(op1);
IF (op1 ≥ 0)
op2 ← op2 << shift_amount;
ELSE IF (shift_amount ≠ 0)
op2 ← op2 >> (32 - shift_amount);
ELSE IF (op2 < 0)
op2 ← - 1;
ELSE
op2 ← 0;
Rn ← Register(op2);