SHLL

論理/算術左シフト

SHLL

SHift Logical and arithmetic Left


【構文】

(1)SHLL src, dest

(2)SHLL src, src2, dest

 

【オペレーション】

(1)dest = dest << ( src & 31 );

(2)dest = src2 << ( src & 31 );

 

【機能】

-

destをsrcで指定されたビット数分、論理左シフトし、その結果をdestに格納します。

-

MSBから溢れたビットはCフラグに転送します。

-

srcがレジスタのとき、LSB側5ビットのみ有効です。

-

srcの値は符号なし整数です。srcの範囲は、0≦src≦31です。

-

src2をdestに転送後、destをsrcで指定されたビット数分、論理左シフトし、その結果をdestに格納します。

-

MSBから溢れたビットはCフラグに転送します。

-

srcの値は符号なし整数です。srcの範囲は、0≦src≦31です。

 

【命令フォーマット】

構文

処理

サイズ

src

src2

dest

コードサイズ

(バイト)

(1)SHLL src, dest

L

#IMM:5

Rd

2

L

Rs

Rd

3

(1)SHLL src, src2, dest

L

#IMM:5

Rs

Rd

3

 

【フラグ変化】

フラグ

C

Z

S

O

変化

条件

C:シフトアウトしたビットが“1”のとき“1”、それ以外のとき“0”になります。ただし、srcが0のときは“0”になります。

Z:演算後のdestが0のとき“1”、それ以外のとき“0”になります。

S:演算後のdestのMSBが“1”のとき“1”、それ以外のとき“0”になります。

O:演算結果のMSBとシフトアウトしたビットがすべて同じ値のとき(シフト中に符号が変化しなかったとき)“0”、それ以外のとき“1”になります。ただし、srcが0のときは“0”になります。

 

【記述例】

SHLL    #3, R2
SHLL    R1, R2
SHLL    #3, R1, R2